webleads-tracker

Geonames suite

Geonames suite

Geonames suite est une librarie PHP permettant de travailler avec une base de donnée geonames locale.

Fonctionnalitées

Geonames-suite implémente ces fonctionnalitées :
  • Récupération localisée des villes d'un pays commencant par une certaine chaine de caractère.
  • Récupération des villes d'une zone admin1 (Région) d'un pays.
  • Récupération des villes d'une zone admin2 (Département) d'un pays.
  • Récupération des zones admin1 d'un pays.
  • Récupération des zones admin2 d'une zone admin1.
  • Récupération des informations d'un geonameid (ville, region, departement).
  • Récupération de la liste des pays.
Toutes ces informations peuvent être localisées si la base de donnée geonames contient les enregistrements dans la langue désirée.

Ex : Une recherche de ville commencant par "Parigi" en france avec le parametre language_iso_code égale à "it" retournera bien la ville "Paris".

Installation

Vous avez besoin de mettre en place une base de données geonames sur un serveur Mysql.
Je vous suggère d'utiliser GeoNames-MySQL-DataImport, un projet qui télécharge et met en place la base de données geonames.

La deuxième étape est de mettre en place les index sur les tables MySQL afin d'accroitre la vitesse de traitement des requètes SQL.

ALTER TABLE `admin1CodesAscii` ADD INDEX `code` USING BTREE(`code`);
ALTER TABLE `alternatename` ADD INDEX `alternateName` USING BTREE(`alternateName`);
ALTER TABLE `alternatename` ADD INDEX `alternateName_isoLanguage` USING BTREE(`isoLanguage`, `alternateName`);
ALTER TABLE `alternatename` ADD INDEX `geonameid` USING BTREE(`geonameid`);
ALTER TABLE `alternatename` ADD INDEX `isoLanguage_2` USING BTREE(`isoLanguage`);
ALTER TABLE `countryinfo` ADD INDEX `iso_alpha2` USING BTREE(`iso_alpha2`);
ALTER TABLE `geoname` ADD INDEX `alternatenames` USING BTREE(`alternatenames`);
ALTER TABLE `geoname` ADD INDEX `fcode` USING BTREE(`fcode`, `country`, `admin1`);
ALTER TABLE `geoname` ADD INDEX `fcode_2` USING BTREE(`fcode`, `country`, `admin1`, `admin2`);
ALTER TABLE `geoname` ADD INDEX `name` USING BTREE(`name`);

Utilisation

Configuration

Afin d'utiliser Geonames-suite vous devez passer au constructeur deux paramètres.
Le premier est un tableau avec les informations de connexion à la base de donnée et le second et le format dans lequel vous désirez recevoir les informations.

Il existe deux formats :
  • PHP : renvoi les resultats sous forme de tableau PHP
  • JSON : renvoi les resultats au format JSON
// include geonames class
include("geonames_suite.php");

$db_params['host'] = "localhost";
$db_params['login'] = "root";
$db_params['password'] = "secret";
$db_params['database'] = "geonames";


// $format="json";
$format="php";

$geonames=new Geonames_Suite($db_params,$format);



Exemples d'utilisation

Rechercher les dix plus grosses villes commencant par une chaine de caractère en france en utilisant le language italien :

$cities_result=$geonames->retrieveCityStartWith("parigi","fr","it",10);


Rechercher les regions de la france avec leurs noms en anglais :

$admin1_result=$geonames->retrieveAdmin1("fr","en");


Rechercher les département d'une region de la france avec leurs noms en anglais :

$admin2_result=$geonames->retrieveAdmin2("b2","fr","en");


Rechercher les villes d'une region de la france avec leurs noms en francais :

$cities_admin1_result=$geonames->retrieveAdmin1cities("b2","fr","fr");


Rechercher les villes d'un département de la france avec leurs noms en francais :

$cities_admin2_result=$geonames->retrieveAdmin2cities("b2","88","fr","fr");


Récuperer la liste des pays du monde :

$countries_list_result=$geonames->retrieveCountryList();


Récuperer les détails d'une region, d'un département ou d'une ville (population,latitude,longitude, etc) :

$city_details=$geonames->retrieveInformations("3030300","en");


Récuperer les détails d'un pays :

$country_details_result=$geonames->retrieveCountryInformations("fr");