Python 两点之差

Python 两点之差,python,latitude-longitude,Python,Latitude Longitude,我正试图编写一个Python函数来确定两个地理点之间的距离是否在5米以内。我有两个坐标,比如:13.09073,-86.3560933和13.09237,-86.3576067。我尝试使用Haversine函数,但我不确定是否得到了正确的值 这是迄今为止的功能: from math import sin, cos, pow, atan2, sqrt def haversine(pos1, pos2): lat1 = float(pos1['lat']) long1 = flo

我正试图编写一个Python函数来确定两个地理点之间的距离是否在5米以内。我有两个坐标,比如:13.09073,-86.3560933和13.09237,-86.3576067。我尝试使用Haversine函数,但我不确定是否得到了正确的值

这是迄今为止的功能:

from math import sin, cos, pow, atan2, sqrt


def haversine(pos1, pos2):
    lat1 = float(pos1['lat'])
    long1 = float(pos1['long'])
    lat2 = float(pos2['lat'])
    long2 = float(pos2['long'])
    d_lat = (lat2 - lat1)
    d_long = (long2 - long1)

    a = pow(
        sin(d_lat / 2), 2) + cos(lat1) * cos(lat2) * pow(sin(d_long / 2), 2)
    c = 2 * atan2(sqrt(a), sqrt(1 - a))
    km = 6367 * c
    print 'km %f' % km
    print 'mts %f' % (km * 1000)


print haversine(
    {'lat': 0.0, 'long': 0.0}, {'lat': 0.0, 'long': 0.0000007852992})

这个奇怪的数字应该是“5米”的距离。我删除了degree_到_rad的转换功能,因为我认为我的格式已经是弧度了。

您将无法对照“坐标中的5米”进行检查,因为相距5m的点的lat/lon值的差异将根据球体表面上的位置而变化

您可以尝试根据中的值测试输出。将LAT和LON存储为弧度不是很常见,我肯定会检查这一点

计算似乎没有任何问题,但您可能是想:

return km

haversine
函数的末尾,以便
打印haversine(…)
实际执行一些有意义的操作

如果您不确定是否获得了正确的值,请发布示例或代码。oefe的可能副本可能是。但我只想知道坐标中5米是多少,所以我想基于该值应用条件
13.09073,-86.3560933
13.09237,-86.3576067
0.0,0.0
0.0,0.0000007852992
点之间的关系。你想评估什么?没有关系,这些是我正在测试的样本谷歌地图链接使用哪种格式?。这是一个测试链接:。我可以看到-84.0997365和9.9330108。它们在度上吗?这些绝对是度。好的,我将把度到弧度的转换添加回函数中。非常感谢。