Faire une recherche sur Geonames à partir de PHP
Geonames est une base de données géographiques sous licence Creative Commons qui contient plus de 8 millions d’éléments (villes, monument, parc, etc…).
Un webservice est mis à disposition afin de pouvoir récupérer tout un tas d’information facilement. Pour y accéder il suffit de créer un compte ici, tout est gratuit. Il y a une limite qui est très haute: 30 000 crédits par jour et 2000 crédits par heure. La taille du crédit change suivant le type de service web appelé, mais pour une recherche, un crédit = une requête.
Donc dans l’exemple qui suit nous allons rechercher « tour eiffel » et nous allons récupérer les coordonnés géographiques, ainsi que la traduction en Anglais.
Nous récupérerons les informations dans un XML.
$ville = "tour eiffel"; // On prépare la variable afin de supprimer les espaces: "tour+eiffel" $search = urlencode($ville); $url = 'http://api.geonames.org/search?q='.$search.'&maxRows=1&style=full&username=demo'; // On récupère le fichier XML à partir de l'URL $file = simplexml_load_file($url); // S'il y a des réponses if ( $file->totalResultsCount > 0 ) { // L'élément alternateName a un attribut pour définir la langue foreach ($file->geoname->alternateName as $alterName) { if ( $alterName['lang'] == "en" ) { $nomEN = $alterName; } else if ( $alterName['lang'] == "fr" ) { $nomFR = $alterName; } } $latitude = $file->geoname->lat; $longitude = $file->geoname->lng; }
Voila avec ce simple PHP on peut récupérer des informations sur une ville ou autre très rapidement.
Jetez un oeil au XML afin de voir toutes les informations potentiellement utilisables.