国行 iPhone 拍照,写入图片 Exif 中的 GPS 坐标是 GCJ-02,有没有办法使用 WGS84

77 天前
 vonsy

国行 iPhone 拍照,写入图片 Exif 中的 GPS 坐标是 GCJ-02,有没有办法使用 WGS84.

验证方法,拍张照片,找个 online exif data viewer(例如:https://jimpl.com/),拍照位置与网站中差个几百米.

图片中的坐标,在手机苹果地图, Google Maps 中和拍照位置一致(那就系统层面是 GCJ-02 ?)

修改手机地区,语言无效.

有解吗?

1365 次点击
所在节点    问与答
11 条回复
aphorism
77 天前
应该是没有办法,除非使用非中国地区发售的 iPhone 。
LaoChen
77 天前
又多了一个不买国行的理由
aphorism
77 天前
有几个细节需要进一步澄清:
1 、“拍照位置与网站中差个几百米”。这个网站的地图使用的是哪个数据源,是 Google Maps ,Bing Maps / Azure Maps 还是 OpenStreetMap ?上述地图服务对外提供的数据使用的都是非 GCJ - 02 坐标,因此会有个几百米的偏差。

2 、“图片中的坐标,在手机苹果地图, Google Maps 中和拍照位置一致”,这是因为 EXIF 中的数据确实是 GCJ-02 的,同时手机苹果地图、手机谷歌地图中的矢量图层都是 GCJ-02 坐标的,所以看起来跟正确位置是对的。特别需要注意的是手机版 Google Maps 应用对中国的矢量数据和影像数据进行了配准,因此 GCJ - 02 坐标也可以正常显示。而在 Web 版本的 Google Maps 中,影像数据的坐标系统是 EPSG:900913 或者 EPSG:4326 的,因此与 GCJ-02 系统的矢量数据会存在偏差。

3 、如果你需要在苹果手机上记录或导出真实的经纬度坐标,可以使用 MapMyRide 等记录轨迹的 App 来记录轨迹并转存下来,这些数据是真实地理坐标。
LaoChen
77 天前
@aphorism 大佬专业!
问几个问题,如何判断一张照片的 EXIF 是 GCJ-02 坐标,还是 WGS84 坐标?

国行 iPhone 手机拿到海外用了,拍了当地的照片,还会有这个问题吗?
aphorism
77 天前
@LaoChen

1 、问:如何判断一张照片的 EXIF 是 GCJ-02 坐标,还是 WGS84 坐标?

答:准确地回答是比较难判断,因为都是地理坐标,没有其他的元数据的话是分辨不出来的。但是有一个较简单的法则,将这个数据输入到 Web 版本的 Google Maps 中在影像图层中查看,如果显示的位置与拍摄的位置一致,则是 GPS/WGS84 坐标系统的,否则就是 GCJ-02 坐标系统的。其实 GCJ 模块是在应用层面的,而不是系统层面的。GPS 芯片所解算出来的数据是 GPS 坐标的,只有需要在中国的矢量地图上叠加显示的时候才变换到 GCJ-02 坐标系。一般而言,如果一个 App 没有为中国做特别处理,那么其记录的数据应当就是真实的 GPS 坐标。例如苹果手表即使是中国发售的版本,其记录的轨迹数据也是 GPS 坐标的。


2 、问:国行 iPhone 手机拿到海外用了,拍了当地的照片,还会有这个问题吗?

答:没有实际地试验过,不能完全确定答案。但从常理来讲应该不存在这个问题,如上所述。该 EXIF 信息应当是由苹果的相册应用写入照片文件的,而 GCJ-02 的规则应当只在中国生效,其目的是为了解决 GeoTag 信息在中国的地图数据上匹配失准问题的。从逻辑上说,在中国以外的地区,这个额外的规则应当是不生效的,否则 GeoTag 信息同样会与该地的地理数据匹配失准。其实可以谨慎地怀疑,即使在中国拍摄的照片,其 EXIF 信息中可能也存在真实的 GPS 数据,只是不是按照 GeoTag 的标准来存储的,这就只有苹果自己的开发人员才能知道了。
wushan
77 天前
@aphorism @vonsy 我是国行 iPhone ,区域美国,语言英语。国内拍摄照片 Exif 中的坐标似乎就是 WGS-84 坐标。复制坐标到 iOS 端谷歌地球、Web 端谷歌地图、Web 端谷歌地图里,卫星图定位正确,矢量图偏移。放到 iOS 端苹果地图、谷歌地图中卫星图和矢量图均有偏移,但从相册直接上滑显示的矢量图定位是正确的。海外拍摄的照片一切正常。
10RR
77 天前
赞同楼上 @aphorism 的回答.

OP 图片挂了. 我去 https://jimpl.com/ 这个网站传了一张照片.
显示卫星地图时的定位是对的, 显示街道地图就偏差了大约 500 米.
这应该就是 WGS84 和 GCJ-02 坐标系偏移的距离 ? 不知道哪个是哪个.
感觉应该是卫星图使用 WGS84, 而普通街道地图使用 GCJ-02.

此前, 我用国行和外版的 iPhone 在同一地点分别拍了照片, 发现 Exif 里的坐标数值几乎是一样的, 偏差可能在 10 米之内.
10RR
77 天前
也同意楼上 @wushan 说的.
aphorism
77 天前
结合 @wushan @10RR 的回答,作一点更正说明:


1 、iPhone 无论是中国发售的版本还是美、日等地发售版本,其照片文件的 EXIF 信息中附带的 Geotag 数据均为 GPS 坐标,并非 GCJ-02 坐标。

2 、https://jimpl.com 网站使用的地图服务是 Google Maps ,而 Google Maps 的中国的矢量数据是 GCJ-02 坐标系统的,因此显示 GPS 坐标会出现匹配失准,切换到卫星影像就与实际位置没有偏差。

3 、以下列举了几个常见的地图网站与其中国区域数据所用坐标系统
(1) Google Maps Web 版,https://maps.google.com 中国区域的矢量数据为 GCJ-02 坐标,在中国区域的矢量地图上显示 GPS 坐标时会匹配失准,切换到卫星影像地图则匹配正确。显示世界其他地区地图时无此问题。
(2)Bing Maps Web 版,https://bing.com/maps 中国区域的矢量数据为 GCJ-02 坐标,在中国区域的矢量地图上显示 GPS 坐标时会匹配失准,切换到卫星影像地图则匹配正确。显示世界其他地区地图时无此问题。
(3)Apple Maps Web 版,https://beta.maps.apple.com 中国区域的矢量数据为 EPSG-3857 坐标,显示 GPS 坐标时匹配正确。
(4)OpenStreetMap Web 版 https://www.openstreetmap.org 中国区域的矢量数据为 EPSG-3857 坐标,显示 GPS 坐标时匹配正确。
(5)ArGIS Map Web 版 https://www.arcgis.com/home/webmap/viewer.html 中国区域的矢量数据为 EPSG-3857 坐标,显示 GPS 坐标时匹配正确。

4 、该问题的根源在于中国主管部门允许商用的地理导航数据集必须是 GCJ-02 坐标系统的,因此所有采用该数据集的服务商都会存在与 GPS 坐标叠加显示时匹配失准的问题。GCJ-02 坐标系统说白了就是在真实地理坐标上加入噪声,而该噪声就是你看到的所谓”偏差“。目前最好的解决方案就是使用 OpenStreetMap 数据集,该数据集在中国区域内的详尽程度可能不如来自于百度、高德、四维图新等商业数据集,但其坐标系统是未经过加噪处理的,显示 GPS 坐标不会有失准的问题。
LaoChen
76 天前
那如果 @aphorism 的最新回复信息是准确的,那可以推断 Apple 在 iOS 上街道数据说不定用的也是 EPSG-3857 坐标?那这个帖子的立论就不存在了。没任何问题了。

我刚刚试了,把我国行 iPhone 在国内拍的照片,AirDrop 到我的纯血美国 iPhone 上,上滑看位置,除了城市名变成了拼音,没有一点毛病啊!

Apple:你看我多牛逼,可以找到提供 EPSG-3857 的供应商,来解决东方大国的特色问题!
LaoChen
76 天前
回到楼主 @vonsy 观察到的现象,合理解释是 https://jimpl.com/在街道层面使用了 GCJ-02 数据源?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1071777

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX