LINUX:API de géolocalisation

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

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


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. Il permet d'afficher la liste des pays concernés et d'effectuer des recherches sur les départements (FR) et les provinces (BE).


Mise en place

Les sources sont téléchargeables via le lien ci-dessous compatible pour PHP 8.0:

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

Diverses recherches sont possibles:

  • La rue (street)
  • La commune (city)
  • Le département (FR) ou la province (BE) (department)
  • Le pays (country)

Entre parenthèses, vous trouvez le mot clé à utiliser pour l'argument "type".

Les résultats retournés sont sous forme d'une liste, limitée à 20 par défaut. Par défaut, une sortie au format JSON est fournie mais une sortie brute au format HTML est possible dans un but de vérification plus facile.

Le script a besoin de divers paramètres; tous ne sont pas tous nécessaires ou sont optionnels en fonction du type de recherche:

  • "type": type de recherche. Quatre valeurs sont possible comme décrite ci-dessus: street, city, department et country. Le type "street" est utilisé par défaut.
  • "trace": si une valeur quelconque est fournie, une sortie brute HTML remplace la sortie au format JSON. Ce paramètre est optionnel.
  • "maximumResponses": nombre maximum de résultats. Il est limité à 50 et par défaut, il vaut 20.
  • "terr": permet de préciser le pays et/ou le département de recherche et dépend de la variable 'type" (voir détails).
  • "text": comprend la partie concernant la recherche; il reprend pour partie, le champs à rechercher et dépend de la variable 'type" (voir détails).


Recherche sur la rue (type=street)

Paramètrage

  • Le paramètre "terr" a le format général suivant:
<code du pays>:<code du département>;<code du pays>:<code du département>;... 

Ce paramètre permet de restreindre la recherche à des parties de territoire. Le code du pays est optionnel mais il est fortement conseillé de fournir au moins un code départemental sous peine de lenteur. Si plusieurs couples de codes sont fournis, ils sont séparés par un point virgule (";"). Les combinaisons suivantes sont acceptées:

<code du pays>:<code du département> 
<code du pays> (déconseillé)
<code du département> 

Ces trois formats peuvent être combinées avec un point virgule comme séparateur.

Exemples:

FR:75;BE:90000 (pour le département de Paris et la province de Namur)
29 (pour le département du Finistère)
29;75 (pour les départements du Finistère et de Paris)


  • Le paramètre "text" sert à la recherche en fonction du nom de la rue, du nom de la commune et du code postal. Ces critères peuvent être partiels; par exemple, pour rechercher "rue du Baty de l'Espagnole", on peut effectuer la recherche sur base de "espagno". La case et les accents sont ignorés.

Le format répond au canevas suivant:

<rue>:<code du pays> <code postal> <commune> 

Le code du pays doit être accompagné du code postal. Le code du pays doit être complet au contraire des autres parties. Si seule la zone "rue" est spécifiée, la recherche s'étend à la commune comme si on avait un format "<rue>:<commune>".

Les combinaisons suivantes sont acceptées:

<rue et/ou commune> 
<rue>:<code du pays> <code postal> 
<rue>:<code du pays> <code postal> <commune> 
<rue>:<code postal> <commune> 
<rue>:<code postal> 
<rue>:<commune> 
 :<code du pays> <code postal> 
 :<code du pays> <code postal> <commune> 
 :<code postal> <commune> 
 :<code postal> 
 :<commune> 

Exemples pour "Rue du Baty:5070 Fosses-la-Ville":

Baty:fosse
fosse
baty:BE 5070
bat:507 la-ville

Evidemment ces recherches donneront aussi d'autres résultats en plus de celui attendu.

Exemples d'appel avec l'utilitaire "curl" via le serveur WEB:

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. Les résultats "x" et "y" correspondent à la longitude et à la latitude.

La commande ci-dessus donne:


{"status":"OK",
 "results":[
  {
   "city":"Fosses-la-Ville",
   "street":"Rue Baty de l'Espagnole",
   "countrycode":"BE",
   "regioncode":"03000",
   "departmentcode":"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",
   "departmentcode":"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",
   "departmentcode":"90000",
   "zipcode":"5070",
   "x":"50.42369167603692",
   "y":"4.648798462403482",
   "fulltext":"Rue Haut-Baty, BE 5070 Fosses-la-Ville"
  }
 ]
}


Recherche sur la commune (type=city)

Cette recherche est fort similaire à celle de la rue mais en supprimant dans la recherche, la rue.


Paramètrage

  • Le paramètre "terr" a le format général suivant:
<code du pays>:<code du département>;<code du pays>:<code du département>;... 

Ce paramètre permet de restreindre la recherche à des parties de territoire. Le code du pays est optionnel mais il est fortement conseillé de fournir au moins un code départemental sous peine de lenteur. Si plusieurs couples de codes sont fournis, ils sont séparés par un point virgule (";"). Les combinaisons suivantes sont acceptées:

<code du pays>:<code du département> 
<code du pays> (déconseillé)
<code du département> 

Ces trois formats peuvent être combinées avec un point virgule comme séparateur.

Exemples:

FR:75;BE:90000 (pour le département de Paris et la province de Namur)
29 (pour le département du Finistère)
29;75 (pour les départements du Finistère et de Paris)


  • Le paramètre "text" sert à la recherche en fonction du nom de la commune et du code postal. Ces critères peuvent être partiels; par exemple, pour rechercher "Fosses-la-Ville", on peut effectuer la recherche sur base de "fosse". La case et les accents sont ignorés.

Le format répond au canevas suivant:

<code du pays> <code postal> <commune> 

Le code du pays doit être accompagné du code postal. Le code du pays doit être complet au contraire des autres parties.


Les combinaisons suivantes sont acceptées:

<code du pays> <code postal> 
<code du pays> <code postal> <commune> 
<code postal> <commune> 
<code postal> 
<commune> 

Exemples pour "5070 Fosses-la-Ville":

fosse
BE 5070
507 la-ville

Evidemment ces recherches donneront aussi d'autres résultats en plus de celui attendu.

Exemples d'appel avec l'utilitaire "curl" via le serveur WEB:

curl "http://localhost/localisation/recherche.php?type=city&maximumResponses=5&terr=BE:90000&text=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. Les résultats "x" et "y" correspondent à la longitude et à la latitude.

La commande ci-dessus donne:


{"status":"OK",
 "results":[
  {
   "city":"Fosses-la-Ville",
   "countrycode":"BE",
   "regioncode":"03000",
   "departmentcode":"90000",
   "zipcode":"5070",
   "x":"50.391252493078746",
   "y":"4.670773360711039",
   "fulltext":"BE 5070 Fosses-la-Ville"
  }
 ] 
}


Recherche sur le département ou la province (type=department)

Paramètrage

  • Le paramètre "terr" a le format général suivant:
<code du pays> 

Il est optionnel.

Exemples:

FR (pour France)
  • Le paramètre "text" sert à la recherche en fonction du nom du département ou de la province ou son code. Ce critère peut être partiel; par exemple, pour rechercher "Finistère", on peut effectuer la recherche sur base de "fi". La case et les accents sont ignorés.

Le format répond au canevas suivant:

<département> 

ou

<code du département> 

Exemples pour "Finistère":

fi
9
29

Evidemment ces recherches donneront aussi d'autres résultats en plus de celui attendu.

Evidemment ces recherches donneront aussi d'autres résultats en plus de celui attendu.

Exemples d'appel avec l'utilitaire "curl" via le serveur WEB:

curl "http://localhost/localisation/recherche.php?maximumResponses=15&type=department&text=fi&terr=FR"


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":[
  {
   "countrycode":"FR",
   "country":"France",
   "regioncode":"53",
   "region":"Bretagne",
   "departmentcode":"29",
   "department":"Finistère",
   "fulltext":"FR 29 Finistère"
  }
 ] 
}


Liste des pays (type=country)

Paramètrage

Les paramètres "terr" et "text" ne sont pas pris en compte.

Exemples d'appel avec l'utilitaire "curl" via le serveur WEB:

curl "http://localhost/localisation/recherche.php?maximumResponses=15&type=country"


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":[
  {
   "countrycode":"BE",
   "country":"Belgique",
   "fulltext":"BE Belgique"
  },
  {
   "countrycode":"FR",
   "country":"France",
   "fulltext":"FR France"
  },
  {
   "countrycode":"MC",
   "country":"Monaco",
   "fulltext":"MC Monaco"
  }
 ] 
}




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