gpt4 book ai didi

python - 为什么使用 haversine 地理定位公式的曼哈顿距离不准确? [Python]

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:33 28 4
gpt4 key购买 nike

我想计算 LAT、LNG 坐标对中的“曼哈顿距离”,也称为“城市街区距离”。

关注这篇文章Manhattan Distance for two geolocations我使用半正弦公式计算了距离:

source = (45.070060, 7.663708)
target = (45.068250, 7.663492)

enter image description here

这是我的计算:

    from math import radians, sin, asin, sqrt, atan2

# convert decimal degrees to radians
lat1, lon1, lat2, lon2 = map(radians, [source[0], source[1], target[0], target[1]])

#haversine formula for delta_lat
dlat = lat2 - lat1
a = sin(dlat / 2) ** 2
c = 2 * atan2(sqrt(a), sqrt(1-a)))
r = 6371
lat_d = c * r

# haversine formula for delta_lon
dlon = lon2 - lon1
a = sin(dlon / 2) ** 2
c = 2 * atan2(sqrt(a), sqrt(1-a))
r = 6371
lon_d = c * r


print lat_d + lon_d

问题是我的结果是 225 米,而 Google map 显示的是 270 米。

再次尝试计算之间的距离

source = (45.070060, 7.663708)
target = (45.072800, 7.665540)

enter image description here

我得到的结果是 508 米,而 Google map 显示是 350 米。

如果有人能帮助我理解这里的问题以及如何改进这个远远不能接受的解决方案,我将不胜感激。谢谢!

最佳答案

我自己可能明白了,答案是,如果你看一下这些图片,它们与上面发布的原始问题相同,你就会明白我已经实现的半正弦方法,计算距离为红色图像中的线。出于这个原因,在第一种情况下,我获得了 225m 而不是 270m(较低,因为红线是三角形的斜边),而在第二种情况下,我获得了 508m 而不是 350(较高,因为三角形的腿的总和)。因此,解决这个问题的方法应该是逆时针旋转城市 map ,使蓝色虚线与笛卡尔坐标系的 Y 轴对齐。

任何建议将不胜感激。谢谢 enter image description here enter image description here

关于python - 为什么使用 haversine 地理定位公式的曼哈顿距离不准确? [Python],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43700616/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com