Ми вже знаємо, що за допомогою програм mat і mat2 можна переглядати та видаляти метадані файлів (підтримується безліч типів файлів). Але що якщо замість видалення потрібно змінити метадані у фотографії чи документі? Ці програми не допоможуть у цій задачі. Для цієї задачі є інші інструменти, які можуть змінювати GPS координати, дату та час зйомки, інформацію про камеру та будь-яку іншу метаінформацію, яку тільки може містити файл. Також вони можуть вибірково видаляти ті чи інші теги. Наприклад, можна видалити GPS координати, але залишити інформацію про камеру. А можна навпаки додати коментарі до метаінформації, наприклад, з описом події та інших зауважень про зроблений знімок.
У цій інструкції ми розберемося з різними способами запису координат — щоб щось записати або відредагувати, потрібно в цьому розбиратися. Також ми навчимося копіювати значення координат із фотографії до карти, щоб можна було переглянути місце зйомки без завантаження зображення на сторонні сервіси. Ще ми дізнаємося, як зберігати метадані у файл, щоб ці метадані можна було записати в іншу фотографію і як копіювати метадані між фотографіями. Ну і бонусом ми навчимося виводити тільки ті метадані, які нам потрібні та змінювати формат їхнього виведення.
ExifTool
Exiv2
Geotag
Вони всі працюють і на Linux і на Windows – за посиланнями для кожної є докладні інструкції з установки. У програми Geotag ще й графічний інтерфейс! Тобто спуфінг (підміна) GPS на фотографіях зводиться до редагування цифр у таблиці.
У роботі з редагуванням географічних координат, Geotag використовує саме ExifTool, тому якщо ви використовуєте Geotag на Windows вам потрібно також встановити і ExifTool і вказати шлях до файлу (в інструкціях з посиланням вище все вже є). До речі, mat2 для показу та видалення метаінформації також використовує ExifTool. А Exiv2 використовує, наприклад, редактор фотографій GIMP для показу та редагування метаінформації. Також міняти метадані вміє програма jhead, але її можливості дуже обмежені – наприклад, вона не може змінювати GPS координати у фотографії.
Географічні координати це широта та довгота. Широта визначає розташування “вгору-вниз” на глобусі/карті. Нулем вважається екватор. Довгота визначає розташування «вправо-вліво» на глобусі/карті. Нулем вважається Грінвіч. Про самі числа і як «на око» прикидати в якій частині планети розташовані координати, ми поговоримо нижче, а поки що про те, як їх записують, форматів координат багато.
Координати (широта від -90 ° до +90 °, довгота від -180 ° до +180 °) можуть записуватися:
у ° градусах у вигляді десяткового дробу (сучасний варіант)
у ° градусах і ′ хвилинах із десятковим дробом
у ° градусах, ′ хвилинах та ″ секундах з десятковим дробом (історично склалася форма запису)
“S” або “пд. ш.» – Південна широта
“W” або “з. д.» – Західна довгота
Розділювачем десяткового дробу може бути точка або кома. Позитивні знаки координат представляються (переважно опускаемым) знаком «+» чи літерами:
“N” або “пн. ш.» – Північна широтa
“E” або “сх. д.» – Східна довгота
На картах пошукових систем за промовчанням показуються координати в градусах з десятковим дробом зі знаком «-» для негативної довготи. На картах Google та картах Яндекс спочатку широта, потім довгота. Ці координати видно, наприклад, під час прокладання маршрутів від довільних точок. Під час пошуку розпізнаються й інші формати. Нам необов’язково у всьому цьому детально розумітися. З практичної точки зору нам треба запам’ятати: шукати на сервісах карток (наприклад, Google Карти) можна координати у форматі «2 числа з десятковим дробом; роздільником десяткового дробу є точка».
Наприклад, у вікно пошуку по карті замість географічної назви можна ввести два десяткові числа, припустимо: 12.459444 99.978611. І Карти покажуть вам місце на планеті, що знаходиться за відповідними координатами.
Але ось у метаданих координати зберігаються у вигляді трьох чисел – тому програми, що показують метадані файлів, за замовчуванням також показують їх у вигляді трьох чисел (градуси, хвилини та секунди).
В принципі координати легко конвертуються в десяткові числа, але цю роботу можна не робити, про це нижче. Ще можна додати, що, наприклад, Google Карти приймають такі формати:
Градуси, хвилини та секунди: 41°24’12.2″N 2°10’26.5″E
Градуси та десяткові хвилини: 41 24.2028, 2 10.4418
Десяткові градуси: 41.40338, 2.17403
Але найзручніше використовувати саме десятковий формат.
Якщо з фотографії отримати координати у вигляді десяткових чисел, можна знайти їх розташування на сервісах карт навіть не завантажуючи саме зображення, а просто виконавши пошук по координатах. Я знайшов дві програми, які вміють показувати координати у десятковому вигляді. Перша програма, в якій за допомогою опцій та вказівки імен тегів можна вивести саме те, що потрібно.
За допомогою опції “-lang ru” можна вивести назву тегів метаінформації російською мовою:
exiftool -lang ru 20190930_095515.jpg
Якщо додати опцію ‘-*GPS*’ (лапки обов’язкові!), то будуть показані лише теги метаінформації, в назві яких є рядок «GPS»:
exiftool -lang ru ‘-*GPS*’ 20190930_095515.jpg
Якщо потрібна лише широта і довгота, то назва тегів така «-GPSLatitude -GPSLongitude»:
exiftool -lang ru -GPSLatitude -GPSLongitude 20190930_095515.jpg
Якщо вказати опцію -n, то координати будуть виведені у десятковому вигляді:
exiftool -lang ru -GPSLatitude -GPSLongitude -n20190930_095515.jpg
Щоб показувалося лише шість цифр після точки, а також щоб для позначення півкуль не використовувалися букви, а використовувався знак мінус, потрібно вказати опцію -c ‘%+.6f’:
exiftool -lang ru -GPSLatitude -GPSLongitude -c ‘%+.6f’ 20190930_095515.jpg
Дргуа програма, це Geotag – додавання метаданих географічної ідентифікації до різних носіїв, таких як фотографія чи відео з геотегами, веб-сайти, SMS-повідомлення, QR-коди або канали RSS, і є формою геопросторових метаданих. Але треба пам’ятати деякі важливі речі. З опцією -n не будуть використовуватися літери для вказівки півкуль, а якщо це потрібно, будуть виведені негативні числа.
Опція -c дозволяє встановити формат координат, що виводяться. Наприклад, якщо вам занадто багато (або занадто мало) цифр після десяткової точки, їх кількість можна змінити цією опцією. Також, за допомогою опції -c можна налаштувати не лише десятковий формат, а й будь-який інший – можна зробити абсолютно будь-яку форму виведення координат.
Якщо нічого, то зараз ми навчимося «на око» визначати зразкове розташування по координатах навіть без карти — хоча б у яких півкулях знаходиться координата і як далеко вона від екватора, Грінвіча та полюсів. Широта визначає розташування «вгору-вниз» на глобусі/карті: 0 ° – екватор, 90 ° – північний полюс (верх глобуса), -90 ° – південний полюс (низ глобуса). Довгота визначає розташування “вправо-вліво” на глобусі/карті: 0 – Грінвіч (Лондон/Великобританія), від 0 ° до +180 ° на схід (вправо) і від 0 ° до -180 ° на захід (вліво). Зверніть увагу, що діапазон широти дорівнює 180 градусів (половина кола), а діапазон довготи 360 градусів (повне коло). Діапазон довготи дозволяє “переміщатися” по всьому колу земної кулі (по всьому екватору). А діапазон широти дозволяє переміщатися тільки по видимій половині — якщо потрібно було б переміститися за північний/південний полюс, то для цього потрібно змінити довготу, тобто переїхати в іншу частину екватора. Тому вистачає 180 ° широти, але необхідно 360 ° довготи. Відповідно до міжнародної угоди, меридіану, який проходить через Грінвічську обсерваторію (Лондон, Великобританія) було присвоєно значення 0° довготи, інакше кажучи, його було обрано як точку відліку довготи на земній кулі. Довгота інших місць вимірюється як кут на схід чи захід від нульового меридіана, в діапазоні від 0° до +180° на схід та від 0° до −180° на захід”.
Широта 12 (позитивне число) означає вище лінії екватора, але не набагато, десь на 1/7 від висоти від екватора до північного полюса (90/12.46=7,22). Довгота 99 означає значне віддалення від лінії Грінвіча у бік сходу — приблизно чверть повороту земної кулі Схід (180/99.97=0,55). (0,55 – це приблизно половина від східної півкулі, яка становить ½ від усієї землі). Якби перша цифра (широта) була негативною, то координата була б трохи нижче лінії екватора. А якби друга цифра була б негативною (довгота), то зміщення було б таким самим великим, але вже у бік заходу (від Грінвіча/Лондона).
Якщо ви не хочете завантажувати фотографію на будь-який сайт або сервіс, то це цілком зрозуміле бажання. Перший спосіб вже показаний вище – вийміть із зображення координати, перейдіть на Google Maps і введіть їх, в одному з наступних форматів (розрізняються пробілами і комами, що розділяють числа):
+12.459444 +99.978611
+12.459444, +99.978611
+12.459444,+99.978611
Знак + (плюс) писати необов’язково, але знак мінус (якщо є) писати обов’язково. Якщо раптом координата не має десяткових цифр, то додайте до неї «.0», інакше сервіс не зрозуміє, що це координати — обидва числа мають бути з точкою та цифрою після неї. Другий спосіб – використовувати Geotag. Ця програма в один клік запускає свій локальний веб-сервер, на якому розміщена веб-сторінка з картою, відкриває браузер і показує на карті фотографії.
Запускаємо Geotag та додаємо фотографії. Тепер вибираємо фотографії, які ми хочемо побачити на карті (можна вибрати одну або кілька, або всі). Клацаємо правою кнопкою миші за списком зображень та вибираємо.
Відкриється браузер з такою сторінкою. Треба звернути увагу на те, що це не статична картинка, це інтерактивна карта з усіма назвами. Адреса сторінки – localhost, а на карті є меню з можливими діями.
Перш ніж перейти до редагування координат, давайте навчимося їх перетворювати. Як було зазначено вище, координати зберігаються у трьох числах (градуси, хвилини й секунди). Деякі програми приймають нове значення координат у десятковому вигляді, а деякі у тому вигляді, в якому вони зберігаються в метаданих (три раціональних числа). Тому не зайве навчитися конвертувати координати.
ГРАДУС + ХВИЛИНИ/60 + СЕКУНДИ/3600
Градус залишається як є, а хвилини та секунди діляться на 60 та 3600 відповідно. Якщо в рядку є букви S (південь) або W (захід), то перед числом ставиться знак мінус.
Щоб не рахувати вручну (до того ж, при перетворенні в хвилини та секунди потрібно виконати кілька дій), напишемо невеликий скрипт, який це робитиме за нас. Создадим файл geoconverter.php:
І скопіюємо до нього всі дані, які в нас є.
У цьому випадку буде обчислено координату у форматі хвилини та секунди.
У цьому випадку буде обчислено координату у форматі десяткового числа.