gpt4 book ai didi

ios - 为什么 EXIF GPS 坐标在 iOS 上被截断?

转载 作者:行者123 更新时间:2023-11-29 13:25:43 33 4
gpt4 key购买 nike

我在 JPG 的 EXIF header 中添加 GPS 坐标,并将它们保存到相机胶卷中。出于某种奇怪的原因,当我之后使用第三方应用程序查看 JPG EXIF 信息时,小数经/纬度坐标已被截断,我失去了定位精度。

例子:

[GPSDictionary setObject:[NSNumber numberWithDouble:12.34567890]
forKey:(NSString*)kCGImagePropertyGPSLatitude];

结果:

"{GPS}" = {
Latitude = "12.3456789";
};

但这就是 实际上在 JPG 文件的 EXIF header 中结束的内容:

Latitude = "12.34566667";

其他时候情况更糟。

iPhone GPS: Longitude = 79.78598345
EXIF GPS: Longitude = 79.786

如何防止 iOS 破坏我的坐标位?

因为这会影响以后计算的准确性。

最佳答案

最可能的解释是,罪魁祸首是您用来写入 Exif 信息的应用程序,而不是您后来用来读取 Exif 信息的应用程序。

Exif v2.3 标准 ( http://www.cipa.jp/std/documents/e/DC-008-2012_E.pdf ) 表示 GPS 纬度和经度存储为 3 个 RATIONAL 类型的值,一个用于度,一个用于分钟,一个用于秒。 RATIONAL 类型的值表示两个无符号 32 位整数的比率。因此,必须将十进制纬度或经度转换为度、分和秒,并且每一个都必须表示为一个比率,这意味着必须为它们选择一个特定的分母。最小使用单位的分母决定了分辨率,由编写 Exif header 的应用程序的设计者选择。

您提到的经纬度截断与以1/100弧分为单位表示坐标的选择是一致的。您的纬度 12.3456789 度对应于 12 度和 20.740734 弧分,四舍五入为 12 度和 2074/100 弧分,对应于您得到的 12.3456666... 度。您的经度 79.78598345 度对应于 79 度和 47.159007 弧分,四舍五入为 79 度和 4716/100 弧分,对应于您得到的 79.786 度。

如果您需要更高的分辨率,那么您应该看看您一直用来编写 Exif header 的应用程序是否可以配置为使用更高的分辨率,或者使用不同的应用程序来编写使用更高分辨率的 Exif 信息.例如,如果我使用 exiftool ( http://owl.phy.queensu.ca/~phil/exiftool/ ) 将原始 GPS 经度和纬度写入图像的 Exif header ,然后再次使用 exiftool 提取并打印坐标,则分别得到 12.3456789000111 和 79.7859834499989 度,其中相对于原始坐标的差异意味着分辨率比您使用的应用程序提供的分辨率高大约一百万倍。

关于ios - 为什么 EXIF GPS 坐标在 iOS 上被截断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13188297/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com