我正在尝试编写一个 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_to_rad 的转换功能,因为我认为我的格式已经在弧度上。