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

标签 distance

假设我有两个由纬度和经度表示的位置。
位置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/

相关文章:

从两个向量 (n,1) 构建 R 距离矩阵

r - 全局地理距离栅格

python - Shapely中两个几何图形最近点的坐标

android - 相机焦距

objective-c - 经纬度中点到直线的最小距离

java - 每第 n 次优化时进行距离检查

postgresql - PostGis 距离计算

python - Pandas 根据函数返回单独的 DataFrame 值

java - 从一组坐标和距离计算新的 GPS 坐标?

python - GeoDjango:如何获得两点之间的距离?