假设我有两个由纬度和经度表示的位置。
位置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|
.
关于distance - 两个地理位置的曼哈顿距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32923363/