Получение трека
Фотокамера у меня недорогая, и GPS в ней, конечно, нет. Зато есть в телефоне. Поэтому треки я записываю приложением Locus Map Free (не Pro) — большую часть его возможностей (даже бесплатной версии) я не использую, но треки пишет хорошо, меня устраивает. И, кстати, весьма скромно использует батарею.
Перед выходом, сразу после проверки заряда во всех устройствах и места на флешке, крайне желательно убедиться, что время на телефоне и в камере — одинаковое. Конечно, при пешем передвижении минутная разница не так существенна, но однажды у меня камера отстала на пять минут, и результаты были для меня несколько внезапны.
Что еще важно для записи трека: дать приложению нужные разрешения для всех режимов — не ходить же с постоянно включенным экраном, на котором оно распахнуто. То есть, доступ к местоположению должен быть «Разрешить в любом режиме», и «Контроль активности» — «Нет ограничений», при рекомендованном «Умном режиме» нормального трека получить не удастся. Что хорошо — Locus Map проверяет эти разрешения и выдает подсказку, если они не установлены, не исключено, что именно отсутствие такой подсказки и не позволило мне подружиться с другими приложениями для записи треков.
Трек пишется в GPX-файл, и это хорошо, поскольку данный формат понимают если не все, то очень многие программы, с которыми нужно взаимодействовать. Я его отправляю прямо из приложения кнопкой шаринга «», из предлагаемых вариантов выбирая KDE Connect — архиполезная вещь, хоть и глючная (впрочем, каким путем передать файл на компьютер — непринципиально).
Подготовка файла трека
Итак, у нас есть GPX-файл со всеми перемещениями. Необязательно полученный именно с телефона, и именно так, как я изложил выше — подойдет любой источник, главное — часы синхронизировать.
Теперь нужно почистить трек: GPS — штука тонкая, и случаются вылеты типа показанного на скриншоте — там аж несколько точек, образующих «треугольную» петлю, явно лажовые. Вообще, существуют программы, ищущие и вычищающие такие точки автоматически (например, GPSBabel), но мне проще глазами посмотреть и руками удалить. Для этой цели хорошо подходит GPXLab. Можно ориентироваться прямо по карте, можно просмотреть список точек справа внизу, обращая внимание на несуразные значения шага и скорости — ну, не мог я передвигаться пешком по лесу со скоростью почти 80 км/ч… Такие точки просто удаляем. Можно еще обратить внимание на слишком резкие перепады высот (верхний правый угол) и вычистить их тоже.
Запись в EXIF
Сохраняем очищенный трек в тот же каталог, где у нас лежат фотографии, и дальше все просто, запись делается одним вызовом ExifTool:
Это командная строка, которую я реально использую. Что с ней не так? Ключ -overwrite_original
перезаписывает RAW-файлы,
не оставляя бэкап. Поскольку я это делаю далеко не первый раз, могу себе позволить, чтобы не возиться с их удалением, но
для первого раза — не рекомендую. Более того, желательно бы все операции проводить не с исходниками, а со связанными с ними
XMP-файлами. Однако для этого понадобится сначала скопировать в них время съемки, а потом вызвать exiftool
с аргументом
вроде ./*.xmp
. Возможно, когда-нибудь я не поленюсь и загоню такую последовательность действий в скрипт…
А что с Darktable? У него же есть модуль загрузки GPX… Есть, но мне пока ни разу не удалось им воспользоваться — судя по всему, он ожидает файл с точками, полностью соответствующими по времени фотографиям, что возможно только при использовании специального GPS-устройства для горячего башмака, которое будет писать точки синхронно. А стоит такое устройство, как пол-камеры… Тогда как ExifTool вычисляет положение, где была сделана фотография по имеющимся точкам трека, что, конечно, добавляет некоторую погрешность, зато позволяет использовать уже имеющийся телефон вместо специального устройства.
Зато Darktable позволяет просто поместить фото на карту, если у вас и трека-то никакого нет. Правда, время от времени я таким образом промахиваюсь метров на 50… Моя ли это неаккуратность, или какой-то баг — не знаю.
Еще одна особенность Darktable, о которой необходимо упомянуть — он не перечитывает метаданные из RAW, уже находящихся в его
базе. Вот за изменением XMP следит и спрашивает, чем руководствоваться — файлом, или базой, а исходники не смотрит. Поэтому,
если вы уже импортировали съемку в Darktable, и только после этого вспомнили, что нужно прописать геотеги, придется удалить
эти кадры из базы (из «коллекции» в терминах Darktable) (при этом XMP с историей изменений прекрасно сохранятся), прописать
геотеги посредством exiftool
и уже после этого импортировать фотографии в Darktable заново. Таков путь.
Итого
Основная цепочка в моем случае выглядит так:
Locus Map → GPXLab → ExifTool → Darktable
Дополнительно можно на этапе подготовки файла задействовать GPSBabel — до или вместо GPXLab, особенно, если у вас GPS-логгер пишет не GPX, а какой-то другой формат — GPSBabel знает их несколько и умеет конвертировать. А уже в Darktable можно разместить фотографии на карте вручную.
Я ничего не написал про корректировку времени, поскольку не пришлось с ней сталкиваться — у меня все работает по умолчанию. Однако, если часы на устройствах рассинхронизированы, или какие-то заморочки с часовыми поясами, или еще какая напасть — ExifTool имеет параметры сдвига времени, можно этим воспользоваться.