Алгоритм исправления топологических ошибок в программных приложениях ГИС

19

Связанный вопрос здесь.

Я заметил, что обеспечение топологической корректности имеет важное значение для приложений ГИС, потому что входные данные от логической операции пользователя или полигона могут иметь серьезные топологические проблемы (даже если полигоны выглядят правильно), которые могут поставить под угрозу качество последующих операций.

Чистый полигон - это то, что делают Geo Wizards для обеспечения правильности топологии.

У Arcgis также есть команда убирать щепки.

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

Гравитон
источник
2
Существует еще один инструмент ArcGIS GP под названием «Интеграция», в котором кратко поясняется алгоритм в справочном ресурсе: help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//… - однако он не указано хорошо.
Аллан Адэйр
Ваша собственная ссылка от Geo Wizards на самом деле представляет алгоритмы довольно хорошо. Что еще вы ожидаете?
johanvdw
@hohanvdw, ссылка показывает не алгоритм, а шаги по использованию программного обеспечения для активации алгоритма для очистки полигона. Разница между ними огромна.
Гравитон
1
Поиск алгоритмов планаризации может привести к чему-то полезному.
Кирк Кайкендалл
@KirkKuykendall, я не совсем знаю, как помогает алгоритм планаризации; Я думал, что это более применимо к теории графов, а не к такого рода вычислительной геометрии?
Гравитон

Ответы:

7

Быстрый поиск в Google Scholar обнаружил следующие хорошо цитируемые статьи:

blah238
источник
+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

markusN
источник
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 - это разновидность JTS для C ++, или NetTopologySuite - это разновидность C #.

Надеюсь, это поможет.

dslamb
источник
1

Документация команд ArcGIS Integrate уже упоминалась, но ESRI также выпустила технический документ « Понимание геометрической обработки в ArcGIS», документирующий логику обработки, которая используется Integrate (и операции геообработки, включающие допуск в более общем плане). Это сфокусировано на предотвращении и исправлении топологических ошибок, возникающих при геообработке. Есть несколько ссылок, которые также могут быть полезны.

Энди Харфут
источник