Formule de calcul entre 2 points WGS84 pour calculer la distance qui sépare ces deux points
Par placeoweb, jeudi 2 octobre 2008 à 12:39 :: General :: #150 :: rss
Formule permettant de calculer une distance orthodromique en kilomètres entre deux points A et B.
Faculté des Sciences, Département de Physique, I.P.N.A.S. (www.ipnas.org)
Cette faculté publie un document vraiment intéressant sur le calcul de la distance entre deux points dont voici l'essentiel :
Calcul de la distance entre deux points
La distance mesurée le long d’un arc de grand cercle entre deux points dont on connaît les coordonnées { lat1,lon1} et {lat2,lon2} est donnée par :
d=acos(sin(lat1)*sin(lat2)+cos(lat1)*cos(lat2)*cos(lon1-lon2))
Une formule, mathématiquement équivalente, mais moins sujette aux erreurs d’arrondis pour les courtes distances est :
d=2*asin(sqrt((sin((lat1-lat2)/2))^2 + cos(lat1)*cos(lat2)*(sin((lon1- lon2)/2))^2))
N.B.: Dans un tableur classique, la différence entre les deux formules de calcul est inférieure à 10-9 km, même pour de petites distances.
La valeur de d est obtenue dans une unité correspondant au rayon de la sphère terrestre (R = 6366 km). Si l’arc cosinus rend une valeur en radiant (ce qui le cas dans la plupart des tableurs), il suffit de multiplier le résultat par R pour obtenir la valeur de d en km.
Voici mon implémentation en PHP :
<?php /* Format: DDD M/D/Y H:M:S 1.00 hrs Datum[106]: WGS 84 ID Date Time Latitude Longitude Altitude km L ACTIVE LOG T 06/09/2003 09:52:47 50.19473 6.83212 454.8 0.00000 T 06/09/2003 09:53:58 50.1948 6.83244 452.4 0.02405 T 06/09/2003 09:54:02 50.19381 6.83386 452.9 0.14935 */ $r = 6366; $lat1 = 50.19473; $lon1 = 6.83212; $lat2 = 50.1948; $lon2 = 6.83244; $ds= acos(sin(deg2rad($lat1))*sin(deg2rad($lat2))+cos(deg2rad($lat1))*cos(deg2rad($lat2))*cos(deg2rad($lon1-$lon2))); $dsr = $ds * $r; echo "Entrées : lat1:$lat1 lon1:$lon1 lat2:$lat2 lon2:$lon2 Sorties : ds:$ds dsr:$dsr(km) "; ?>
lion1906.com
Formule permettant de calculer une distance orthodromique en kilomètres entre deux points A et B :
Ortho(A,B)=6371 x acos[cos(LatA) x cos(LatB) x cos(LongB-LongA)+sin(LatA) x sin(LatB)]
Avec 6371 qui correspond au rayon de la Terre en Km.
6371 n'est pas une valeur exacte: la Terre n'est pas une sphère parfaite, mais plutôt une sphéroïde. 6371 correspond au rayon moyen (plus d'infos sur la Terre).
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.