Aujourd'hui, nous allons regarder des API un peu paticulières puisqu'elles sont fourni par l'Etat français, qui fournit la possibilité de faire des recherches interessantes, telle que l'on pouvait les faire auparavant gratuitement avec Google et son service Maps (qui reste fonctionnel mais qui est devenu payant)

La problématique

Le "problème" est simple et se résume en deux mots : géodécoding et géocoding. Vouz aurez remarqué que l'un est le contraire que l'autre.

  • Le géocoding est le fait de "transformer" une adresse physique, que l'on pourrait aussi appeler adresse postale, si on fait une analogie à la poste, en adresse caracterisée par deux données : une longitude et une latitude.
  • Le géodécoding est le fait de transformer une adresse définie par une longitude et une latitude en coordonnées physique.

Le service interrogé

Nous allons donc interroger le service public https://adresse.data.gouv.fr qui nous permet de retrouver pas mal d'informations. Le point d'entrée search permet de prendre en compte pas mal de paramètres tels que :

  • une recherche plein texte
  • une recherche dont on peut contrôler le nombre d’éléments retournés
  • une recherche par latitude et longitude on peut donner une priorité géographique

Pour chacune des recherches énoncées, l'utilisateur peut appliquer trois filtres :

  • un type (type)
  • un code postal (postcode)
  • un code INSEE de la commune (citycode)

Notez qu'en vertu d'une loi constitutionnelle de 1992 révisant l'article 2 de la Constitution de 1958 stipulant que « La langue de la République est le français. », le nom des paramètres est bel et bien en anglais.

Encore une dernière petite précision. les adresses postales sont toutes entrecoupées d'espaces (entre les mots, entre les nombres et les mots...) Il faut, par cette API, remplacer chaue espace par un signe plus (+). Ainsi, "rue Sainte Catherine" doit être transformée en "rue+Sainte+Catherine"

Quelques exemples

On a deux paramètres : 

  1. q= : Q représentant la question, on va passer dans ce paramètre l'adresse
  2. postcode= : postcode étant l'anglicisme de code postal, on va positionner ici le code postal de la ville recherchée.
  • Recherche d'une adresse sans le code postal ni la ville

Cela peut paraitre bizarre mais pourquoi pas :
https://api-adresse.data.gouv.fr/search/?q=8+bd+du+port&limit=15

  • Recherche par rapport aux données géographiques

Il suffit de spécifier les coordonnées :
https://api-adresse.data.gouv.fr/search/?q=lat=48.789&lon=2.789

  • Rajouts de restriction :

Il est donc désormais possible, à partir de cer intant, de rajouter des restictions (ou filtres particuliers) sur les requêtes (pour faire une analogie à SQL, on pourrait aussi parler de restrictions).
- la recherche ne concerne que des rues ? Rajoutons ce critère :
https://api-adresse.data.gouv.fr/search/?q=lat=48.789&lon=2.789&type=street

Il ya bien d'autres exemples interessants sur la doc, à commencer par le fait de pouvoir passer des adresses de fichiers locaux contenant des liste (d'adresses à décoder par exemple) pour lancer des traitements batch ! Interessant ce webservice ...
 

Le résultat

Voici un exemple de résulltat : les 15 premiers résultats de l'adresse "8, rue du port", sans préciser la commune.