【问题标题】:Convert latitude, longitude between two points to x,y coordinates将两点之间的纬度、经度转换为 x,y 坐标
【发布时间】:2018-01-10 20:24:05
【问题描述】:

我很抱歉问这个问题,因为它已经回答了好几次了。我阅读了其中的许多内容,但我仍然无法将其与我的案例联系起来。

我有两个纬度和经度坐标,我需要将它们映射到 x-y 平面(以米为单位),其中一个是原点。

使用库函数,我得到了它们之间的距离。我尝试使用勾股定理来解决 x 和 y:

d = 2 个坐标之间的距离

y = 111.320 * (lat2 - lat1)

x = sqrt(d^2 - y^2)

问题在于这不是很准确,因为 111.320 是以公里为单位的平均值,而 lat2 和 lat1 之间的距离以米为单位(通常小于 10),这严重扭曲了结果。

有没有更准确的方法来做到这一点?任何帮助将不胜感激。

【问题讨论】:

  • 你有距离,用 'atan' 函数得到角度,然后将 cos(angle)*distance 添加到 PlaneX 和 sin(angle)*distance 到 PlaneY。
  • 这里的问题是您没有考虑球极坐标系的固有曲率。你们很多人想要的是 墨卡托投影mathworld.wolfram.com/MercatorProjection.html
  • 我找到了一个似乎对这个问题进行了广泛描述的参考资料,但也许你也遇到过这个问题:movable-type.co.uk/scripts/latlong.html
  • @meowgoesthedog 感谢您的链接。我正在处理的距离通常小于 10m。曲率对数值影响大吗?
  • @dmr07 如果他们总是那么短,那么根本不会(除非你在两极)

标签: math gps geometry mapping


【解决方案1】:

如果纬度差异不大,那么你可以使用这个近似的平行距离:

dx = 111.111 * (lon2 - lon1) * Cos(AverageLatitude)

【讨论】:

  • 我遇到过这个公式。我担心 111.111 是以公里为单位的近似值,错误率约为 0.3。这是否意味着我可以离开 300m。 (我的距离只有10m左右)。
  • 不,子午弧长的误差是相对的,因此与其他原因(坐标检测误差)相比,由于这个原因造成的距离误差应该可以忽略不计(毫米)
【解决方案2】:

您可以使用具有亚毫米精度的transverese mercator projection 的简单实现。只需根据您的需要调整原点经度和错误的北向和东向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2011-12-05
    相关资源
    最近更新 更多