exiftool 和 geosync 存在问题,可能与夏令时有关

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 是我的计算机时钟的照片,显示时间为 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

因此,计算出的经度和纬度也相差很大。

我的合理猜测是,问题与两张参考图像之间德国开始的夏令时有关。显然,exiftoolDateTimeOriginal 以当地时间解释(因此首先 MEZ = +0100,然后 MESZ = +0200),而相机时钟则继续滴答作响(大约+0100始终存在偏移)。

问:我怎么才能exiftool告诉不是假设相机时钟(DateTimeOriginal)遵循任何夏令时规则?

答案1

是的,问题最终来自夏令时切换以及被DateTimeOriginal解释为当地时间(因此会受到夏令时变化的影响)。似乎有几种方法可以解决这个问题

A)更改当地时区

即,更改区域设置,以便您的系统处于在时间间隔内不会切换 DST 的时区,然后exiftool像在 OP 中一样调用。

但是,我不推荐这样做。您还必须注意所选的无 DST 时区不要相差太远,否则exiftool它的一些猜测可能会相差整整一天。看来,西非时间(尼日利亚使用的)在我的特定情况下是可行的。

DateTimeOriginalB)首先添加时区信息

即第一次运行

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

相关内容