LINUX:API de géolocalisation

De WIKI sur Linux (ADB)
Révision datée du 25 février 2021 à 21:50 par Adebast (discussion | contributions) (Page créée avec « __FORCETOC__ =But= Nous allons décrire ici l'utilisation de ce programme. Cet API recherche les rues, les communes et leurs coordonnées géographiques répondant à dive… »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

But

Nous allons décrire ici l'utilisation de ce programme. Cet API recherche les rues, les communes et leurs coordonnées géographiques répondant à divers critères.


Mise en place

Les sources sont téléchargeables via le lien ci-dessous:

Télécharger le fichier ZIP contenant les scripts PHP de l'API

Il faut le dézipper avec la commande suivante:

unzip Localisation.zip

Le répertoire "localisation" est créé. Il contient des scripts PHP et le sous-répertoire "public". Ce sous-répertoire ne contient que le script "recherche.php". Au niveau du serveur WEB, seul ce script est accessible à partir d'Internet. C'est ce script qu'il faut appeler accompagné de paramètres.


Configuration

Cet outil va interroger la base de données créé lors des étapes précédentes. Le fichier "localisation/config.php" doit être configuré en conséquence.

Voici le contenu de ce fichier:


<?php
// SQL
// Indiquez les paramètres de votre connexion SQL
 $conf['db_host'] = 'localhost';
 $conf['db_nom'] = 'dblocalisation';
 $conf['db_user'] = 'usergeo';
 $conf['db_password'] = 'MOTDEPASSE';
?>

Dans cet exemple:

  • "localhost" est le nom de la machine qui héberge le serveur MariaDB
  • "dblocalisation" est le nom du schéma de la base de données MariaDB
  • "usergeo" est le nom d'utilisateur MariaDB. Il faut restreindre son accès au schéma ci-dessus et qu'il n'aie que le privilège "SELECT"
  • "MOTDEPASSE" est le mot de passe (à changer !!!) de l'utilisateur "usergeo"

Tous ces paramètres sont à adapter selon votre infrastructure.


Utilisation

Le script a besoin de divers paramètres:

  • "type": type de recherche. Actuellement il n'y a que le type "street" qui est repris par défaut.
  • "maximumResponses": nombre maximum de résultats. Il est limité à 50 et par défaut, il vaut 20.
  • "terr": restriction de la recherche à un/des pays et/ou à un/des départements. Le format répond au canevas suivant: ; ;... Il est conseillé de fournir au moins un code de pays ou un code de département sinon la recherche prend plus de temps. Si plusieurs départements/pays sont requis, ils sont séparés par un point virgule (";"). Exemples:
FR 75;BE 90000 (pour le département de Paris et la province de Namur)
29 (pour le  département du Finistère)
  • "text": recherche en fonction du nom de la rue, du nom de la commune et du code postal. Ces critères peuvent être partiel; par exemple, pour rechercher "rue du Baty de l'Espagnol", on peut effectuer la recherche sur base de "espagno". Le format répond au canevas suivant: <rue>: <commune> Au moins un des trois critères doit être fourni. Les accents et la case n'ont pas d'importance. Exemple:
Baty:fosse (pour "Rue du Baty:5070 Fosses-la-Ville")


Exemples d'appel avec l'utilitaire "curl":

curl "http://localhost/localisation/recherche.php?type=street&maximumResponses=5&terr=BE+90000&text=Baty:5070+Fosses"


Résultats

L'application retourne une liste de résultat limitée au nombre mentionné, sous format JSON. Le nom des zones retournées sont assez explicites dans l'exemple ci-dessous pour nécessiter une explication.

La commande ci-dessus donne:


{"status":"OK",
 "results":[
  {
   "city":"Fosses-la-Ville",
   "street":"Rue Baty de l'Espagnole",
   "countrycode":"BE",
   "regioncode":"03000",
   "departementcode":"90000",
   "zipcode":"5070",
   "x":"50.376691579959726",
   "y":"4.698403591401368",
   "fulltext":"Rue Baty de l'Espagnole, BE 5070 Fosses-la-Ville"
  },
  {
   "city":"Fosses-la-Ville",
   "street":"Rue du Baty",
   "countrycode":"BE",
   "regioncode":"03000",
   "departementcode":"90000",
   "zipcode":"5070",
   "x":"50.37682283553043",
   "y":"4.707929223409696",
   "fulltext":"Rue du Baty, BE 5070 Fosses-la-Ville"
  },
  {
   "city":"Fosses-la-Ville",
   "street":"Rue Haut-Baty",
   "countrycode":"BE",
   "regioncode":"03000",
   "departementcode":"90000",
   "zipcode":"5070",
   "x":"50.42369167603692",
   "y":"4.648798462403482",
   "fulltext":"Rue Haut-Baty, BE 5070 Fosses-la-Ville"
  }
 ]
}




->retour à la page du menu sur l'API de GéoLocalisation