Проблема с exiftool и geosync, возможно связанная с переходом на летнее время
Я хотел пометить все мои отпускные фотографии с exiftool
следующее:
exiftool -geotag "*.gpx" \
-geosync "19:25:42Z@IMG_7882.jpg" \
-geosync "09:16:34Z@IMG_9798.jpg" \
-ext .jpg .
где IMG_7802.jpg - это фотография моих компьютерных часов, отображающая 20:25:42 MEZ на 01 марта 2018 года (=19:25:42 Зулу), и аналогично IMG_9798.jpg - это фотография моих компьютерных часов, отображающая 11:16:34 MESZ 31 марта 2018 года (=09:16:34 Зулу). Я использовал два таких (брекетинга) эталонных изображения, чтобы учесть дрейф (и, действительно, часы камеры набрали 26 секунд за этот месяц).
Корректировка прошла нормально для эталонных изображений:
$ exiftool -datetimeoriginal -gpsdatetime IMG_7882.jpg
Date/Time Original : 2018:03:01 20:25:42
GPS Date/Time : 2018:03:01 19:25:42Z
$ exiftool -datetimeoriginal -gpsdatetime IMG_9798.jpg
Date/Time Original : 2018:03:31 10:17:00
GPS Date/Time : 2018:03:31 09:16:34Z
Но для промежуточных изображений вычисленное время GPS значительно отключено, например, примерно на полчаса в следующем примере (время GPS приблизительно 14:32Z - это то, что я ожидал)
$ exiftool -datetimeoriginal -gpsdatetime IMG_8888.jpg
Date/Time Original : 2018:03:17 15:32:22
GPS Date/Time : 2018:03:17 15:04:13.45312997Z
Соответственно, рассчитанные долготы и широты также довольно далеки.
Мое обоснованное предположение состоит в том, что проблема связана с летним временем, которое началось в Германии между двумя эталонными изображениями. По-видимому, exiftool
интерпретирует DateTimeOriginal по местному времени (поэтому сначала MEZ = +0100
а позже MESZ = +0200
) в то время как часы камеры просто продолжают тикать (примерно с +0100
зачет повсюду).
Q: как я могу сказать exiftool
не предполагать, что часы камеры (DateTimeOriginal) соответствуют каким-либо правилам летнего времени?
1 ответ
Да, проблема в конечном итоге связана с переключением летнего времени и тем фактом, что DateTimeOriginal
интерпретируется как местное время (следовательно, подвержено изменениям летнего времени). Кажется, есть несколько способов обойти проблему
А) изменить местный часовой пояс
Т.е. измените настройки локали так, чтобы ваша система находилась в часовом поясе, который не переключал летнее время, а затем вызывала exiftool
как в ОП.
Однако я не буду рекомендовать это. Вы также должны быть осторожны, что выбранный часовой пояс без DST не слишком далеко или иначе exiftool
может быть на целый день с некоторыми из его догадок. Кажется, что западноафриканское время (как оно используется в Нигерии) сработало бы в моей конкретной ситуации.
B) Добавить информацию о часовом поясе в DateTimeOriginal
первый
Т.е. первый запуск
exiftool '-DateTimeOriginal<$DateTimeOriginal+01:00' -ext .jpg .
так как +01:00 фактически был часовым поясом Камары все время. В любом случае, это было бы целесообразно, чтобы предотвратить путаницу в будущем во время съемки. Опять же, мы все равно добавим однозначное и скорректированное время GPS.
Я закончил тем, что делал
В) использовать -geotime
и явные эталонные времена с указанием часового пояса
... как в
exiftool -geotag "*.gpx" \
-geosync "19:25:42Z@2018:03:01 20:25:42+01:00" \
-geosync "09:16:34Z@2018:03:31 10:17:00+01:00" \
'-geotime<${DateTimeOriginal}+01:00' \
-ext .jpg .
Это говорит exiftool
использовать DateTimeOriginal
с указанным часовым поясом вместо того, чтобы интерпретироваться как местное время. К сожалению, это относится только к временам, считываемым с изменяемых изображений, а не к временам, считанным с эталонных изображений (даже если изменяется порядок параметров), так что вместо времени нужно было использовать явное время (с часовым поясом) ссылки на файлы.
На самом деле, поскольку моим эталонным изображениям уже были назначены правильные значения времени GPS из первых экспериментов, я действительно использовал комбинацию B и C: я выполнил настройку, предложенную в "B", только для двух эталонных изображений:
$ exiftool '-DateTimeOriginal<$DateTimeOriginal+01:00' IMG_7882.jpg IMG_9798.jpg
так что их DateTimeOriginal
данные имели информацию о часовом поясе:
$ exiftool -datetimeoriginal -gpsdatetime IMG_7882.jpg
Date/Time Original : 2018:03:01 20:25:42.00+01:00
GPS Date/Time : 2018:03:01 19:25:42Z
$ exiftool -datetimeoriginal -gpsdatetime IMG_9798.jpg
Date/Time Original : 2018:03:31 10:17:00.00+01:00
GPS Date/Time : 2018:03:31 09:16:34Z
После этого я мог использовать эталонные изображения по именам файлов
exiftool -geotag "*.gpx" \
-geosync "IMG_7882.jpg" \
-geosync "IMG_9798.jpg" \
'-geotime<${DateTimeOriginal}+01:00' \
-ext .jpg .
дает желаемый результат для времени GPS (и, следовательно, для координат GPS) также для промежуточных изображений:
$ exiftool -datetimeoriginal -gpsdatetime IMG_8888.jpg
Date/Time Original : 2018:03:17 15:32:22
GPS Date/Time : 2018:03:17 14:32:08.114220008Z