两个地理位置的曼哈顿距离
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个地理位置的曼哈顿距离相关的知识,希望对你有一定的参考价值。
假设我有两个以纬度和经度表示的位置。位置1:37.5613
,126.978
位置2:37.5776
,126.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函数计算矩阵中两两元素的曼哈顿距离