Distance entre 2 villes, proximité

Soyez le premier à donner votre avis sur cette source.

Snippet vu 118 293 fois - Téléchargée 34 fois


Contenu du snippet

le but est de rechercher pour une ville donnée les villes les plus proches, la base de donnée des villes avec les coordonnées latitude et longitude (en degré décimal) peut être trouvé sur le net
- http://www.heavens-above.com
- http://www.astromedia.org/atlas/index.php LIEN HS
- http://gnswww.nga.mil/geonames/GNS/index.jsp
- http://earth-info.nga.mil/gns/html/cntry_files.html,
ou alors, demandez moi,
car j'ai eu beaucoup de mal à trouver un fichier assez complet
Le seul inconvénient c'est que ça ne donne pas le code postal (si quelqu'un trouve une telle base, qu'il me le fasse savoir, ça m'interresse)

Source / Exemple :


SELECT `ville`.`FULL_NAME_ND`,
(6366*acos(cos(radians($LAT))*cos(radians(`ville`.`LAT`))*cos(radians(`ville`.`LONG`)-radians($LONG))+sin(radians($LAT))*sin(radians(`ville`.`LAT`))))
as Proximite
from `ville` where `ville`.`CC1`='$pays'
order by Proximite
limit 1,5;

explications (derrière --)
--commande de sélection
SELECT 
--nom complet de la ville
`ville`.`FULL_NAME_ND`,
--formule de calcul (optimisée) de la distance entre la ville d'origine ($LAT et $LONG) et la ville dans la base (`ville`.`LAT` et `LONG`)
(6366*acos(cos(radians($LAT))*cos(radians(`ville`.`LAT`))*cos(radians(`ville`.`LONG`)-radians($LONG))+sin(radians($LAT))*sin(radians(`ville`.`LAT`))))
--on nomme le résultat "proximité"
as Proximite
--dans quelle table
from `ville` 
--condition
where 
--on sélectionne au moins le pays car ma base simplifiée contient quelques 3 500 000 villes du monde..
`ville`.`CC1`='$pays'
--trie par distance de la plus proche à la plus éloignée
order by Proximite
--on limite le résultat à 5 villes pour accélérer la requete
limit 1,5;

A voir également

Ajouter un commentaire Commentaires
Mercimerci
Messages postés
46
Date d'inscription
jeudi 4 mai 2006
Statut
Membre
Dernière intervention
22 mars 2011

@tooful,

Si tu ne veux pas passer par une base de donnée, tu peux utiliser le webservice de CitySearch-API ( http://www.citysearch-api.com ) qui liste les pays, régions et départements Français ou Belges.

Ce webservice te permet aussi de récupérer les villes françaises en fonction des premières lettres recherchées, par exemple.

Cela t'évite ainsi d'utiliser une base de donnée ou d'augmenter la taille de ta base qui est limitée chez certains hébergeurs.
Messages postés
2
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
2 juillet 2010

Merci FYAV, mais ca n'est pas aussi simple que ca, je ne trouve pas l'info sur http://www.heavens-above.com, mon acces internet professionel ne me laisse pas me connecter aux deux liens suivants, et finalement le dernier lien me donne pas mal d'infos mais pas de code postal. A vrai dire je me posais la meme question que vous vous posez dans la description.
Afficher les 26 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.