« LINUX:API de géolocalisation » : différence entre les versions

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 54 : Ligne 54 :


==Recherche sur la rue (type=street)==
==Recherche sur la rue (type=street)==
===Paramètrage===
Le paramètre "terr" a le format général suivant:
Le paramètre "terr" a le format général suivant:
  <nowiki><code du pays> <code du département>;<code du pays> <code du département>;...</nowiki>  
  <nowiki><code du pays>:<code du département>;<code du pays>:<code du département>;...</nowiki>  
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 (";").
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:
<nowiki><code du pays>:<code du département></nowiki>
<nowiki><code du pays></nowiki> (déconseillé)
<nowiki><code du département></nowiki>
Ces trois formats peuvent être combinées avec un point virgule comme séparateur.
Exemples:
Exemples:
  '''FR 75;BE 90000''' (pour le département de Paris et la province de Namur)
  '''FR:75;BE:90000''' (pour le département de Paris et la province de Namur)
  '''29''' (pour le département du Finistère)
  '''29''' (pour le département du Finistère)
  '''29;75''' (pour les départements du Finistère et de Paris)
  '''29;75''' (pour les départements du Finistère et de Paris)




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 (";").
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 partiel; 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.
 


* "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: <nowiki><rue>:<code postal> <commune></nowiki> Au moins un des trois critères doit être fourni. Les accents et la case n'ont pas d'importance. Exemple:
Le format répond au canevas suivant:  
Baty:fosse (pour "Rue du Baty:5070 Fosses-la-Ville")
<nowiki><rue>:<code du pays> <code postal> <commune></nowiki>  
Le code du pays doit être accompagné de 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 "<nowiki><rue>:<commune></nowiki>".


Les combinaisons suivantes sont acceptées:
<nowiki><rue et/ou commune></nowiki>
<nowiki><rue>:<code du pays> <code postal></nowiki>
<nowiki><rue>:<code du pays> <code postal> <commune></nowiki>
<nowiki><rue>:<code postal> <commune></nowiki>
<nowiki><rue>:<code postal></nowiki>
<nowiki><rue>:<commune></nowiki>
<nowiki> :<code du pays> <code postal></nowiki>
<nowiki> :<code du pays> <code postal> <commune></nowiki>
<nowiki> :<code postal> <commune></nowiki>
<nowiki> :<code postal></nowiki>
<nowiki> :<commune></nowiki>


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:
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"
  curl "http://localhost/localisation/recherche.php?type=street&maximumResponses=5&terr=BE+90000&text=Baty:5070+Fosses"




=Résultats=
===Résultats===
L'application retourne une liste de résultat limitée au nombre mentionné, sous format JSON.
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.
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:
La commande ci-dessus donne:
Ligne 87 : Ligne 116 :
     "countrycode":"BE",
     "countrycode":"BE",
     "regioncode":"03000",
     "regioncode":"03000",
     "departementcode":"90000",
     "departmentcode":"90000",
     "zipcode":"5070",
     "zipcode":"5070",
     "x":"50.376691579959726",
     "x":"50.376691579959726",
Ligne 98 : Ligne 127 :
     "countrycode":"BE",
     "countrycode":"BE",
     "regioncode":"03000",
     "regioncode":"03000",
     "departementcode":"90000",
     "departmentcode":"90000",
     "zipcode":"5070",
     "zipcode":"5070",
     "x":"50.37682283553043",
     "x":"50.37682283553043",
Ligne 109 : Ligne 138 :
     "countrycode":"BE",
     "countrycode":"BE",
     "regioncode":"03000",
     "regioncode":"03000",
     "departementcode":"90000",
     "departmentcode":"90000",
     "zipcode":"5070",
     "zipcode":"5070",
     "x":"50.42369167603692",
     "x":"50.42369167603692",

Version du 1 mars 2021 à 20:56

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:

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 partiel; 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é de 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"
  }
 ]
}




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