[OSM-dev-fr] Import addr:housenumber depuis le cadastre

Tyndare tyndare at wanadoo.fr
Mar 22 Oct 20:17:37 UTC 2013


Bounjour,

Au cas où ça intéresse quelqu'un, je partage des scripts python que j'ai
essayé de faire pour extraire les numéros de rue depuis le cadastre.

https://www.gitorious.org/cadastre-housenumber/cadastre-housenumber/

Ce n'est pas codé très proprement, et pas beaucoup testé mais ça semble
fonctionner en Drôme Ardèche, sous Ubuntu 13.04.
Le code de récupération des pdf depuis le site cadastre.gouv.fr est un mixe
entre le code de Qadastre de Pierre Ducroquet, et du script import-bati.sh
afin de découper la zone d'une commune en pdf plus petits.
Ensuite le programme inkscape est appelé afin de convertir les pdf en
fichier svg.
Pour détecter les numéros de rue, j'ai codé en dure un "path" (au sens svg)
correspondant à chaque numéro (0-9 et les lettres B,T,Q,A,B,C,D,E,F), et je
fait une transformation pour les comparer. Je filtre ensuite selon la
taille pour ne garder que les numéros de rue (et éviter les numéros de
parcelles).
J'ai aussi fait un script qui essaye de fusionner un fichier .osm sauvé
depuis JOSM avec un fichier d'import des addr:housenumber récupéré depuis
le cadastre.
Ce script essaye de positionner le tag addr:street au nom de la rue la plus
proche, et d'intégrer le noeud addr:housenumber au building le plus proche.
Le plus proche n'étant pas forcément le bon, ça se trompe un nombre non
négligeable de fois, if faut donc bien évidement tout vérifier et corriger
ensuite sous JOSM, mais je trouve que cela fait tout de même gagner un
temps précieux.

Voici la façon dont je procède:

1. Récupération des addr:housenumber d'une commune depuis le cadastre:

    ./cadastre_vers_osm_housenumbers.py <département> <commune>

ce qui génère entre autre un fichier <code_commune>-housenumber.osm

2. J'ouvre ce fichier sous JOSM

3. J'en coupe un morceau (a peut près carré) que je veut importer. Je colle
ce morceau dans une  nouvelle couche que je sauve dans un fichier
temporaire nommé import.osm.

4. Je télécharge dans une nouvelle couche les données OpenStreetMap
correspondant à la zone que je veut importer, que je sauve dans un fichier
nommé original.osm.

5. J'efface de la couche import.osm tout les nœuds addr:housenumber qui
sont déjà dans OpenStreetMap (dans la couche original.osm), et je resauve
le fichier import.osm ainsi modifié.
Pour cette étape je crée et j'active sous JOSM un filtre qui permet
d'afficher que les éléments ayant un tag addr:housnumber, l'expression du
filtre est:
    "addr:housenumber"=*


6. En ligne de commande je lance le script python pour fusionner les deux
couches:

    ./fusion_osm_avec_housenumbers.py original.osm import.osm fusion.osm

7. Sous JOSM je ferme toutes les couches et j'ouvre le fichier fusion.osm,
et là viens la longue phase de correction avant de pouvoir envoyer les
données au serveur OpenStreetMap:
J'active le filtre pour n'afficher que les éléments addr:housenumber, je
sélectionne à la souris tout les éléments qui logiquement appartienne à une
rue donnée, et je vérifie ou corrige le tag addr:street, ou alors crée une
relation associatedStreet.
Ensuite j'essaye d'intégrer les noeuds addr:housenumber à leur building
grâce au raccourcis clavier J (join), et L (align), ou j'enlève ceux qui
ont été intégré à tord à certain building (raccourcis clavier G).


Ludo.
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/dev-fr/attachments/20131022/695f50b0/attachment.html>


Plus d'informations sur la liste de diffusion dev-fr