RAPPORTS Centre de Prestations d'Ingénierie Informatiques Département Opération

RAPPORTS Centre de Prestations d'Ingénierie Informatiques Département Opérationnel Ouest Mai 2017 jeux de données SIG – vérification et correction des géométries Ministère de l'Écologie, de l'Énergie, du Développement durable et de la Mer en charge des Technologies vertes et des Négociations sur le climat www.developpement-durable.gouv.fr Historique des versions du document Version Date Auteur Commentaire 1.0 12/05/2017 Alain FERRATON Michel ZEVORT Première version 3.0 26/06/17 Alain FERRATON Modifications suite aux premières relectures. Affaire suivie par Alain FERRATON – CP2I /DOO Michel ZEVORT – CP2I - DOO Tél. : Courriel : Rédacteur Alain FERRATON - CP2I Département Opérationnel de l'Ouest Michel ZEVORT – CP2I département Opérationnel de l’Ouest Relecteur Jean-Claude Proteau – SPSSI/PSI1 Référence(s) internet Référence(s) documentaires SOMMAIRE 1 - POURQUOI VERIFIER OU CORRIGER ?...................................................................................8 1.1 - Erreurs entraînant des dysfonctionnements...............................................................................8 1.2 - Conformité aux spécifications.....................................................................................................9 2 - THEORIE ET DEFINITIONS.......................................................................................................11 2.1 - Définitions.................................................................................................................................11 2.2 - Les normes et standards..........................................................................................................13 2.2.1 -OGC/GEOS............................................................................................................................................................................................................13 2.2.2 -ESRI.......................................................................................................................................................................................................................16 2.2.3 -Qgis........................................................................................................................................................................................................................16 3 - ORIGINES DES PROBLEMES...................................................................................................19 3.1 - Les erreurs humaines...............................................................................................................19 3.2 - Numérisation automatique........................................................................................................19 3.3 - opérations de traitements géométriques..................................................................................20 3.4 - les conversions de format.........................................................................................................21 3.4.1 -A partir du format TAB de Mapinfo.........................................................................................................................................................................21 4 - RECHERCHE D'ERREURS........................................................................................................23 4.1 - visualisation / édition en WKT..................................................................................................23 4.2 - Afficher les coordonnées des sommets....................................................................................26 4.3 - Recherche d’erreurs sous QGIS..............................................................................................28 4.3.1 -vérificateur de topologie (topology checker)..........................................................................................................................................................28 4.3.2 -Algorithme ‘vérifier la validité’ (check validity)........................................................................................................................................................29 4.3.3 -SQL sous DBManager...........................................................................................................................................................................................31 4.3.4 -Outil ‘vérifier les géométries’ (geometry checker ).................................................................................................................................................33 4.4 - recherche d'erreurs avec OPEN JUMP....................................................................................35 4.5 - Conclusions sur la recherche d’erreurs....................................................................................38 4.5.1 -détection des invalidités.........................................................................................................................................................................................38 4.5.2 -détections des autres erreurs de géométrie..........................................................................................................................................................38 4.5.3 -Détection des erreurs de topologie........................................................................................................................................................................38 4.5.4 -Automatisation de la détection des géométries invalides par un modèle de traitement.......................................................................................38 4.5.5 -diagnostic d’un ensemble de couches...................................................................................................................................................................41 5 - METHODES CORRECTION.......................................................................................................43 5.1 - Correction des géométries invalides........................................................................................43 5.1.1 -Makevalid...............................................................................................................................................................................................................43 5.1.2 -ST_Buffer(geom, 0)................................................................................................................................................................................................45 5.1.3 -géométrie nulle.......................................................................................................................................................................................................46 5.1.4 -Multipolygone : Partie à l’intérieur d’une autre partie............................................................................................................................................46 5.1.5 -conclusions corrections géométries invalides........................................................................................................................................................47 Centre de Prestations d'Ingénierie Informatiques Département Opérationnel Ouest 5.1.6 -Automatisation de la réparation des géométries invalides...........................................................................................................................48 5.2 - Corrections géométriques autres.......................................................................................51 5.2.1 -Points en doubles..........................................................................................................................................................................................51 5.2.2 -trous internes : algorithmes ‘fill holes’ et ‘delete holes’.................................................................................................................................53 5.2.3 -La rastérisation /polygonisation....................................................................................................................................................................55 5.3 - Corrections topologiques sur une couche..........................................................................61 5.3.1 -Correction des interstices..............................................................................................................................................................................61 5.3.2 -Correction des recouvrements (overlap)......................................................................................................................................................63 5.3.3 -Corrections des polygones fins.....................................................................................................................................................................68 5.3.4 -Correction avec GRASS (v.in.ogr et v.build).................................................................................................................................................70 5.4 - Corrections de topologies entre couches...........................................................................75 5.4.1 -Superposition entre deux couches................................................................................................................................................................75 5.4.2 -Accrochage de géométries...........................................................................................................................................................................76 6 - EXEMPLES...........................................................................................................................79 6.1 - Couche ‘tempo.SHP’..........................................................................................................79 6.1.1 -Contexte........................................................................................................................................................................................................79 6.1.2 -Phase 1 : Analyse de la validité du jeu de données.....................................................................................................................................79 6.1.3 -Pour en savoir plus.......................................................................................................................................................................................80 6.1.4 -Phase 2 : rendre la couche valide.................................................................................................................................................................85 6.2 - Exemple : rastérisation/polygonisation...............................................................................89 6.2.1 -Contexte........................................................................................................................................................................................................89 6.2.2 -Principe.........................................................................................................................................................................................................90 6.2.3 -Phase 1 : analyse du jeu de données...........................................................................................................................................................90 6.2.4 -phase 2 : rendre la couche valide.................................................................................................................................................................90 6.3 - Communes italiennes.........................................................................................................92 6.3.1 -Contexte........................................................................................................................................................................................................92 6.3.2 -Phase 1 : analyse du jeu de données...........................................................................................................................................................92 6.3.3 -Phase 2 : correction des géométries invalides.............................................................................................................................................92 SIG : Vérification et correction de géométrie 4/89 Centre de Prestations d'Ingénierie Informatiques Département Opérationnel Ouest Avertissement Ce document traite du thème de la détection et la correction des géométries. Il aborde aussi un peu les problèmes de topologie qui sont souvent associées dans les outils. Il aborde essentiellement la problématique des polygones. Bien que rappelant quelques éléments théoriques, il s’agit avant tout d’une synthèse empirique basée sur l’expérience des auteurs et de retours de service sur des cas concrets. Quelques exemples sont analysés en annexes. Toute remarque visant à le corriger ou le compléter peut-être adressée au PNE Progiciels géomatiques: assistance-nationale-progiciels-geomatiques @ developpement-durable.gouv.fr Remerciements Nous ne citerons pas individuellement les personnes qui ont contribué, par leurs apports directs ou indirects, à l’élaboration de ce document, ils sont nombreux et nous aurions peur d’en oublier. La liste interne au Ministère de la Transition Écologique et Solidaire ‘labo-qgis’ est d’une très grande richesse… Un grand merci global donc à tous les contributeurs. SIG : Vérification et correction de géométrie 5/89 Centre de Prestations d'Ingénierie Informatiques Département Opérationnel Ouest Résumé : Il existe plusieurs standards de validité des géométries pour un jeu de données dans un SIG. Le plus connu est GEOS, c’est celui que doit vérifier au minimum un jeu de données pour être utilisé sans problème sous QGIS ou PostGIS. Au-delà de la validité au sens d’un standard, un jeu de données doit vérifier des spécifications propres. On distingue des spécifications géométriques (contraintes sur la géométrie de chaque objet), des spécifications topologiques (contraintes entre objets d’une même couche ou entre objets de couches différentes). Le premier travail d’un administrateur de données (ADL) sur un jeu de données, est une phase de diagnostic (vérification). Il existe pour cela plusieurs méthodes disponibles. Nous recommandons pour vérifier la validité géométrique au sens GEOS sous QGIS ou PostGIS d’utiliser la méthode par requête SQL avec la fonction st_isvalidreason(). Openjump constitue une alternative intéressante qui donne les mêmes résultats. Cette phase d’analyse doit également être (re)exécutée après une conversion de format qui peut introduire des anomalies; Un exemple d’export de données initialement au format MapInfo est donné au chapitre 3.4. Un script d’analyse d’un patrimoine de données avec ogr2ogr est fourni en exemple. Dans la phase de diagnostic l’ADL peut également être amené à vérifier la conformité aux spécifications géométriques et topologiques. Plusieurs outils sous QGIS, ou Openjump sont présentés. Une deuxième phase doit être, au minimum, de rendre valide le jeu de données au sens de GEOS. Nous recommandons d’utiliser sous QGIS ou PostGIS la méthode par requête SQL avec la fonction st_makevalid(). Il peut être intéressant d’en profiter pour supprimer les sommets en double avec la fonction st_simplify(). La partie de transformation des géométries de la requête SQL sera alors de la forme (exemple une correction de polygones sous PostGIS) : st_multi(st_simplify(ST_Multi(ST_CollectionExtract(ST_ForceCollection(ST_MakeValid(geo m)),3)),0)) La méthode avec st_buffer(geom, 0) est une alternative, si la méthode st_makevalid() échoue (gros jeu de données), mais elle ne doit être utilisée que si on a déjà corrigé les polygones en ‘papillons’. Cette méthode peut-être automatisée avec le modeleur de traitement de QGIS, ou dans la console Osgeo4W et éventuellement exécutée sur un lot de données. Une méthode dite de ‘rastérisation / polygonisation’ est présentée dans le cas de gros jeu de données obtenu par une méthode automatique de vectorisation d’un raster (cas des PPR par exemple). Il faut vérifier après correction que le jeu de données obtenu reste cohérent avec le jeu de données initial. Aller plus loin et corriger les autres erreurs de géométries, ou les erreurs de topologie, nécessite de bien connaître les spécifications et d’avoir accès à une possibilité de vérification. Une telle phase doit être envisagée avec la plus grande prudence par un ADL. Dans un certains nombre de domaines, en particulier pour les zonages réglementaires comme les PLU ou PPRN les avis divergent ; a priori devrait être entrepris seulement des corrections automatiques qui ne changent pas les surfaces (ex : suppression d’arcs pendants ou de sommets en doubles), toute correction qui change les surfaces (ex : suppression de micro-zones) doit être validé par le producteur SIG : Vérification et correction de géométrie 6/89 Centre de Prestations d'Ingénierie Informatiques Département Opérationnel Ouest métier. Plusieurs outils de correction sont présentées. Le plugin ‘vérifier les géométries’ de QGIS dispose de fonctionnalités intéressantes, mais est peu fiable dans la version examinée (QGIS 2.16). Openjump et GRASS proposent des outils qui sont à manier avec le recul nécessaire. SIG : Vérification et correction de géométrie 7/89 Centre de Prestations d'Ingénierie Informatiques Département Opérationnel Ouest 1 - POURQUOI VERIFIER OU CORRIGER ? 1.1 - Erreurs entraînant des dysfonctionnements Chaque logiciel utilise une modélisation de la géométrie qui lui est propre ou qui respecte un standard. Le modèle le plus usité est celui de l’OGC décrit au chapitre 2. Les logiciels sont plus ou moins tolérants aux ‘erreurs’ de géométrie. Certaines erreurs peuvent entraîner des résultats faux lors de l’exécution de fonction du logiciel (requêtes, algorithmes,...), il est alors parfois difficile de s’en rendre compte (ex : calcul de surface inexacte). D’autres erreurs peuvent entraîner des dysfonctionnements plus visibles; messages d’erreurs ou plantage du logiciel. D’une façon générale, les requêtes et opérations spatiales sous QGIS (logiciel recommandé) ne sont possibles qu’avec des objets dont la géométrie est valide, au moins avec la méthode GEOS. La validité (concept que nous définirons plus loin) des géométries est donc nécessaire pour réaliser des requêtes fiables. Il est fortement recommandé pour les Administrateurs de Données (ADL) de vérifier et corriger (ou faire corriger en cas de sous-traitance) le patrimoine mis à disposition des utilisateurs. Différentes méthodes de correction de géométries sont présentés au chapitre 5. Elles ne peuvent pas toujours être automatisées et dans ce cas le travail de correction peut être très lourd. Exemple de résultat faux: ce polygone en papillon ; qui est incorrect au sens de GEOS, a une surface de 0 m2 (car une des sous-surfaces est comptée en négatif). Exemple de plantage suite à géométrie invalide : Certaines fonctions comme st_union (ou dissolve) peuvent ne pas aboutir en cas de géométrie invalide (mouline uploads/Geographie/ verification-et-correction-de-geometrie-v3-pdf.pdf

  • 43
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager