吴怀在 发表于 2024-12-22 20:01

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信息中的坐标系。

脸宽 发表于 2024-12-22 20:18

头像太有意思了

Junakr 发表于 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 地址调用也行。

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:38

本帖最后由 吴怀在 于 2024-12-22 20:39 编辑

Junakr 发表于 2024-12-22 20:20
旧毛病了,基本就是 GCJ 坐标系和 WGS 坐标系的转换问题。

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

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

Junakr 发表于 2024-12-22 20:46

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

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

吴怀在 发表于 2024-12-22 20:50

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 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信息后导入的老照片,定位都是正确的。

Junakr 发表于 2024-12-23 22:03

吴怀在 发表于 2024-12-23 09:42
之前定位偏移是在macos上发现的,我用iphone再看了下,发现所有照片定位都是对的。请问您有遇到过类似现 ...

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

吴怀在 发表于 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 坐标系。
https://p.sda1.dev/20/3ac232fa2eee53f89a3fe7f244ae6d29/image.png

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

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

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

Junakr 发表于 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]
查看完整版本: macOS上Photo中照片定位偏移,但是iPhone上正确