Я пытаюсь написать функцию 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, так как я думаю, что мой формат уже находится на радианах.
Давайте посмотрим код! – dabillox
Если вы не уверены, что получаете правильное значение, отправьте примеры или код. –
Возможный дубликат [Как рассчитать расстояние между двумя точками долготы широты?] (Http://stackoverflow.com/questions/27928/how-do-i-calculate-distance-between-two-latitude-longitude-points) – oefe