两个地理位置的曼哈顿距离

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个地理位置的曼哈顿距离相关的知识,希望对你有一定的参考价值。

假设我有两个以纬度和经度表示的位置。位置1:37.5613126.978位置2:37.5776126.973

如何使用曼哈顿距离计算距离?

编辑:我知道计算曼哈顿距离的公式,如Emd4600所说的回答是|x1-x2| - |y1-y2|,但我认为这是笛卡尔式的。如果可以应用那个直接的|37.5613-37.5776| + |126.978-126.973|结果的距离单位是多少?

答案

给定p1(x1, y1)p2(x2, y2)的飞机,计算曼哈顿距离的公式是|x1 - x2| + |y1 - y2|。 (即纬度和经度之间的差异)。所以,在你的情况下,它将是:

|126.978 - 126.973| + |37.5613 - 37.5776| = 0.0213

编辑:正如你所说,这将给我们纬度 - 经度单位的差异。基于this webpage,我认为您必须将其转换为公制系统。我没有尝试过,所以我不知道它是否正确:

首先,我们得到纬度差异:

Δφ = |Δ2 - Δ1|
Δφ = |37.5613 - 37.5776| = 0.0163

现在,经度差异:

Δλ = |λ2 - λ1|
Δλ = |126.978 - 126.973| = 0.005

现在,我们将使用haversine公式。在网页上它使用a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2),但这会给我们一个直线距离。因此,为了实现曼哈顿距离,我们将分别进行纬度和经度距离。

首先,我们得到纬度距离,好像经度是0(这就是为什么公式的很大一部分被省略):

a = sin²(Δφ/2)
c = 2 ⋅ atan2( √a, √(1−a) )
latitudeDistance = R ⋅ c // R is the Earth's radius, 6,371km

现在,经度距离,就像纬度为0:

a = sin²(Δλ/2)
c = 2 ⋅ atan2( √a, √(1−a) )
longitudeDistance = R ⋅ c // R is the Earth's radius, 6,371km

最后,只需加起来|latitudeDistance| + |longitudeDistance|

以上是关于两个地理位置的曼哈顿距离的主要内容,如果未能解决你的问题,请参考以下文章

R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离dist函数计算矩阵中两两元素的曼哈顿距离

如何找到两个平行矩形之间的最小出租车/曼哈顿距离?

Python编程题:编程求两点之间的曼哈顿距离?

[模拟] aw3663. 打印数字菱形(模拟+图形打印+曼哈顿距离+找规律)

各种距离

bzoj 3170 Tjoi 2013 松鼠聚会 曼哈顿距离&&切比雪夫距离