我想对我的所有假期照片进行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 是我的计算机时钟的照片,显示时间为 2018 年 3 月 31 日 11:16:34 MESZ(=09:16:34 Zulu)。我使用了两个这样的(包围)参考图像来解释漂移(事实上,相机时钟似乎在那个月快了 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
始终存在偏移)。
问:我怎么才能exiftool
告诉不是假设相机时钟(DateTimeOriginal)遵循任何夏令时规则?
答案1
是的,问题最终来自夏令时切换以及被DateTimeOriginal
解释为当地时间(因此会受到夏令时变化的影响)。似乎有几种方法可以解决这个问题
A)更改当地时区
即,更改区域设置,以便您的系统处于在时间间隔内不会切换 DST 的时区,然后exiftool
像在 OP 中一样调用。
但是,我不推荐这样做。您还必须注意所选的无 DST 时区不要相差太远,否则exiftool
它的一些猜测可能会相差整整一天。看来,西非时间(尼日利亚使用的)在我的特定情况下是可行的。
DateTimeOriginal
B)首先添加时区信息
即第一次运行
exiftool '-DateTimeOriginal<$DateTimeOriginal+01:00' -ext .jpg .
因为 +01:00 一直以来都是相机的实际时区。无论如何,这可能是明智的做法,以防止将来对拍摄图像的时间产生混淆。不过,无论如何,我们都要添加明确且经过调整的 GPS 时间。
我最终做了
C) 使用-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