OpenRefine et géocodage avec adresse.data.gouv.fr

Christian Quest
Sep 15, 2017 · 1 min read

OpenRefine est un outil permettant de remettre en forme des données tabulaires mais aussi de les enrichir par l’appel d’API externes.

Un besoin courant est le géocodage d’adresses postales dans différents but:

  • obtenir des coordonnées géographiques
  • valider/homogénéiser des libellés adresses
  • vérifier l’existence des adresses

Dans mon fichier d’exemple, les adresses sont réparties sur 3 colonnes: Adresse, Code postal et Ville.

On va donc constituer l’URL pour interroger l’API de géocodage de adresse.data.gouv.fr qui est de la forme

Ceci se fait dans OpenRefine en ajoutant une colonne obtenue via une URL:

Image for post
Image for post

Le script GREL (langage interne à OpenRefine) est le suivant:

http://api-adresse.data.gouv.fr/search/?q="+(cells["Adresse"].value+" “+cells[“Code postal”].value+” “+cells[“Ville”].value).replace(“ “,”%20")+”&limit=1

Il concatène les 3 colonnes, puis remplace les espaces par des %20 (encodage minimal pour les URL).

Quelques secondes après (le temps d’envoyer les requêtes à l’API et d’obtenir les réponses), une nouvelle colonne contenant la réponse JSON fournie par le géocodeur pour chacune des lignes de notre tableau de données apparaît.

Pour en extraire les informations qui nous sont utiles, voici les exemples GREL correspondants:

Score: value.parseJson().features[0].properties.score

Type: value.parseJson().features[0].properties.type

Longitude : value.parseJson().features[0].geometry.coordinates[0]

Latitude : value.parseJson().features[0].geometry.coordinates[1]

etc…

Bon géocodage !

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store