la traduzione in Python e' la seguente
-------------------------------------------------------------------------------
import math
def distanza(lat1,lon1,lat2,lon2):
la1 = math.radians(lat1)
la2 = math.radians(lat2)
lo1 = math.radians(lon1)
lo2 = math.radians(lon2)
dLat = la1-la2
dLon = lo1-lo2
a = math.sin(dLat/2)*math.sin(dLat/2)+math.sin(dLon/2)*math.sin(dLon/2)* math.cos(la1) * math.cos(la2)
c = 2*math.atan2(math.sqrt(a),math.sqrt(1-a))
dist = 6378137*c
return dist
print distanza(45,11,46,10)
-------------------------------------------------------------------------------
lo script calcola la distanza tra i due punti a coordinate lat=45°,lon=11° e lat=46°,lon=10° con il risultato di una distanza di 135786.09 metri.
L'errore di calcolo derivante dall'impiego della formula e' stimato in circa allo 0.3% il che equivale a 3 m per chilometro
Il valore di 6378137 m e' il raggio terrestre secondo il sistema WGS-84.
Il calcolo sopra ripòrtato e' impostato considerando la terra sferica; per una maggiore precisione e' necessario usare la formula ellissoidica di Vincenty (qui)
Nessun commento:
Posta un commento