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.

Vus : 894
Publié par Maxime CHAILLOU : 11