France/Limites administratives/Import assisté des limites cadastrales

From OpenStreetMap Wiki
Jump to navigation Jump to search

A lire avant tout le reste

L'outil présenté ci-dessous ne tient pas compte des changements de projections du cadastre en ligne qui se sont produits fin 2009. La plupart des communes au format vecteur sont passées du Lambert conique conforme 4 zones (NTF) au nouveau Lambert conique conforme 9 zones (RGF93). Il est indispensable d'attendre une nouvelle version avant toute nouvelle utilisation du script, sinon vos limites communales risquent de se retrouver à des centaines de kilomètres de leurs positions réelles. --Pieren 17:22, 12 January 2010 (UTC)

Cet article est en cours de mise à jour suite à la nouvelle version de l'outil

Description

L'outil d'import assisté est un ensemble d'outils développés par Frederic Rodrigo pour vectoriser les limites communales depuis le cadastre en ligne. Cet outil permet d'automatiser une grande partie du travail qui était auparavant fait manuellement avec le plugin cadastre-fr sur JOSM. Grâce à ce paquet, on peut saisir les images d'une liste des communes prédéfinies sur le site du cadastre en ligne en conservant uniquement les traits des limites communales (reconnaissables par leur couleur spécifique) puis toutes les images sont consolidées en un seul fichier image. Un outil externe (Autotrace) est ensuite utilisé pour convertir le format image en données vectorielles. Puis un ensemble de scripts est utilisé pour nettoyer et convertir des données prêtes au transfert vers le serveur d'OSM. En particulier, une opération de conflation (amalgame en français) est effectuée pour fusionner les limites entre communes qui ne coïncident jamais parfaitement sur le cadastre.

A lire avant de commencer

La vectorisation des limites cadastrales ne peut se faire qu'en connaissant la zone Lambert dans laquelle les communes souhaitées sont disponibles sur le serveur du cadastre en ligne.

Cette zone Lambert n'est demandée qu'une seule fois dans les opérations décrites ci-dessous. Il est extrêmement important de :

  • connaître le type de projection utilisé par le cadastre pour votre département (Lambert 4 zones ou Lambert 9 zones)
  • connaître la zone Lambert de votre département.
  • Certains départements en Lambert 4 zones sont à cheval entre deux zones Lambert. Il faudra peut-être effectuer l'opération deux fois, une pour chaque zone Lambert, à moins de connaître par avance la liste des communes par zone Lambert, ce qui est peu probable.
  • vérifier, après vectorisation, si les communes sont dans la bonne zone Lambert avant d'effectuer le transfert vers le serveur OSM (par exemple, en lançant quelques download ponctuels avec JOSM sur quelques communes pour voir si les limites collent avec les données déjà existantes)

Si vous sélectionnez la mauvaise zone Lambert, vos limites communales se retrouveront à plusieurs centaines de kilomètres au nord ou au sud de leur position réelle !

Télécharger

L'ensemble des outils de Frederic Rodrigo est disponible ici: http://f.rodrigo.free.fr/tmp/r-cadastre-client-20100113-1.tar.bz2 (nouvelle version 14/01/2010)

Le fichier HOWTO contient un guide pas-à pas très bien fait par Fred.

Toutefois, certains détails manquent. Ça n'est pas handicapant pour les connaisseurs. Pour les autres, voici un guide plus détaillé:

Ubuntu / Debian

Installation

  • téléchargez le fichier contenant tous les outils:
 wget http://f.rodrigo.free.fr/tmp/r-cadastre-client-20100113-1.tar.bz2
  • décompression du fichier archive
 tar xjf r-cadastre-client-20100113-1.tar.bz2

Installer les dépendances

A corriger si besoin pour la nouvelle version, même si je pense que les dépendances n'ont pas changées

  • installation de libSDL
 (sudo apt-get update)
 sudo apt-get install libsdl1.2-dev
 sudo apt-get install libsdl-image1.2-dev
  • compilation de sdl-tiler
 cd r-cadastre-client-20100113-1/rcc-grab/tiler
 sh build

Si l'opération a réussi, vous avez un fichier exécutable sdl-tiler

  • installation de curl
 sudo apt-get install curl
  • installation de ruby utilisé pour divers scripts
 sudo apt-get install ruby
  • installation d'autotrace qui convertit l'image en points vectoriels
 sudo apt-get install autotrace
  • installation de gpsbabel utilisé pour simplifier les points GPX (dans le script rcc-grab-batch.sh)
 sudo apt-get install gpsbabel
  • installation de java 1.6
 sudo apt-get install sun-java6-jre

les implémentations autres que Sun devraient aussi fonctionner

MacOS X

Installation

  • téléchargez le fichier contenant tous les outils:
 wget http://f.rodrigo.free.fr/tmp/r-cadastre-client-20100113-1.tar.bz2
  • décompression du fichier archive
 tar xjf r-cadastre-client-20100113-1.tar.bz2

Installer les dépendances

Les dépendances sont des packages UNIX standard disponible via [[1]]

Éventuellement mettre à jour macport en faisant

sudo port selfupdate
  • installation de libSDL
 sudo port install libsdl_image
  • compilation de sdl-tiler
 cd r-cadastre-client-20100113-1/rcc-grab/tiler
 sh build

Si l'opération a réussi, vous avez un fichier exécutable sdl-tiler

  • installation d'autotrace qui convertit l'image en points vectoriels
 sudo port install autotrace
  • installation de gpsbabel utilisé pour simplifier les points GPX
 sudo port install gpsbabel

Lancement

  • Définir la liste des communes à vectoriser
  • lancement du script de récupération de la liste des communes pour un département
 cd r-cadastre-client-20100113-1/rcc-list/
 sh rcc-list.sh [numéro du département sur 3 chiffres (ex: 073 pour la Savoie)]
  • un autre moyen d'accéder à la liste est d'aller sur le site du cadastre ([www.cadastre.gouv.fr]) et de sélectionner le département dans la liste déroulante en bas.
  • pour convertir la liste complète générée par rcc-list.sh en une liste comportant uniquement les noms des communes vectorisées:
 cat [numéro du département sur 3 chiffres]-liste.csv | grep -v IMAG | cut -d, -f1 > depart-vector.list
  • liste comportant uniquement les noms des communes vectorisées:
 grep vecteur [numéro du département sur 3 chiffres]-liste.csv | sed -e 's#strong>#,#g'|cut -d, -f2 > depart-vector.list
  • création de la liste des communes à vectoriser
    • copiez le nom des communes (en respectant exactement la syntaxe du cadastre) dans le fichier rcc-grab-batch.list avec une commune par ligne. Évitez de mettre trop de communes (max 50 recommandé). Les communes homonymes ne semblent pas supportées pour l'instant. Choisissez des communes limitrophes pour profiter de la conflation. N'inscrivez que des communes du cadastre au format vectoriel !
 cd r-cadastre-client-20100113-1
 gedit rcc-grab-batch.list (ou n'importe quel autre éditeur)
  • identifiez la zone Lambert des communes concernées
    • 1 pour le nord, 2 pour le centre, 3 pour le sud, 4 pour la corse
    • certains départements ont des communes dans deux zones différentes, vous serez donc obligé de faire l'opération en deux fois. En cas de doute sur la zone, utilisez JOSM et le plugin cadastre-fr. Si vous utilisez une mauvaise zone Lambert, l'image sera simplement vide.
  • lancez la récupération puis la vectorisation des images du cadastre
 cd r-cadastre-client-20100113-1
  • Si le département est en lambert 4 zones :
 sh rcc-grab-batch.sh "Lambert [zone lambert entre 1 et 4]" [n°département avec un zéro devant] [nom_projet]
  • Si il est en lambert 9 zones :
 sh rcc-grab-batch.sh "LambertCC9Zones 7 [zone lambert entre 1 et 9]" [n°département avec un zéro devant] [nom_projet]

L'outil créera (ou réutilisera) un répertoire du même nom que le nom du projet pour stocker les fichiers d'images assemblées et les GPX.

Si vous voyez le message d'erreur suivant:

 Exception in thread "main" java.lang.IndexOutOfBoundsException: Index:1, Size: 1

c'est que vous n'utilisez le script que pour une seule commune et du coup, le programme de conflation est appelé pour rien. Vous pouvez donc l'ignorer. (il semblerait que le fichier OSM ne soit pas non plus généré dans ce cas, à vérifier)

Le résultat se trouve dans un fichier r-cadastre-client-20100113-1/[nom_projet]-work1.osm

  • passez l'outil de validation qui corrige quelques problèmes de géométrie puis examinez et corrigez le nouveau fichier [nom_project]-work2.osm avec JOSM en particulier en recherchant le tag fixme=*.
 sh tools/rccc-osmCommCheck.sh [nom_project]-work1.osm > [nom_project]-work2.osm

Je recopie ici les remarques de Fred sur cette étape importante en y ajoutant mes remarques:

Les principaux problèmes à corriger sont les nœuds non synchrones. Ils sont issus des limites intercommunales qui n'ont pas pu être fusionnées automatiquement. La solution consiste le plus souvent à les supprimer ou à les joindre avec la limite de l'autre commune proche de ce nœud (touche de raccourci J). Les tags fixme restant seront automatiquement perdus lors de l'étape suivante ou d'une nouvelle validation. Lors de ce passage, porter un soin particulier aux intersections de limites communales (au moins trois communes sur un même nœud). Si les limites entre communes sont trop éloignées, leur fusion par l'outil de conflation a pu échoué (souvent le cas avec des rivières notamment). Faire l'opération à la main dans ce cas. D'autres problèmes moins faciles à résoudre sont les limites qui font des retours arrières sur leurs propres nœuds (utilisez le plugin validator pour les voir !). Note : la plupart des erreurs détectées seraient corrigeable automatiquement.

  • transformation en modèle de relations polygones

Cette étape supprime les ways (polylignes) superposés et créé les relations sur le modèle défini sur la page wiki France/Tracer les limites administratives.

 ruby tools/rccc-osmCommSplit.rb [nom_project]-work2.osm > [nom_project]-split.osm

Il faut pour finir renommer les noms des communes en utilisant leur syntaxe définitive (en principe, celle de Wikipedia, ou mieux de l'INSEE) puis fusionner le résultat final avec ce qui est déjà dans OSM. Vous pouvez le faire avec n'importe quel éditeur OSM capable de lire les fichiers .osm même si nous recommandons JOSM. N'oubliez pas que certaines limites utilisent des éléments physiques comme les rivières, ruisseaux, routes ou chemins qui sont peut-être déjà présents dans OSM. Il faut alors fusionner les nœuds et laisser les ways se superposer pour distinguer la couche physique de la couche administrative (point controversé, voir la discussion sur la page wiki concernée).

N'oubliez pas aussi d’inscrire votre pseudo OSM dans le tableau des régions sur la page de la liste des limites administratives pour éviter de travailler à plusieurs sur la même chose !

Notes

Les dépendances proviennent de: