Algoritmo per correggere errori topologici nelle app software GIS


19

Domanda correlata qui.

Noto che garantire la correttezza topologica è essenziale per le applicazioni GIS, questo perché l'input dell'utente o il funzionamento booleano dei poligoni può avere gravi problemi topologici (anche se i poligoni sembrano corretti) che comprometterebbero la qualità delle operazioni successive.

Il poligono pulito è il modo in cui Geo Wizards garantisce la correttezza della topologia.

Arcgis ha anche un comando per ripulire le scaglie.

La mia domanda non è su come utilizzare i pacchetti software esistenti per garantire che i dati di input del poligono siano topologicamente corretti; piuttosto, la mia domanda è su come questi pacchetti software implementano tali procedure di pulizia. In altre parole, qual è l'algoritmo che posso usare per assicurarmi di poter correggere tutti gli errori topologici, dato un insieme di input poligonali?


2
Esiste un altro strumento ArcGIS GP, chiamato "Integrate", che ha una breve spiegazione dell'algoritmo nella risorsa di aiuto: help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//… - Tuttavia non è specificato bene.
Allan Adair,

Il tuo link da Geo Wizards in realtà rappresenta abbastanza bene gli algoritmi. Cosa ti aspetti di più?
johanvdw,

@hohanvdw, ciò che mostra il collegamento non è un algoritmo, ma piuttosto passi su come utilizzare il software per attivare l'algoritmo per pulire il poligono. La differenza tra i due è enorme.
Graviton,

1
La ricerca di algoritmi di planarizzazione potrebbe rivelare qualcosa di utile.
Kirk Kuykendall,

@KirkKuykendall, non so bene come sia di aiuto l'algo di planarizzazione; Ho pensato che fosse più applicabile alla teoria dei grafi piuttosto che a questo tipo di elementi di geometria computazionale?
Graviton,

Risposte:


7

Una rapida ricerca su Google Scholar ha rivelato i seguenti articoli ben citati:


+1 Sembra un documento ben congegnato. Vorrei che gli autori avrebbero definito il loro significato per "scena".
Kirk Kuykendall,

Grazie, ho aggiunto un secondo articolo (di uno degli stessi autori), ma a prima vista non riesco ancora a capire che cos'è una "scena".
blah238,

10

Una descrizione dettagliata delle routine di pulizia topologica è disponibile nel codice sorgente e nei manuali di GRASS GIS: http://grass.osgeo.org/programming7

Le routine di pulizia sono codificate qui: http://trac.osgeo.org/grass/browser/grass/trunk/vector/v.clean

Esempi per le routine sottostanti:

I concetti sottostanti sono delineati qui: http://grass.osgeo.org/programming7/vectorlib.html#vlibTopoExamples


4

Sebbene non sia un algoritmo, questa pagina fornisce alcune informazioni su quali tipi di errori di topologia "verifica geometria" cerca negli strumenti ArcGIS Verifica geometria / Ripristina geometria. 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.

3

Non credo che esista un modo per automatizzare completamente la correzione degli errori topologici in un determinato set di dati. Alcune cose, come i ciondoli, potrebbero essere in grado di automatizzare la divisione e quindi eliminare il ciondolo risultante. Ma che dire delle schegge tra due poligoni adiacenti, quale poligono dovrebbe essere unito a quale barra per eliminarlo? Questo tipo di domanda sembra necessitare di input da parte dell'utente. Per identificare gli errori, tuttavia, penso che gli algoritmi utilizzino una sorta di variazione del DE-9IM (Dimensionally 9 qualcosa qualcosa). Penso che la soluzione migliore sarebbe quella di guardare la Java Topology Suite (JTS). In particolare la classe Graph Geometry. Penso che questo potrebbe essere usato per costruire i diversi componenti di una particolare geometria e quindi usato per verificare diversi problemi di topologia. Non l'ho mai fatto, ma non ci ho pensato molto tempo fa.

Se non si ha familiarità con Java, GEOS è il sapore C ++ di JTS o NetTopologySuite è il sapore C #.

Spero possa aiutare.


1

La documentazione relativa al comando Integrate di ArcGIS è già stata menzionata, ma ESRI ha anche prodotto un documento tecnico sulla comprensione dell'elaborazione geometrica in ArcGIS che documenta la logica di elaborazione utilizzata da Integrate (e le operazioni di geoprocessing che implicano la tolleranza più in generale). Questo è focalizzato sull'evitamento e la correzione di errori topologici generati dal geoprocessing. Ci sono alcuni riferimenti che possono anche essere utili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.