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

Pri*_*lia 4 distance

假设我有两个以纬度和经度表示的位置.地点1: 37.5613,126.978 地点2: 37.5776,126.973

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

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

eri*_*c.m 6

给定一个p1at (x1, y1)p2at 的平面,(x2, y2)计算曼哈顿距离的公式是|x1 - x2| + |y1 - y2|.(即纬度和经度之间的差异).所以,在你的情况下,它将是:

|126.978 - 126.973| + |37.5613 - 37.5776| = 0.0213
Run Code Online (Sandbox Code Playgroud)

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

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

?? = |?2 - ?1|
?? = |37.5613 - 37.5776| = 0.0163
Run Code Online (Sandbox Code Playgroud)

现在,经度差异:

?? = |?2 - ?1|
?? = |126.978 - 126.973| = 0.005
Run Code Online (Sandbox Code Playgroud)

现在,我们将使用该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
Run Code Online (Sandbox Code Playgroud)

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

a = sin²(??/2)
c = 2 ? atan2( ?a, ?(1?a) )
longitudeDistance = R ? c // R is the Earth's radius, 6,371km
Run Code Online (Sandbox Code Playgroud)

最后,加起来吧|latitudeDistance| + |longitudeDistance|.