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).