跳转至

通过 IDL 使用 EXIF 元数据在 Google Earth 中显示照片位置

原文链接: https://www.nv5geospatialsoftware.com/Learn/Blogs/Blog-Details/using-exif-metadata-to-show-photo-locations-in-google-earth-via-idl

19124 评价本文:

暂无评分

通过 IDL 使用 EXIF 元数据在 Google Earth 中显示照片位置

作者:Jim Pendleton 发布时间:2015年4月9日,星期四

你是否曾需要一个 IDL API 来获取数码照片拍摄的地理位置,并且该位置存储在 TIFF 或 JPEG 等标准格式中?

在一个美好的春日早晨,我在科罗拉多州博尔德市办公楼外拍摄了这张盛开的开花树的照片。当我年纪渐长,记忆模糊时,如何才能记得照片拍摄的位置,即使误差在GPS精度范围内?

为此,IDL 8.4.1 新增了一个 READ_EXIF 函数。

输入是图像文件的路径,输出是一个包含大量有用元数据的 HASH

如果拍摄照片的设备启用了 GPS 标记功能,其内容将被存储在名称不甚优雅但标准的键 "ifd0_subifd0_GPS" 中。

IDL> r = read_exif(dialog_pickfile())

IDL> if r.haskey('ifd0_subifd0_GPS') then GPSInfo = r['ifd0_subifd0_GPS']

IDL> print, GPSInfo, /implied

{ "ifd0_subifd0_GPS": { "Exif_GPSInfo_GPSLongitude": [105.00000000000000, 14.000000000000000, 10.588900000000001], "Exif_GPSInfo_GPSAltitudeRef": 0, "Exif_GPSInfo_GPSLatitude": [40.000000000000000, 1.0000000000000000, 13.553400000000000], "Exif_GPSInfo_GPSAltitude": 0.00000000000000000, "Exif_GPSInfo_GPSTimeStamp": [14.000000000000000, 53.000000000000000, 34.000000000000000], "Exif_GPSInfo_GPSProcessingMethod": "ASCII", "Exif_GPSInfo_GPSVersionID": [2, 2, 0, 0], "Exif_GPSInfo_GPSDateStamp": "2015:04:06", "Exif_GPSInfo_GPSLatitudeRef": "N", "Exif_GPSInfo_GPSLongitudeRef": "W" } }

标签名虽然冗长且繁琐,但它们使用了标准的前缀。

IDL> pre = 'Exif_GPSInfo_GPS'

接下来,在 Google Earth 中显示该位置。首先提取以十进制度表示的经度和纬度。

IDL> Lon =Total(Float(GPSInfo[pre+'Longitude'])/[1.,60.,3600.]) IDL> Lon *= GPSInfo[pre+'LongitudeRef'].Compare('W') eq 0 ? -1 : 1 IDL> Lat =Total(Float(GPSInfo[pre+'Latitude'])/[1.,60.,3600.]) IDL> Lat *= GPSInfo[pre+'LatitudeRef'].Compare('N') eq 0 ? 1 : -1

接着,创建包含位置标记的 KML 内容。

IDL> l = '' IDL> l += '' IDL> l += '' IDL> l += '照片位置' IDL> l += '附加到地面。也可以使用 GPS 高度。' IDL> l += '' IDL> l += '' + StrJoin([Lon, Lat, 0], ',') + '' IDL> l += '' IDL> l += '' IDL> l += ''

将 KML 写入临时文件。

IDL> tempfile = filepath('test.kml', /tmp) IDL> openw, lun, tempfile, /get_lun & printf, lun, l & free_lun, lun

如果您的计算机已将 ".kml" 注册为已知扩展名,那么您应该可以直接通过 SPAWN 命令打开该文件。

IDL> spawn, tempfile, /hide, /nowait

请注意,如今大多数移动设备为了支持更高程度的隐私保护,默认情况下通常会禁用照片的 GPS 标记功能。要启用 GPS 标记,通常需要在特定设备上找到相机应用程序关联的“设置”或“选项”菜单。

应用色彩阈值以提升可视化粒度 提升能见度——理解 LiDAR 通视分析