我想计算" MANHATTAN DISTANCE"也被称为"城市街区距离"在与LAT,LNG的坐标对中。
在这篇文章Manhattan Distance for two geolocations之后,我使用半正式公式计算了距离:
source = (45.070060, 7.663708)
target = (45.068250, 7.663492)
这是我的计算:
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米,而谷歌地图说的是270米。
再次尝试计算
之间的距离source = (45.070060, 7.663708)
target = (45.072800, 7.665540)
我获得的结果是508米,而Google地图显示的是350米。
如果有人能帮助我理解这里的问题以及如何改进这个远远不能被接受的解决方案,我将不胜感激。 谢谢!