【问题标题】:calculate Euclidean distance with Google maps coordinates用谷歌地图坐标计算欧几里得距离
【发布时间】:2015-03-11 18:12:51
【问题描述】:

我在我的 java 项目中使用 Google Maps API v3。我需要找到两点之间的欧几里得距离。但是当我使用普通公式计算欧几里得距离时,结果有点错误:

例如:

假设我有两点 纽约 (43.2994285, -74.2179326)斯德哥尔摩 (59.3293235, 18.0685808) 我想要 计算这两点的欧几里得距离:

双倍距离 = Math.sqrt(Math.pow(43.2994285 - 59.3293235, 2) + Math.pow(-74.2179326 - 18.0685808, 2)); 距离 = 93.66834091217483

结果明显错误。

然后我意识到起始坐标不是笛卡尔坐标系中的(0,0)。实际上 开始是 51° 28' 38" N,0° 00' 00" W (WGS 84)。参考点是格林威治 (51.4825766, -0.0076589)

所以计算新坐标的过程是这样的:

纽约 (|51.4825766 - 43.2994285|, |-0.0076589- (-74.2179326)|) = 纽约 (8.1831481, 74.2102737)

斯德哥尔摩 (|51.4825766 - 59.3293235|, |-0.0076589 - 18.0685808|) = 斯德哥尔摩 (7.8467469, 18.0762397)

然后应用欧几里得距离的公式。我的问题是这是一种正确的方法,还有其他方法吗?

【问题讨论】:

  • 为什么你认为答案是错误的?您是以度为单位计算的。
  • 但是根据本站的实际距离:freemaptools.com/how-far-is-it-between.htm从纽约到斯德哥尔摩是6326.564公里。
  • 欧式距离只适用于平面
  • 所以当我用谷歌地图坐标给你两个点时,你找不到欧几里得距离?
  • 你可以,但不能通过那个公式。一方面,经度的长度不同于纬度的长度。

标签: java google-maps gis latitude-longitude coordinate-transformation


【解决方案1】:

您需要使用Haversine 公式计算两点之间的great-circle distance——即地球表面上的最短距离——参见此处的描述http://www.movable-type.co.uk/scripts/latlong.html

如果您需要使用欧几里德距离,也可以选择(引用 here

如果两个点彼此靠近,例如在同一个城市, 用直线估计大圆 经纬度空间会产生最小的误差,而且会很大 计算速度更快。一个小问题是长度 经度的度数取决于纬度:度数 经度在赤道上跨越 111 公里,但在北纬 60° 处有一半。 对此进行调整很容易:将经度乘以余弦 纬度。然后你可以取两者之间的欧几里得距离 两点,乘以度数:

distance(lat, lng, lat0, lng0):
    deglen := 110.25
    x := lat - lat0
    y := (lng - lng0)*cos(lat0)
    return deglen*sqrt(x*x + y*y)

为了进一步加快速度,您可以使用多项式逼近来逼近 cos 计算。

【讨论】:

  • 是不是太复杂了。我知道这个公式,但有没有其他简单的方法,我想用欧几里得公式计算。
  • 不,就是这样。欧几里得距离会给你在能够穿过地球时的距离,而不是地球表面的最短距离
  • 我能否以某种方式更改两个坐标(纽约、斯德哥尔摩)并使用格林威治坐标计算纽约和斯德哥尔摩的新坐标,我们可以在其上使用欧几里得公式。
  • 我们能否将谷歌地图视为二维平面,将格林威治坐标作为我们坐标系的起始坐标,然后将所有坐标放入格林威治点的第一象限?
【解决方案2】:

由于二维表面中的 -curvature- 概念,您的度量将不起作用。

欧几里得度量仅适用于计算地球表面上非常“短”的距离,但对于非常大的距离,例如您的示例中的距离,需要考虑曲率效应,因此您必须使用符合要求的度量到球面的几何形状:Haversine Formula。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-31
    • 2015-09-23
    • 1970-01-01
    • 2013-04-07
    • 2020-11-29
    • 2018-02-14
    • 2019-03-08
    相关资源
    最近更新 更多