Utilitaires
Jeux
Paroles
Textes
Forum
Livre d'or
Index des forums 

Index des forums


Dossier 

Base de connaissances


Dossier Groupe "Internet / PHP"
Se connecter
Répondre
Trouver un message :
Rechercher
Jamais inscrit sur ce forum
Identifiant (pseudo) :
Mot de passe :
Courriel :
Ville/pays (facultatif) :
Attention, si vous utilisez Hotmail/Live, vous risquez de ne pas pouvoir vous inscrire car ce fournisseur bloque exagérément les messages.
M'inscrire
Déjà inscrit sur ce forum
Identifiant :
Mot de passe :
Me connecter
Déjà inscrit mais sans mot de passe
Vous avez perdu votre mot de passe ?
Vous pouvez en recevoir un autre en indiquant ci-dessous l'adresse du courriel utilisé lors de l'inscription.
Mon courriel :
Envoyer courriel

Calculer la distance entre deux villes


   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.

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

el_juky [Administrateur] le 20/08/2009

Citer
© Eric Quillévéré (janvier 2000 - mars 2010) Inspiré d'un design de Zwatla + Lagouache
Valid CSS! Valid HTML 4.01 Transitional