Algorithme pour corriger les erreurs topologiques dans les applications logicielles SIG

19

Question connexe ici.

Je remarque que garantir l'exactitude topologique est essentiel pour les applications SIG, c'est parce que l'entrée de l'opération booléenne utilisateur ou polygone peut avoir de graves problèmes topologiques (même si les polygones semblent corrects) qui pourraient compromettre la qualité des opérations suivantes.

Un polygone propre est la façon dont les assistants géographiques font pour garantir l'exactitude de la topologie.

Arcgis a également une commande pour nettoyer les éclats.

Ma question n'est pas de savoir comment utiliser les progiciels existants pour s'assurer que les données d'entrée du polygone sont topologiquement correctes; ma question est plutôt de savoir comment ces progiciels implémentent ces procédures de nettoyage. En d'autres termes, quel est l'algorithme que je peux utiliser pour m'assurer que je peux corriger toutes les erreurs topologiques, étant donné un ensemble d'entrées polygonales?

Graviton
la source
2
Il existe un autre outil ArcGIS GP, appelé "Integrate", qui contient une brève explication de l'algorithme dans la ressource d'aide: help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//… - Cependant, il n'est pas bien spécifié.
Allan Adair
Votre propre lien de Geo Wizards représente assez bien les algorithmes. Qu'attendez-vous de plus?
johanvdw
@hohanvdw, ce que le lien montre n'est pas un algorithme, mais plutôt des étapes sur la façon d'utiliser le logiciel pour activer l'algorithme pour nettoyer le polygone. La différence entre les deux est énorme.
Graviton
1
La recherche d' algorithmes de planarisation peut s'avérer utile.
Kirk Kuykendall du
@KirkKuykendall, je ne sais pas très bien comment l'algo de planarisation aide; Je pensais que c'était plus applicable à la théorie des graphes qu'à ce genre de trucs de géométrie computationnelle?
Graviton

Réponses:

7

Une recherche rapide sur Google Scholar a révélé les articles bien cités suivants:

blah238
la source
+1 On dirait un papier bien pensé. J'aimerais que les auteurs définissent ce qu'ils entendent par "scène".
Kirk Kuykendall
Merci, j'ai ajouté un deuxième article (par l'un des mêmes auteurs), mais à première vue, je ne peux toujours pas dire ce qu'est une «scène».
blah238
10

Vous pouvez trouver une description détaillée des routines de nettoyage topologique dans le code source et les manuels de GRASS GIS: http://grass.osgeo.org/programming7

Les routines de nettoyage sont codées ici: http://trac.osgeo.org/grass/browser/grass/trunk/vector/v.clean

Exemples pour les routines sous-jacentes:

Les concepts sous-jacents sont décrits ici: http://grass.osgeo.org/programming7/vectorlib.html#vlibTopoExamples

markusN
la source
4

Bien qu'il ne s'agisse pas d'un algorithme, cette page vous donne des informations sur les types d'erreurs de topologie que "vérifier la géométrie" recherche dans les outils ArcGIS Vérifier la géométrie / Réparer la géométrie. http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000003v000000

Null geometry: The record will be deleted from the feature class. To keep records with null geometry, uncheck the tool dialog option Delete Features with    Null Geometry, or in scripting set the delete_null parameter to KEEP_NULL.
Short segment: The geometry's short segment will be deleted.
Incorrect ring ordering: The geometry will be updated to have correct ring ordering.
Incorrect segment orientation: The geometry will be updated to have correct segment orientation.
Self intersections: the areas of overlap in a polygon will be dissolved.
Unclosed rings: The unclosed rings will be closed by connecting the ring's end points.
Empty parts: The parts that are null or empty will be deleted.
Duplicate vertex: One of the vertices will be deleted.
Mismatched attributes: The Z or M coordinate will be updated to match.
Discontinuous parts: Multiple parts will be created from the existing discontinuous part.
Empty Z values: The Z value will be set to 0.
Michael Markieta
la source
3

Je ne pense pas qu'il existe un moyen d'automatiser complètement la correction des erreurs topologiques dans un ensemble de données donné. Certaines choses, telles que les pendules, pourraient être en mesure d'automatiser le fractionnement, puis de supprimer la pendaison résultante. Mais qu'en est-il des éclats entre deux polygones adjacents, quel polygone doit être fusionné avec quel ruban pour l'éliminer? Ce type de question semble nécessiter l'intervention de l'utilisateur. Pour identifier les erreurs, je pense cependant que les algorithmes utilisent une sorte de variation du DE-9IM (quelque chose de 9 étendu quelque chose). Je pense que votre meilleur pari serait de regarder la Java Topology Suite (JTS). Plus précisément la classe Geometry Graph. Je pense que cela pourrait être utilisé pour construire les différents composants d'une géométrie particulière, puis utilisé pour vérifier différents problèmes de topologie. Je ne l'ai jamais fait, mais je l'ai étudié il n'y a pas longtemps.

Si vous n'êtes pas familier avec Java, GEOS est la saveur C ++ de JTS, ou NetTopologySuite est la saveur C #.

J'espère que cela pourra aider.

dslamb
la source
1

La documentation de la commande Intégration d'ArcGIS a déjà été mentionnée, mais ESRI a également produit un document technique Comprendre le traitement géométrique dans ArcGIS documentant la logique de traitement utilisée par Integrate (et les opérations de géotraitement impliquant la tolérance plus généralement). Ceci est axé sur l'évitement et la correction des erreurs topologiques générées par le géotraitement. Il existe quelques références qui peuvent également être utiles.

Andy Harfoot
la source