Utilitaires
Scripts
Divers
Jeux
Rechercher
Quillevere.net
Réflexions informatiques

Calculer la distance entre deux villes

20/08/2009
SQL
Voici une formule de calcul efficace, trouvée sur Internet et adaptée en PHP, permettant de calculer la distance en kilomètres entre deux villes, à partir de leurs latitudes et longitudes :

// Brest
$lat_1=48.4;
$long_1=-4.4833333;

// Baud
$lat_2=47.8666667;
$long_2=-3.0166667;

$pi=pi(); // 3.1415926538
$val=6371*acos(cos($pi*$lat_1/180)*cos($pi*$lat_2/180)*cos($pi*$long_1/180)*cos($pi*$long_2/180)
       + cos($pi*$lat_1/180)*sin($pi*$long_1/180)*cos($pi*$lat_2/180)*sin($pi*$long_2/180)
       + sin($pi*$lat_1/180)*sin($pi*$lat_2/180));
echo $val."!";


Le même genre de fonction peut s'adapter en MySQL :

SELECT ville_geoloc_longitude, ville_geoloc_latitude, ville_nom,
   6371*acos(cos(PI()* P1 /180)*cos(PI()*ville_geoloc_latitude/180)*cos(PI()* P2 /180)*cos(PI()*ville_geoloc_longitude/180)
       + cos(PI()* P1 /180)*sin(PI()* P2 /180)*cos(PI()*ville_geoloc_latitude/180)*sin(PI()*ville_geoloc_longitude/180)
       + sin(PI()* P1 /180)*sin(PI()*ville_geoloc_latitude/180))
   AS distance
   FROM tab_Adresses_Villes  


Pour cette fonction, il faut disposer d'une table contenant les positions géographiques des villes et remplacer P1 par la latitude de la ville en cours et P2 par sa longitude.

Attention, sur SQL Server, des erreurs peuvent être créées si les valeurs ne sont pas réelles, il faut forcer à obtenir du réel en faisant CONVERT(float, P1)
Dernière modification le 08/03/2019 - Quillevere.net

Rechercher sur le site

rss RSS info Informations