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.
_______________________________________________ dev-fr mailing list dev-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/dev-fr