Algorytm naprawy błędów topologicznych w aplikacjach GIS

19

Powiązane pytanie tutaj.

Zauważam, że zapewnienie poprawności topologicznej jest niezbędne w aplikacjach GIS, ponieważ dane wejściowe z operacji logicznej użytkownika lub wielokąta mogą mieć poważne problemy topologiczne (nawet jeśli wielokąty wyglądają poprawnie), które zagroziłyby jakości kolejnych operacji.

Czysty wielokąt to sposób, w jaki robią Geo ​​Wizards, aby zapewnić poprawność topologii.

Arcgis ma również polecenie czyszczenia taśm.

Moje pytanie nie dotyczy sposobu korzystania z istniejących pakietów oprogramowania, aby upewnić się, że dane wejściowe wielokąta są poprawne topologicznie; raczej moje pytanie dotyczy tego, jak te pakiety oprogramowania implementują te procedury czyszczenia. Innymi słowy, jakiego algorytmu mogę użyć, aby upewnić się, że mogę naprawić wszystkie błędy topologiczne, biorąc pod uwagę zestaw wielokątnych danych wejściowych?

Grawiton
źródło
2
Istnieje inne narzędzie ArcGIS GP, o nazwie „Integrate”, które zawiera krótkie wyjaśnienie algorytmu w zasobie pomocy: help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//… - Jednak to nie jest dobrze określone.
Allan Adair
Twój własny link od Geo Wizards faktycznie reprezentuje algorytmy dość dobrze. Czego więcej oczekujesz?
johanvdw
@hohanvdw, to, co pokazuje link, nie jest algorytmem, ale raczej krokiem, jak użyć oprogramowania do aktywacji algorytmu do czyszczenia wielokąta. Różnica między nimi jest ogromna.
Graviton
1
Wyszukiwanie algorytmów planaryzacji może okazać się przydatne.
Kirk Kuykendall
@KirkKuykendall, nie do końca wiem, w jaki sposób pomaga algo planarizacji; Myślałem, że bardziej pasuje do teorii grafów niż do tego rodzaju geometrii obliczeniowej?
Graviton,

Odpowiedzi:

7

Szybkie wyszukiwanie w Google Scholar przyniosło następujące dobrze cytowane artykuły:

blah238
źródło
+1 Wygląda na dobrze przemyślany artykuł. Chciałbym jednak, aby autorzy zdefiniowali, co rozumieją przez „scenę”.
Kirk Kuykendall
Dzięki, dodałem drugi artykuł (jednego z tych samych autorów), ale na pierwszy rzut oka wciąż nie mogę powiedzieć, co to jest „scena”.
blah238,
10

Szczegółowy opis procedur czyszczenia topologicznego można znaleźć w kodzie źródłowym i podręcznikach GRASS GIS: http://grass.osgeo.org/programming7

Procedury czyszczenia są kodowane tutaj: http://trac.osgeo.org/grass/browser/grass/trunk/vector/v.clean

Przykłady podstawowych procedur:

Podstawowe pojęcia są przedstawione tutaj: http://grass.osgeo.org/programming7/vectorlib.html#vlibTopoExamples

markusN
źródło
4

Chociaż nie jest to algorytm, ta strona zawiera informacje o tym, jakie rodzaje błędów topologii szuka „sprawdź geometrię” w narzędziach ArcGIS Sprawdź geometrię / Napraw geometrię. 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.
Michał Markieta
źródło
3

Nie sądzę, że istnieje sposób na pełną automatyzację poprawiania błędów topologicznych w danym zbiorze danych. Niektóre rzeczy, takie jak zawieszki, mogą być w stanie zautomatyzować podział, a następnie usunąć powstały zwis. Ale co z taśmami między dwoma sąsiadującymi wielokątami, który wielokąt powinien zostać połączony z którym kawałkiem, aby go wyeliminować? Tego rodzaju pytanie wymaga wkładu użytkownika. Myślę jednak, że w celu zidentyfikowania błędów algorytmy wykorzystują jakąś odmianę DE-9IM (9 coś coś wymiarowo rozszerzone). Myślę, że najlepszym rozwiązaniem byłoby przyjrzenie się pakietowi Java Topology Suite (JTS). W szczególności klasa Geometry Graph. Myślę, że można to wykorzystać do budowy różnych komponentów konkretnej geometrii, a następnie sprawdzić różne problemy z topologią. Nigdy tego nie robiłem, ale przyglądałem się temu niedawno.

Jeśli nie znasz Javy, GEOS to smak J ++ w C ++, a NetTopologySuite to smak C #.

Mam nadzieję, że to pomaga.

dslamb
źródło
1

Dokumentacja poleceń ArcGIS Integrate została już wspomniana, ale ESRI wydało również dokument techniczny Zrozumienie przetwarzania geometrycznego w ArcGIS dokumentujący logikę przetwarzania używaną przez Integrate (i operacje Geoprocessing obejmujące ogólnie tolerancję). Koncentruje się to na unikaniu i korygowaniu błędów topologicznych generowanych w wyniku geoprzetwarzania. Podano kilka odniesień, które mogą być również przydatne.

Andy Harfoot
źródło