Фото-гео-локация
Aug. 28th, 2018 08:43 amВ процессе разборки фотоархивов, затянувшегося на годы, у меня возникла интересная идея. В большинстве фотографий отсутствует привязка геолокации - мои фотоаппараты (кроме панасоника) геотеги ставить не умели. Зато я всегда с собой таскаю андроидный телефон, в котором крутится Google Maps, который постоянно записывает моё местоположение. Так вот, вместо того чтобы судиться с Гуглём, надо просто вытянуть Google Location History и прописать в фотки гео-теги в EXIF'ы согласно временным отметкам.
Разумеется, оказалось что это ни фига не оригинальная идея. Да и реализация в принципе несложная - скачать полную историю перемещений через Google Takeout, скриптом вытянуть из EXIF время фотографии, взять координаты из истории, прописать координаты обратно.
Как всегда, программистский дьявол - он в деталях реализации. Во-первых, история перемещений - здоровая, многомегабайтный JSON обработать - нетривиально. Во-вторых - таймзоны, одна из самых адских тонкостей в прикладном программизме. Где-то в фотках время местное, где-то домашнее, где-то - совсем левое. Так что время всё равно придётся подкручивать руками. В-третьих, в истории не так много опорных точек, так что координаты надо будет как-то интерполировать.
В ранне-студенческом возрасте я бы конечно с радостью засел за разработку. Но в своём перезрелом возрасте - хочется уже просто найти готовый инструмент и побыстрее решить свою задачу. К счастью, обнаружилось что старый добрый exiftool отлично поддерживает импорт GPS-треков в том числе из формата KML.
Получается, следующий workflow должен сделать именно то что надо:
- Экспортируем KML-файл на время путешествия из Google
- Пробуем сделать привязку к одной фотке:
exiftool -geotag=track.kml -geosync=-4:00:00 ./photos/DSCN0001.jpg - Проверяем - угадал ли
geosync, если нет - то обратно на шаг #2 - Прогоняем привязку всех фоток:
exiftool -geotag=track.kml -geosync=./photos/DSCN0001.jpg ./photos/*
Мне кажется, должно сработать...