我有一堆从 FLIR 相机获得的 jpeg 图像。除了这些图像之外,我还收集了 GPS 坐标。现在我正在尝试将 GPS 纬度和经度获取到图像的元数据中。
我用 R 编程语言编写了一个程序,用于查找每个图像相对于时间的 GPS 位置(当 GPS 位置时间和相机时间匹配时,我就获取该坐标)。
即,对于特定图像,我有 GPSLatitude <- 19.33423 and GPSLongitude <- 72.090834
但现在我需要将这些准确的 GPS 位置添加到图像中。
我尝试使用 Exiftool 来做到这一点。我正在使用 Mac osX sierra。我安装了 exiftool。但现在我不知道如何使用它来更新 GPS 数据。
任何人都可以帮助我吗?如果可能的话请告诉我直接从 R 编程语言本身更新数据的方法
谢谢
使用 exiftool 添加 GPS 坐标:
exiftool -XMP:GPSLongitude="-84.683333" -XMP:GPSLatitude="10.502117" -GPSLongitudeRef="West" -GPSLatitudeRef="North" photo.jpg
这些值只是从 Google 地图获取的浮点数。
来自 exiftool 论坛上线程的结果
output <- system(sprintf("exiftool -GPSLatitude=%f -GPSLongitude=%f %s",q,p,aa))
output <- system(paste("exiftool -GPSLatitude=",q," -GPSLongitude=",p," ", aa))
为了处理经纬度可能为负值的情况,我建议先导入XMP,然后从XMP复制到EXIF: (bash代码)
exiftool -XMP:GPSLatitude="$latitude" -XMP:GPSLongitude="$longitude" "$image"
exiftool "-gps:all<xmp-exif:all" "-gps:all<composite:all" "-gpsdatestamp<gpsdatetime" "-gpstimestamp<gpsdatetime" "$image"
exiftool -EXIF:GPSAltitude="$altitude" -EXIF:GPSAltitudeRef#="0" -EXIF:GPSMapDatum='WGS-84' "$image"
当尝试按照Casto Salobreña的建议做类似的事情时,我收到以下错误:
$ exiftool -XMP:GPSLatitude=1.2843265 -XMP:GPSLongitude=36.8798949 -GPSLatitudeRef=South -GPSLongitudeRef=East -P test.jpeg
Warning: Truncated PreviewIFD directory. IFD dropped. - test.jpeg
Error: [minor] Bad PreviewIFD directory - test.jpeg
0 image files updated
1 files weren't updated due to errors
为了解决这个问题,我删除了
Ref
选项,删除并将 South
方向(或者可能需要对 West
执行相同操作)更改为负数:
$ exiftool -XMP:GPSLatitude=-1.2843265 -XMP:GPSLongitude=36.8798949 -P test.jpeg
1 image files updated
现在我测试:
$ exiftool -l test.jpeg
...
GPS Position
1 deg 17' 3.58" S, 36 deg 52' 47.62" E
...
在 exiftool 12.44+ 中,您现在可以简单地指定小数坐标,它会将这些坐标转换为适当的元标记,包括参考方向:
exiftool -gpsposition="-25.40424,27.73621" image.jpg
exiftool image.jpg | grep GPS
GPS Version ID : 2.3.0.0
GPS Latitude Ref : South
GPS Longitude Ref : East
GPS Latitude : 25 deg 24' 15.26" S
GPS Longitude : 27 deg 44' 10.36" E
GPS Position : 25 deg 24' 15.26" S, 27 deg 44' 10.36" E