找回密码
 立即注册
搜索
查看: 1694|回复: 11

[其他] macOS上Photo中照片定位偏移,但是iPhone上正确

[复制链接]
     
发表于 2024-12-22 20:01 | 显示全部楼层 |阅读模式
本帖最后由 吴怀在 于 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信息中的坐标系。
回复

使用道具 举报

     
发表于 2024-12-22 20:18 | 显示全部楼层
头像太有意思了
回复

使用道具 举报

     
发表于 2024-12-22 20:20 | 显示全部楼层
本帖最后由 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 地址调用也行。

  1. const {
  2.   from,
  3.   to,
  4.   coordinate: {
  5.     lat,
  6.     lng,
  7.   },
  8. } = data.body;

  9. const result = (() => {
  10.   switch (from) {
  11.     case 'wgs':
  12.       switch (to) {
  13.         case 'gcj':
  14.           return wgs2gcj(lat, lng);
  15.         case 'bd':
  16.           return wgs2bd(lat, lng);
  17.       }
  18.       break;
  19.     case 'gcj':
  20.       switch (to) {
  21.         case 'wgs':
  22.           return gcj2wgs_exact(lat, lng);
  23.         case 'bd':
  24.           return gcj2bd(lat, lng);
  25.       }
  26.       break;
  27.     case 'bd':
  28.       switch (to) {
  29.         case 'wgs':
  30.           return bd2wgs(lat, lng);
  31.         case 'gcj':
  32.           return bd2gcj(lat, lng);
  33.       }
  34.       break;
  35.   }
  36. })();
复制代码

评分

参与人数 1战斗力 +1 收起 理由
吴怀在 + 1 感谢!

查看全部评分

回复

使用道具 举报

     
 楼主| 发表于 2024-12-22 20:38 | 显示全部楼层
本帖最后由 吴怀在 于 2024-12-22 20:39 编辑
Junakr 发表于 2024-12-22 20:20
旧毛病了,基本就是 GCJ 坐标系和 WGS 坐标系的转换问题。

有两个快捷指令可以快速转换,第一个是用的其他 ...

我打算转换本地导入前的老照片,转好后再重新导入icloud,不打算直接转换iCloud里的。这样是不是就无法用快捷指令
话说一万多张照片也能用快捷指令批量处理吗?

看了下eviltransform有python库,那还是挺方便的
回复

使用道具 举报

     
发表于 2024-12-22 20:46 | 显示全部楼层
吴怀在 发表于 2024-12-22 20:38
我打算转换本地导入前的老照片,转好后再重新导入icloud,不打算直接转换iCloud里的。这样是不是就无法用 ...

一万张照片还是自己拷贝脚本本地处理吧,代码很简单,用 API 大概会触发用量限制,我部署的 Cloudflare 免费服务,用超就停了。

评分

参与人数 1战斗力 +1 收起 理由
吴怀在 + 1 好评加鹅

查看全部评分

回复

使用道具 举报

     
 楼主| 发表于 2024-12-22 20:50 | 显示全部楼层
Junakr 发表于 2024-12-22 20:46
一万张照片还是自己拷贝脚本本地处理吧,代码很简单,用 API 大概会触发用量限制,我部署的 Cloudflare  ...

恩,毕竟本地才是最靠谱的,iCloud传上去那份只是为了观赏方便。打算用Python本地搞,代码就交给AI写了

看了下这个转换算法和实际坐标的比较,精确度还是不错的。
  1. City         My Sample         EvilTransform     Difference
  2. Hefei        564.64 metres     566.31 metres      2.14 metres
  3. Beijing      556.01 metres     555.90 metres      1.78 metres
  4. Chongqing    475.64 metres     479.27 metres      5.15 metres
  5. Fuzhou       591.79 metres     590.93 metres      0.91 metres
  6. Guangzhou    623.50 metres     621.16 metres      2.94 metres
  7. Lanzhou      220.37 metres     219.71 metres      4.16 metres
  8. Nanning      503.55 metres     511.23 metres      8.02 metres
  9. Guiyang      537.07 metres     539.67 metres      2.67 metres
  10. Zhengzhou    581.16 metres     577.00 metres      4.80 metres
  11. Wuhan        591.41 metres     586.37 metres      6.03 metres
  12. Shijiazhuang 539.78 metres     532.51 metres      7.46 metres
  13. Haikou       505.55 metres     509.61 metres      4.07 metres
  14. Harbin       505.84 metres     509.06 metres      3.30 metres
  15. Changsha     658.00 metres     659.92 metres      3.42 metres
  16. Changchun    591.16 metres     586.82 metres      4.80 metres
  17. Nanjing      534.96 metres     541.89 metres      7.85 metres
  18. Nanchang     602.44 metres     606.67 metres      4.49 metres
  19. Shenyang     576.46 metres     577.89 metres      4.74 metres
  20. Hohhot       591.86 metres     589.36 metres      2.52 metres
  21. Yinchuan     390.29 metres     387.54 metres      2.92 metres
  22. Xining       180.53 metres     174.94 metres      6.15 metres
  23. Chengdu      354.21 metres     359.84 metres      7.61 metres
  24. Jinan        531.84 metres     528.25 metres      3.59 metres
  25. Shanghai     473.37 metres     472.91 metres      3.32 metres
  26. Xi'an        465.20 metres     463.65 metres      1.97 metres
  27. Taiyuan      551.91 metres     555.13 metres      7.02 metres
  28. Tianjin      562.76 metres     562.08 metres      4.59 metres
  29. Ürümqi       264.13 metres     264.43 metres      3.57 metres
  30. Lhasa        337.64 metres     335.95 metres      7.82 metres
  31. Kunming      357.32 metres     359.96 metres      3.75 metres
  32. Hangzhou     525.59 metres     522.34 metres      7.45 metres
  33. Ngari        347.17 metres     345.03 metres     11.54 metres
  34. Kashgar      267.57 metres     261.01 metres      6.57 metres
  35. Altay        294.14 metres     292.83 metres      2.76 metres
复制代码
回复

使用道具 举报

     
 楼主| 发表于 2024-12-23 09:42 来自手机 | 显示全部楼层
本帖最后由 吴怀在 于 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 22:03 | 显示全部楼层
吴怀在 发表于 2024-12-23 09:42
之前定位偏移是在macos上发现的,我用iphone再看了下,发现所有照片定位都是对的。请问您有遇到过类似现 ...

不了解,没有改过照片的 GPS,我的应用场景是到达特定位置执行自动化操作。
比对下 iPhone 上的照片和 macOS 的相同照片经纬度是否一致吧,如果坐标一致但是两台设备定位的地点不同,就把它当作 macOS 相册的 Bug 就好
也可以试试清空 macOS 端的照片然后重新同步,虽然我觉得没有必要就是了。

评分

参与人数 1战斗力 +1 收起 理由
吴怀在 + 1

查看全部评分

回复

使用道具 举报

     
 楼主| 发表于 2024-12-23 22:37 | 显示全部楼层
本帖最后由 吴怀在 于 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 坐标系。


看起来,上传到云上贵州的 iCloud 会将坐标转换为 GCJ 坐标系,但在导出时又会将其转回 WGS 坐标系。正是这两次坐标系的转换,导致了经纬度秒小数点第三位的误差。

由于我是从 macOS 导入的照片,因此通过 macOS 导出的照片应该还是本地原始数据,没有经过坐标转换。按照你所说,如果在 macOS 上删除所有照片并重新同步,坐标应该就会与 iPhone 上保持一致。

好消息是,我应该不需要手动转换坐标系了。

评分

参与人数 1战斗力 +2 收起 理由
Junakr + 2 学到了

查看全部评分

回复

使用道具 举报

     
发表于 2024-12-24 00:02 | 显示全部楼层
吴怀在 发表于 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:08 来自手机 | 显示全部楼层
本帖最后由 依然荏苒 于 2024-12-24 00:14 编辑

火星坐标这种废物打着国安的旗号,实际十几年前就被反求回归逼近,到10年算法泄漏,现在完全是累赘,遇到了还要转。

—— 来自 鹅球 v3.2.91
回复

使用道具 举报

     
 楼主| 发表于 2024-12-24 09:18 来自手机 | 显示全部楼层
Junakr 发表于 2024-12-24 00:02
应该就是这么一回事了,我导出一张 iCloud 照片看了眼确实存的是 WGS 坐标,在照片 App 里查看时又能在使 ...

我感觉是历史原因,说bug倒也没错。

翻到了14年时在华老外的一篇总结,说当时苹果在国内坐标也用wgs,但是在地图渲染时把地图按照gcj偏移;而谷歌正好相反,是把坐标转换成gcj,地图渲染时就不做偏移了。

所以macos的照片应用应该是沿用了14年的逻辑,默认照片里的坐标都是wgs,根据你的网络判断你人在国内还是国外来偏移地图。实际上在云上贵州之后,国行icloud里照片坐标都会转成gcj,不用再做偏移了。

评分

参与人数 1战斗力 +2 收起 理由
Junakr + 2 原来如此

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-1-22 15:59 , Processed in 0.029569 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表