macOS上Photo中照片定位偏移,但是iPhone上正确
本帖最后由 吴怀在 于 2024-12-23 10:12 编辑最近在给老照片手动用geosetter打gps标签,然后用macos导入到icloud中观赏。
目前发现自己导入的照片有显示坐标偏移的问题,进一步发现macos上是否偏移和挂不挂代理有关,但是iphone上正常。问题描述如下:
1. macOS上如果挂代理,则自己添加gps后导入iCloud的老照片地点正确,iCloud里原有照片定位漂移
2. macOs中如果不挂代理,则iCloud里原有照片地点正确,自己添加gps的老照片定位漂移
3. 无论挂不挂代理,iPhone上无论是iCloud中原有照片、还是自己添加gps信息后导入的老照片,定位都是正确的。
请问为什么会这样
===============================
原贴标题:怎么挂不挂代理会导致iCloud里照片GPS定位偏移?有坐标转换工具吗?
最近在给老照片打GPS标签,辛辛苦苦标了一万张,导入iCloud里一看,坐标全都漂了
挂上代理再重新打开照片App,打好GPS标签的老照片位置正确,但是iCloud里原有的照片位置又不对了
太崩溃了。我原以为苹果会自动修正两套坐标系的。
求个python脚本,可以转换照片exif信息中的坐标系。 头像太有意思了 本帖最后由 Junakr 于 2024-12-22 20:36 编辑
旧毛病了,基本就是 GCJ 坐标系和 WGS 坐标系的转换问题。
有两个快捷指令可以快速转换,第一个是用的其他人分享的第三方 API,第二个是我自己部署的坐标转换服务,因为两者使用的算法不同会有稍许偏差:
https://www.icloud.com/shortcuts/2e775ddb98e04ddbbc2329ee3cc5fae5
https://www.icloud.com/shortcuts/590a34f64aba41dea53e61e765012bd8
我的算法来源是 https://github.com/googollee/eviltransform,会编程自己改也行。
---
贴个我的 API 处理入参的代码好了,楼主直接从快捷指令里面拿到 API 地址调用也行。
const {
from,
to,
coordinate: {
lat,
lng,
},
} = data.body;
const result = (() => {
switch (from) {
case 'wgs':
switch (to) {
case 'gcj':
return wgs2gcj(lat, lng);
case 'bd':
return wgs2bd(lat, lng);
}
break;
case 'gcj':
switch (to) {
case 'wgs':
return gcj2wgs_exact(lat, lng);
case 'bd':
return gcj2bd(lat, lng);
}
break;
case 'bd':
switch (to) {
case 'wgs':
return bd2wgs(lat, lng);
case 'gcj':
return bd2gcj(lat, lng);
}
break;
}
})(); 本帖最后由 吴怀在 于 2024-12-22 20:39 编辑
Junakr 发表于 2024-12-22 20:20
旧毛病了,基本就是 GCJ 坐标系和 WGS 坐标系的转换问题。
有两个快捷指令可以快速转换,第一个是用的其他 ...
我打算转换本地导入前的老照片,转好后再重新导入icloud,不打算直接转换iCloud里的。这样是不是就无法用快捷指令
话说一万多张照片也能用快捷指令批量处理吗?
看了下eviltransform有python库,那还是挺方便的
吴怀在 发表于 2024-12-22 20:38
我打算转换本地导入前的老照片,转好后再重新导入icloud,不打算直接转换iCloud里的。这样是不是就无法用 ...
一万张照片还是自己拷贝脚本本地处理吧,代码很简单,用 API 大概会触发用量限制,我部署的 Cloudflare 免费服务,用超就停了。 Junakr 发表于 2024-12-22 20:46
一万张照片还是自己拷贝脚本本地处理吧,代码很简单,用 API 大概会触发用量限制,我部署的 Cloudflare...
恩,毕竟本地才是最靠谱的,iCloud传上去那份只是为了观赏方便。打算用Python本地搞,代码就交给AI写了
看了下这个转换算法和实际坐标的比较,精确度还是不错的。
City My Sample EvilTransform Difference
Hefei 564.64 metres 566.31 metres 2.14 metres
Beijing 556.01 metres 555.90 metres 1.78 metres
Chongqing 475.64 metres 479.27 metres 5.15 metres
Fuzhou 591.79 metres 590.93 metres 0.91 metres
Guangzhou 623.50 metres 621.16 metres 2.94 metres
Lanzhou 220.37 metres 219.71 metres 4.16 metres
Nanning 503.55 metres 511.23 metres 8.02 metres
Guiyang 537.07 metres 539.67 metres 2.67 metres
Zhengzhou 581.16 metres 577.00 metres 4.80 metres
Wuhan 591.41 metres 586.37 metres 6.03 metres
Shijiazhuang 539.78 metres 532.51 metres 7.46 metres
Haikou 505.55 metres 509.61 metres 4.07 metres
Harbin 505.84 metres 509.06 metres 3.30 metres
Changsha 658.00 metres 659.92 metres 3.42 metres
Changchun 591.16 metres 586.82 metres 4.80 metres
Nanjing 534.96 metres 541.89 metres 7.85 metres
Nanchang 602.44 metres 606.67 metres 4.49 metres
Shenyang 576.46 metres 577.89 metres 4.74 metres
Hohhot 591.86 metres 589.36 metres 2.52 metres
Yinchuan 390.29 metres 387.54 metres 2.92 metres
Xining 180.53 metres 174.94 metres 6.15 metres
Chengdu 354.21 metres 359.84 metres 7.61 metres
Jinan 531.84 metres 528.25 metres 3.59 metres
Shanghai 473.37 metres 472.91 metres 3.32 metres
Xi'an 465.20 metres 463.65 metres 1.97 metres
Taiyuan 551.91 metres 555.13 metres 7.02 metres
Tianjin 562.76 metres 562.08 metres 4.59 metres
Ürümqi 264.13 metres 264.43 metres 3.57 metres
Lhasa 337.64 metres 335.95 metres 7.82 metres
Kunming 357.32 metres 359.96 metres 3.75 metres
Hangzhou 525.59 metres 522.34 metres 7.45 metres
Ngari 347.17 metres 345.03 metres 11.54 metres
Kashgar 267.57 metres 261.01 metres 6.57 metres
Altay 294.14 metres 292.83 metres 2.76 metres 本帖最后由 吴怀在 于 2024-12-23 10:09 编辑
Junakr 发表于 2024-12-22 20:20
旧毛病了,基本就是 GCJ 坐标系和 WGS 坐标系的转换问题。
有两个快捷指令可以快速转换,第一个是用的其他 ...
之前定位偏移是在macos上发现的,我用iphone再看了下,发现所有照片定位都是对的。请问您有遇到过类似现象吗?
照片还是之前导入的那些,没有用脚本转换坐标。都是在macos上导入,iphone里的照片是通过icloud同步过去的。我用的是国内的icloud,icloud会自动做坐标转换吗?
以下是问题详细描述:
1. macOS上如果挂代理,则自己添加gps后导入iCloud的老照片地点正确,iCloud里原有照片定位漂移
2. macOs中如果不挂代理,则iCloud里原有照片地点正确,自己添加gps的老照片定位漂移
3. 无论挂不挂代理,iPhone上无论是iCloud中原有照片、还是自己添加gps信息后导入的老照片,定位都是正确的。 吴怀在 发表于 2024-12-23 09:42
之前定位偏移是在macos上发现的,我用iphone再看了下,发现所有照片定位都是对的。请问您有遇到过类似现 ...
不了解,没有改过照片的 GPS,我的应用场景是到达特定位置执行自动化操作。
比对下 iPhone 上的照片和 macOS 的相同照片经纬度是否一致吧,如果坐标一致但是两台设备定位的地点不同,就把它当作 macOS 相册的 Bug 就好。
也可以试试清空 macOS 端的照片然后重新同步,虽然我觉得没有必要就是了。 本帖最后由 吴怀在 于 2024-12-24 15:58 编辑
Junakr 发表于 2024-12-23 22:03
不了解,没有改过照片的 GPS,我的应用场景是到达特定位置执行自动化操作。
比对下 iPhone 上的照片和 ma ...
对 iCloud 中原本已有、近年使用 iPhone 拍摄的照片,无论用 iPhone 导出,还是通过 macOS 在挂代理或不挂代理的情况下导出,其 GPS 坐标均一致,并且都为 WGS 坐标系。
对于那些我手动打了 geotag 后从 macOS 导入到 iCloud 的照片,使用 iPhone 和 macOS 导出的坐标会存在些微差异,但同样都是 WGS 坐标系。
https://p.sda1.dev/20/3ac232fa2eee53f89a3fe7f244ae6d29/image.png
看起来,上传到云上贵州的 iCloud 会将坐标转换为 GCJ 坐标系,但在导出时又会将其转回 WGS 坐标系。正是这两次坐标系的转换,导致了经纬度秒小数点第三位的误差。
由于我是从 macOS 导入的照片,因此通过 macOS 导出的照片应该还是本地原始数据,没有经过坐标转换。按照你所说,如果在 macOS 上删除所有照片并重新同步,坐标应该就会与 iPhone 上保持一致。
好消息是,我应该不需要手动转换坐标系了。 吴怀在 发表于 2024-12-23 22:37
对iCloud里已经存在、近年使用iPhone拍的照片,用iPhone导出、macOS挂代理时导出、macOS时不挂代理导出, ...
应该就是这么一回事了,我导出一张 iCloud 照片看了眼确实存的是 WGS 坐标,在照片 App 里查看时又能在使用 GCJ 坐标系的高德地图中正确定位。
不过挂代理 macOS 就切坐标系的行为还是让人迷惑(对境外 IP 使用 WGS,在中国就用 GCJ?),IP 变动但是地图供应商没有变,没有道理变坐标系啊,我认为这其中最大的锅还是 macOS 有 Bug(确信。 本帖最后由 依然荏苒 于 2024-12-24 00:14 编辑
火星坐标这种废物打着国安的旗号,实际十几年前就被反求回归逼近,到10年算法泄漏,现在完全是累赘,遇到了还要转。
—— 来自 鹅球 v3.2.91 Junakr 发表于 2024-12-24 00:02
应该就是这么一回事了,我导出一张 iCloud 照片看了眼确实存的是 WGS 坐标,在照片 App 里查看时又能在使 ...
我感觉是历史原因,说bug倒也没错。
翻到了14年时在华老外的一篇总结,说当时苹果在国内坐标也用wgs,但是在地图渲染时把地图按照gcj偏移;而谷歌正好相反,是把坐标转换成gcj,地图渲染时就不做偏移了。
所以macos的照片应用应该是沿用了14年的逻辑,默认照片里的坐标都是wgs,根据你的网络判断你人在国内还是国外来偏移地图。实际上在云上贵州之后,国行icloud里照片坐标都会转成gcj,不用再做偏移了。
页:
[1]