« LINUX:API de géolocalisation » : différence entre les versions
(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… ») |
Aucun résumé des modifications |
||
Ligne 39 : | Ligne 39 : | ||
* "type": type de recherche. Actuellement il n'y a que le type "street" qui est repris par défaut. | * "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. | * "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: <code du pays> <code du département>;<code du pays> <code du département>;... 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: | * "terr": restriction de la recherche à un/des pays et/ou à un/des départements. Le format répond au canevas suivant: <nowiki><code du pays> <code du département>;<code du pays> <code du département>;...</nowiki> 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) | 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) | ||
* "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>:<code postal> <commune> Au moins un des trois critères doit être fourni. Les accents et la case n'ont pas d'importance. Exemple: | * "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: | ||
Baty:fosse (pour "Rue du Baty:5070 Fosses-la-Ville") | Baty:fosse (pour "Rue du Baty:5070 Fosses-la-Ville") | ||
Version du 25 février 2021 à 21:57
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: <code du pays> <code du département>;<code du pays> <code du département>;... 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>:<code postal> <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" } ] }