我想对我所有的假期照片进行地理标记exiftool
,如下所示:
exiftool -geotag "*.gpx" \
-geosync "19:25:42Z@IMG_7882.jpg" \
-geosync "09:16:34Z@IMG_9798.jpg" \
-ext .jpg .
其中 IMG_7802.jpg 是我的计算机时钟的照片,显示 2018 年 3 月 1 日的 20:25:42 MEZ (=19:25:42 Zulu),同样 IMG_9798.jpg 是我的计算机时钟的照片,显示时间为 11:16:34 MESZ 于 2018 年 3 月 31 日(=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 时间显着偏离,例如在以下示例中大约半小时(我所期望的大约 14:32Z 的 GPS 时间)
$ 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
偏移量)。
问:如何判断exiftool
不要假设相机时钟 (DateTimeOriginal) 遵循任何夏令时规则?
是的,问题最终来自 DST 切换以及
DateTimeOriginal
被解释为本地时间的事实(因此受 DST 更改的影响)。似乎有几种方法可以解决这个问题A) 更改本地时区
即,更改区域设置,使您的系统处于在时间间隔内不切换 DST 的时区,然后
exiftool
像在 OP 中那样调用。但是,我不会推荐这个。您还必须注意所选的无 DST 时区不会太远,否则
exiftool
可能会因一些猜测而偏离一整天。似乎西非时间(在尼日利亚使用)在我的具体情况下会起作用。DateTimeOriginal
B)首先添加时区信息即,第一次运行
因为 +01:00 实际上一直是卡马拉的时区。无论如何,这可能是可取的,以防止将来混淆图像的拍摄时间。话又说回来,无论如何我们都将添加明确和调整的 GPS 时间。
我最终做了
C)使用
-geotime
和明确的参考时间与时区规范...就像在
这告诉
exiftool
使用DateTimeOriginal
指定的时区而不是解释为本地时间。不幸的是,这仅适用于从正在修改的图像中读取的时间,而不适用于从参考图像中读取的时间(即使更改了参数顺序),因此必须使用明确的时间(带时区)而不是文件参考。实际上,由于我的参考图像在第一次实验中已经被分配了正确的 GPS 时间,我真正做的是 B 和 C 的混合:我只对两个参考图像进行了“B”中建议的调整:
以便他们的
DateTimeOriginal
数据具有时区信息:之后,我可以通过文件名使用参考图像
为 GPS 时间(以及因此为 GPS 坐标)也为中间图像生成所需的结果: