为什么曼哈顿距离与地理定位的胡萝卜素公式不准确? [蟒蛇]

时间:2017-04-29 21:22:26

标签: python geolocation coordinates distance haversine

我想计算" MANHATTAN DISTANCE"也被称为"城市街区距离"在与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米,而谷歌地图说的是270米。

再次尝试计算

之间的距离
source = (45.070060, 7.663708)
target = (45.072800, 7.665540)

enter image description here

我获得的结果是508米,而Google地图显示的是350米。

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

1 个答案:

答案 0 :(得分:2)

我可能对自己有所了解,答案是,如果你看一下原始问题中上面发布的这些图片,你就可以理解我已经实现的半影方法,计算距离为RED在图像中的LINE。出于这个原因,在第一种情况下,我得到225米而不是270米(较低,因为红线是三角形的斜边),而在第二种情况下,我获得了508米而不是350米(更高,因为三角形的腿的总和)。因此,解决这个问题的方法应该是旋转城市地图计数器,以使蓝色线与笛卡尔参考的Y轴对齐。

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