Algorithmus zur Behebung von topologischen Fehlern in GIS-Software-Apps

19

Verwandte Frage hier.

Ich stelle fest, dass die Sicherstellung der topologischen Korrektheit für GIS-Anwendungen von wesentlicher Bedeutung ist, da die Eingabe durch Benutzer- oder Polygon-Boolesche Operationen schwerwiegende topologische Probleme verursachen kann (auch wenn die Polygone korrekt aussehen), die die Qualität der nachfolgenden Operationen beeinträchtigen würden.

Mit Clean Polygon stellen Geo Wizards die Richtigkeit der Topologie sicher.

Arcgis verfügt auch über einen Befehl zum Bereinigen der Bänder.

Bei meiner Frage geht es nicht darum, wie Sie mit den vorhandenen Softwarepaketen sicherstellen können, dass die Polygoneingabedaten topologisch korrekt sind. Meine Frage ist vielmehr, wie diese Softwarepakete diese Reinigungsverfahren implementieren. Mit anderen Worten, mit welchem ​​Algorithmus kann ich sicherstellen, dass ich alle topologischen Fehler bei einer Reihe polygonaler Eingaben beheben kann?

Graviton
quelle
2
Es gibt ein anderes ArcGIS GP-Tool mit dem Namen "Integrieren", das eine kurze Erläuterung des Algorithmus in der Hilferessource enthält : help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//… - Wie auch immer ist nicht gut spezifiziert.
Allan Adair
Ihr eigener Link von Geo Wizards repräsentiert die Algorithmen tatsächlich ziemlich gut. Was erwarten Sie noch?
Johanvdw
@hohanvdw, der Link zeigt nicht den Algorithmus, sondern beschreibt, wie Sie mithilfe der Software den Algorithmus zum Bereinigen des Polygons aktivieren. Der Unterschied zwischen den beiden ist enorm.
Graviton
1
Das Suchen nach Planarisierungsalgorithmen kann etwas Nützliches ergeben.
Kirk Kuykendall
@ KirkKuykendall, ich weiß nicht genau, wie die Planarisierung helfen kann. Ich dachte, es ist eher auf die Graphentheorie anwendbar als auf solche Sachen mit rechnerischer Geometrie?
Graviton

Antworten:

7

Eine schnelle Google Scholar-Suche ergab die folgenden häufig zitierten Artikel:

blah238
quelle
+1 Sieht aus wie ein durchdachtes Papier. Ich wünschte, die Autoren würden definieren, was sie unter "Szene" verstehen.
Kirk Kuykendall
Danke, ich habe einen zweiten Artikel hinzugefügt (von einem der gleichen Autoren), aber auf den ersten Blick kann ich immer noch nicht sagen, was eine "Szene" ist.
blah238
10

Eine detaillierte Beschreibung der topologischen Reinigungsroutinen finden Sie im Quellcode und in den Handbüchern von GRASS GIS: http://grass.osgeo.org/programming7

Die Reinigungsroutinen sind hier codiert: http://trac.osgeo.org/grass/browser/grass/trunk/vector/v.clean

Beispiele für die zugrunde liegenden Routinen:

Die zugrunde liegenden Konzepte werden hier beschrieben: http://grass.osgeo.org/programming7/vectorlib.html#vlibTopoExamples

markusN
quelle
4

Obwohl es sich nicht um einen Algorithmus handelt, erhalten Sie auf dieser Seite Informationen zu den Arten von Topologiefehlern, nach denen "Geometrie überprüfen" in den ArcGIS-Tools "Geometrie überprüfen / Geometrie reparieren" sucht. http://help.arcgis.com/de/arcgisdesktop/10.0/help/index.html#//001700003v000000

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
quelle
3

Ich glaube nicht, dass es eine Möglichkeit gibt, die Korrektur topologischer Fehler in einem bestimmten Datensatz vollständig zu automatisieren. Einige Dinge, wie z. B. Dangles, können möglicherweise das Teilen und anschließende Löschen des resultierenden Dangles automatisieren. Aber was ist dann mit Splittern zwischen zwei benachbarten Polygonen? Welches Polygon sollte mit welchem ​​Splittern zusammengeführt werden, um es zu beseitigen? Diese Art von Frage scheint Benutzereingaben zu erfordern. Um die Fehler zu identifizieren denke ich jedoch, dass die Algorithmen eine Art Variation des DE-9IM (Dimensionally Extended 9 Etwas Etwas) verwenden. Ich denke, Ihre beste Wahl wäre es, sich die Java Topology Suite (JTS) anzuschauen. Insbesondere die Geometry Graph-Klasse. Ich denke, dies könnte verwendet werden, um die verschiedenen Komponenten einer bestimmten Geometrie zu erstellen und anschließend verschiedene Topologieprobleme zu überprüfen. Ich habe es noch nie gemacht, aber vor nicht allzu langer Zeit darüber nachgedacht.

Wenn Sie nicht mit Java vertraut sind, ist GEOS die C ++ - Version von JTS oder NetTopologySuite die C # -Variante.

Hoffentlich hilft das.

dslamb
quelle
1

Die Dokumentation zum Befehl "Integrieren" von ArcGIS wurde bereits erwähnt. ESRI hat jedoch auch ein technisches Dokument " Grundlegendes zur geometrischen Verarbeitung in ArcGIS" erstellt , in dem die von "Integrieren" verwendete Verarbeitungslogik (und Geoverarbeitungsvorgänge mit allgemeiner Toleranz) dokumentiert sind. Dies konzentriert sich auf die Vermeidung und Korrektur von topologischen Fehlern, die bei der Geoverarbeitung entstehen. Es gibt einige Referenzen, die ebenfalls nützlich sein können.

Andy Harfoot
quelle