Я хочу вычислить «MANHATTAN DISTANCE», также называемую «CITY BLOCK DISTANCE» среди пар координат с LAT, LNG.
После этого сообщения Манхэттенское расстояние для двух геолокаций я вычислил расстояние, используя формулу гаверсинуса:
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 м, а Google Maps говорит 270 м.
Попытка снова вычислить расстояние между
source = (45.070060, 7.663708)
target = (45.072800, 7.665540)
результат, который я получил, составляет 508 м, в то время как Google Maps говорит о 350 м.
Буду признателен, если кто-нибудь поможет мне понять, что здесь не так и как улучшить это решение, которое далеко не приемлемо. Благодарю вас!