Pasq.fr

Parce-qu'il y a forcément du sens à tout ce bordel !

Geocodage inverse grâce à la BAN

Rédigé par Alain Aucun commentaire
boite aux lettres

On doit souvent utiliser du géocodage (trouver un point grâce à une adresse) et, de temps en temps, faire du géocodage inverse, c'est à dire trouver l'adresse d'un point. Voyons comment faire avec les API d'etalab et QGIS.

(version 3.6 de QGIS, capture sous Elementary OS 5.0 Juno)

Il existe plusieurs solutions pour encoder des adresses, mais le reverse geocoding est moins évident surtout sur des traitements en lot.

De plus, la plupart des solutions font appel à Gougle ou à nominatim d'OpenStreetMap. Ce qui n'est pas mal en soit, mais leurs bases sont mondiales et sont sans doute moins actualisées que les bases locales (je n'en sais rien, je suppute seulement, si vous avez des infos, laisser un commentaire). Nous avons cependant à notre disposition les excellents services de la base nationale d'adresses : la BAN dont on trouve tous les outils sur http://adresse.data.gouv.fr/

Je vous propose donc d'utiliser notre QGIS préféré et les services API de adress.data.gouv.fr pour géocoder une liste de points.

Préparer les fichiers .CSV

Premièrement, il faut une couche points. Si vous avez une couche ligne ou polygone, il faut extraire les centroïdes. Facile avec :

menu centroide

Pour pouvoir utiliser les outils de adresse.data.gouv.fr, il nous faut un fichier CSV, avec 2 colonnes contenant les coordonnées x (longitude), y (latitude) ayant pour nom lon et lat. Voir sur https://geo.api.gouv.fr/adresse

1ère méthode sans plugin

1. Enregistrer votre fichier de points dans la projection WGS84, afin d'avoir les coordonnées dans le format demandé par adresse.gouv.fr. A moins que vous soyez déjà en WGS84, évidemment.

enregistrer sous wgs84

2. Ajouter les colonnes de coordonnées

3. changer le nom des colonnes, pour cela, il faut aller dans propriété-> champs source puis en double cliquant sur le nom des colonnes, vous pouvez changez xcoord --> lon et ycoord --> lat

changer nom des colonnes

cliquer sur OK, à ce stade, vous avez normalement une couche temporaire qué s'appelerio "Info de géométrie ajoutée"

4. On peut maintenant sauvegarder cette couche temporaire en format CSV dans un répertoire facile d'accès.

exporter les entités sousen csv

2éme méthode

Avec le plugin Lat Lon Tools, (je ne vous explique plus comment installer un plugin)

plugin Lat Lon Tools

Cette extension permet de convertir les coordonnées en WGS84, MGRS ou pluscode, donc pleins d'outils utiles.

A partir de votre couche de points, lancer l'extension dans le menu des extensions

menu lat lon Tools

Dans la fenêtre qui s'ouvre, il faut changer quelques paramètres :

point to layer1point to layer 2

  1. Bien prendre "coordinates in 2 fields" pour bien avoir 2 colonnes,
  2. identifier les colonnes avec  x --> Lat
  3. y --> Lon
  4. Bien vérifier que l'on veut les colonnes en WGS84
  5. sauvegarder le fichier directement en .csv (enregistrer vers et choisir .csv) dans le répertoire qui va bien

Et voilà, vous avez un fichier .csv en 1 seule passe.

Récupérer le fichier d'adresse

Dans le terminal ou dans cmd de windows, vous pouvez lancer curl (s'il est installé sur votre poste cf. https://curl.haxx.se/), nous allons donc utiliser la possibilité offerte par adresse.data.gouv.fr

site adresse data gouv fr

Nous allons juste ajouter une option à la ligne curl pour obtenir un fichier au lieu du retour direct, à savoir l'option -o qui permet d'enregistrer un fichier.

curl -o /votrechemin/avec_adresse.csv -X POST -F [email protected]/votrechemin/reverse_geocode.csv https://api-adresse.data.gouv.fr/reverse/csv/

terminal fini

Ceci retourne un fichier (que j'ai appelé avec_adresse.csv) qui contient les informations demandées, pour avoir le détail aller voir les métadonnées (les attributs) sur https://geo.api.gouv.fr/adresse

resultat

Mon fichier exemple n'avait pas d'attributs spécifiques mais il est facile de conserver ceux de départ. Par ailleurs, le fichier de démo comportait 358 lignes, j'ai eu 340 réponses en moins d'1 seconde (cf.capture du terminal) soit 95% de réponses

Je peux voir s'il y a une grosse différence avec les points de départ en chargeant le fichier dans qgis avec le chargement d'un fichier "texte délimité"

chargement csv

et même s'il y a quelques différences, le résultat est plutôt correct.

resultat sur carte

Merci de votre attention

Si je devais utiliser ceci très régulièrement, je plancherai pour en faire un plugin, mais il faudrait que je sois moins cancre en python !! Si quelqu'un veut s'y pencher, je suis preneur.

Si vous avez des questions ou d'autres méthodes plus simples, laisser un commentaire. 

 

Écrire un commentaire

Quelle est la deuxième lettre du mot gvnvtf ?

Fil RSS des commentaires de cet article