Алгоритм виправлення топологічних помилок у програмах GIS


19

Тут пов'язане питання .

Я зауважую, що забезпечення топологічної коректності є важливим для GIS-застосувань, це тому, що вхід з користувачем або полігоном булева операція може мати серйозні топологічні проблеми (навіть якщо полігони виглядають правильно), які б загрожували якості наступних операцій.

Чистий багатокутник - це те, як роблять Geo Wizards, щоб забезпечити правильність топології.

Аркгіс також має команду прибирати слівери.

Моє питання не в тому, як використовувати існуючі програмні пакети, щоб переконатися, що вхідні дані полігону топологічно правильні; швидше, моє запитання полягає в тому, як ці програмні пакети реалізують ці процедури очищення. Іншими словами, який алгоритм я можу використати, щоб переконатися, що я можу виправити всі топологічні помилки, задавши набір полігональних входів?


2
Існує ще один інструмент GP ArcGIS під назвою "Інтегрувати", який містить коротке пояснення алгоритму на довідковому ресурсі: help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//… - Однак це не вказано добре.
Аллан Адаїр

Ваше власне посилання від Geo Wizards насправді представляє алгоритми досить добре. Чого ви більше очікуєте?
johanvdw

@hohanvdw, що показує посилання, це не алгоритм, а скоріше кроки щодо використання програмного забезпечення для активації алгоритму для очищення багатокутника. Різниця між ними величезна.
Гравітон

1
Пошук алгоритмів планування може виявити щось корисне.
Кірк Куйкендалл

@KirkKuykendall, я не зовсім знаю, як допомагає альго-планування; Я думав, що це більше застосоване для теорії графів, а не для цього виду обчислювальної геометрії?
Гравітон

Відповіді:


7

Швидкий пошук Google Академії виявив такі добре цитовані статті:


+1 Схоже на добре продуманий папір. Хочеться, щоб автори визначили, що вони означають під "сценою".
Кірк Куйкендалл

Дякую, я додав другу статтю (одного і того ж авторів), але на перший погляд я все ще не можу сказати, що таке "сцена".
blah238

10

Ви можете знайти детальний опис топологічних процедур очищення у вихідному коді та посібниках GRASS GIS: http://grass.osgeo.org/programming7

Програми очищення кодуються тут: http://trac.osgeo.org/grass/browser/grass/trunk/vector/v.clean

Приклади основних процедур:

Основні поняття викладені тут: http://grass.osgeo.org/programming7/vectorlib.html#vlibTopoExamples


4

Хоча це не алгоритм, на цій сторінці ви знайдете інформацію про те, які типи помилок топології "перевірити геометрію" шукають в інструментах ArcGIS Перевірка геометрії / відновлення геометрії. 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

Я не думаю, що існує спосіб повністю автоматизувати виправлення топологічних помилок у заданому наборі даних. Деякі речі, наприклад, бовтанки, можуть бути в змозі автоматизувати розбиття та видалення результату, що виходить. Але що ж робити з перемичками між двома сусідніми багатокутниками, який багатокутник слід об'єднати з яким слайвером для його усунення? Цей тип запитань, здається, потребує введення користувачем. Однак для виявлення помилок я думаю, що алгоритми використовують певну варіацію DE-9IM (розмірно розширений 9 щось щось). Я думаю, що найкращим варіантом буде перегляд пакету Java Topology Suite (JTS). Зокрема клас Geometry Graph. Я думаю, що це може бути використане для побудови різних компонентів певної геометрії, а потім для перевірки різних задач топології. Я ніколи цього не робив, але заглядав це не так давно.

Якщо ви не знайомі з Java, GEOS - це C ++ аромат JTS, або NetTopologySuite - аромат C #.

Сподіваюся, що це допомагає.


1

В документі команд ArcGIS «Інтеграція» вже згадувалося, але ESRI також підготував технічний документ « Розуміння геометричної обробки в ArcGIS», який документує логіку обробки, яку використовує Integrate (і геопроцесорні операції, що загалом включають толерантність). Це зосереджено на уникненні та виправленні топологічних помилок, що виникають в результаті геообробки. Дано кілька посилань, які також можуть бути корисними.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.