gpt4 book ai didi

swift - 从一个 UTM 区域到另一个 UTM 区域的投影点

转载 作者:行者123 更新时间:2023-12-04 10:55:45 26 4
gpt4 key购买 nike

我目前正在开展一个项目,我们必须根据两个(用户输入)点的已知位置找出一个点的位置。

现在的问题是用户可以在不同的 UTM 区域中提供两个点,因此我们必须将其中一个点投影到另一个系统(至少我们是这样做的)。

我用 Python 编写了一个引用实现来测试它,现在我们想在 iOS 的生产中使用这个功能。好像唯一的 swift proj 库 here已过期,无法使用。

我们环顾四周,但没有找到有关如何在没有附加软件的情况下将一个点从一个区域投影到另一个区域的描述。

您知道这是否可行,或者是否有适用于 swift 的最新 proj 库?

最佳答案

Project point from one UTM zone to other



您可能很清楚,由于您已经用 Python 编写了一个引用实现,这分两步完成:

1. 将 UTM 的一个点反投影到地理坐标,即从 [E, N, Zone, Hemisphere] 到纬度、经度 (φ, λ);

进而,

2. 将生成的地理坐标投影到 UTM(另一个区域,不同于 1),即从纬度、经度 (φ, λ) 到 UTM 坐标 (E, N)。

因为你没有提到任何 Datum conversion ,PROJ 库完成这项任务变得矫枉过正。此外,问题不是关于 How to call C from Swift .

更重要的是,对于大多数主流语言(Java、Javascript、Python、C#),或者至少可以轻松适应 UTM 的横向墨卡托实现(UTM 系统使用 Transverse墨卡托作为制图投影)。

对于 Swift,我在 SO 上找不到任何东西,但在 GitHub 上我可以找到。

https://github.com/wtw-software/UTMConversion

转换发生在自定义结构 UTMCoordinate 和 CoreLocation 的 CLLocationCoordinate2D 和 CLLocation 之间。

如果您不使用默认值 WGS84,甚至可以指定自定义 Datum。图书馆使用。
import CoreLocation
import UTMConversion

let utmCoordinate = UTMCoordinate(northing: 7034313, easting: 569612, zone: 32, hemisphere: .northern)
let datum = UTMDatum(equitorialRadius: 6378137, polarRadius: 6356752.3142)
let coordinate = utmCoordinate.coordinate(datum: datum)

可以通过将库输出与 Python 实现的结果进行比较来访问准确性。

如果您对结果不满意,您可以随时修改源代码,特别是以下文件,其中横轴墨卡托投影(硬数学)是:

https://github.com/wtw-software/UTMConversion/blob/master/UTMConversion/TMCoordinate.swift

关于swift - 从一个 UTM 区域到另一个 UTM 区域的投影点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59214532/

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