【问题标题】:Add distance to a latitude or longitude将距离添加到纬度或经度
【发布时间】:2017-10-05 14:37:47
【问题描述】:

假设我的纬度为 38.802610,经度为 -116.419389,我希望能够为其添加距离,例如 20 英里。

到目前为止,我已经想出了一个关于如何做到这一点的粗略想法

  • 首先,算出 1° 纬度有多少英里,例如 30 英里

  • 然后,除以它:

    • 1 / 30 = 0.033333
  • 将它添加到我的原始纬度以获得我的最大纬度°:
    • 38.802610 + 0.033333 = 38.8355943
  • 将它减去我的原始纬度以获得我的最小纬度°:
    • 38.802610 - 0.033333 = 38.769277

但这是有缺陷的,因为似乎没有直接转换经度,因为从我读到的计算不同。

最终,我需要能够找出:

  • 最大纬度(我当前的纬度 + 给定距离,例如 20 英里)
  • 最小纬度(我当前的纬度 - 给定距离,例如 20 英里)
  • 最大经度(我当前的经度 + 给定距离,例如 20 英里)
  • 最小经度(我当前的经度 - 给定距离,例如 20 英里)

任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 你看过这篇文章了吗movable-type.co.uk/scripts/latlong.html
  • Haversine 公式应该能帮到你
  • 我确实看过那篇文章,但我对这一切都很陌生,所以我不确定如何将其应用于我的情况?

标签: database coordinates latitude-longitude coordinate


【解决方案1】:

线性距离(例如 20 英里或 32186.88 m)不能直接转换为以纬度或经度为单位的距离,因为地球不是平坦的。但是,有两种直接转换方法,您可以尝试在给定线性距离和方位角的情况下将一个点投影到另一点。

方法 1 是假设一个球形地球,使用Movable Type's "destination point given distance and bearing from start point"。网站上描述了基础方程。南北方向的纬度差异相同,东西方向的经度差异相同,因此您可以至少进行两次计算来确定所有四个 min/max 和 lat/long 组合。

方法2是假设一个地球椭球体(也称为旋转椭球体),并用GeographicLib计算一个直接测地线 ,它绑定到几种编程语言。纬度差异南北方向略有不同,但东西方向相同,因此您至少可以进行三个计算。或者只是假设南北方向的差异大致相同,只需进行两次计算。该方法具有亚毫米级精度。

【讨论】:

  • 等等,地球不平?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
  • 2014-01-01
相关资源
最近更新 更多