小编mya*_*mar的帖子

用谷歌地图坐标计算欧几里得距离

我在我的 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)

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

java gis google-maps latitude-longitude coordinate-transformation

1
推荐指数
1
解决办法
7939
查看次数