Исправление ошибок достоверности геометрии в QGIS?


31

Я работаю над данными о собственности на уровне округа США. У меня есть один шейп-файл на страну, который содержит тысячи налоговых посылок. Мне нужно распустить полигоны, представляющие участки, принадлежащие одному и тому же лицу. Когда шейп-файл не является чистым, инструмент «Растворение» в QGIS, похоже, не работает, он зависает. Сначала я должен исправить проблемы с правильностью геометрии с помощью инструмента «Проверить правильность геометрии». Однако у меня иногда бывают сотни ошибок. Требуется много времени, чтобы починить их вручную. Есть ли другие стратегии, которые могли бы сэкономить мне время?

Я использую QGIS 2.4.0.


2
Вы пытались импортировать файл в траве и использовать v.clean? это, вероятно, исправит много ваших ошибок.
Серхио

Ответы:


20

Попробуйте запустить тонкий буфер на полигонах. Установка -0,001, если ваш CRS UTM, кажется, стоит попробовать. ВЕКТОР | BUFFER


4
Я попробовал решение "Buffer", впервые предложенное BillW. Это решило 97% моих проблем, чего мне достаточно сейчас. Я могу закончить работу вручную. Я считаю, что запуск небольшого буфера на полигонах не создаст никаких проблем для меня в будущем. Но я вижу некоторые случаи, когда использование ST_MakeValid или попытка v.clean может быть лучше и точнее.
Bap

18

Когда у меня есть слой с ошибками, я обычно запускаю его через функцию GRASS v.clean на панели инструментов обработки . Хотя я так и не понял, какой инструмент лучше в этом случае, я обычно выбираю там функцию bpol .

Возможно, еще более важно установить расширенные параметры для допуска на снимки и минимальной площади . В зависимости от слоя, я обычно выбираю 0,1-2 метра для привязки и, например, 10 кв. М для минимальной площади.

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

Вместе с bpol это обычно разрешает все ошибки без слишком большого изменения топологии.


11

Вы можете использовать ST_MakeValid непосредственно в QGIS, добавив плагин lwgeom, который добавляет провайдера lwgeom в набор инструментов обработки => вы можете применить MakeValid непосредственно к загруженному слою без конвертации в postigs /atialite. Postgis /atialite использует тот же liblwgeom, чтобы сделать ST_MakeValid

Вы должны установить liblwgeom и настроить поставщика обработки, чтобы указать на него

Поставщик lwgeom может быть найден в качестве экспериментального: https://plugins.qgis.org/plugins/processinglwgeomprovider/


3
Я только что выпустил новую версию провайдера processinglwgeom для использования с текущей основной версией обработки qgis. (обработка в процессе рефакторинга)
Луиджи Пирелли,

2
Привет @LuigiPirelli Я пытался решить аналогичную проблему с помощью плагина Lwgeom, но он всегда дает сбой во время выполнения, и мне нужно перезапустить QGis снова. Есть ли способ, как я могу это исправить? Спасибо.
Алекс Фернандес Пулюссен

1
Трудно сказать, без более продолжительного контекста. Кстати, с 2014 года в qgis появилось больше инструментов для ремонта геометрии. Обычно сбой в lwgeom является проблемой смещения (грязной установки) в загруженном или совместно используемом объекте. Вы тестировали другие инструменты?
Луиджи Пирелли,

1
Работает ли это с QGIS 2.18? Кажется, не работает в моей версии QGIS, github.com/faunalia/processinglwgeomprovider
RutgerH

1
Просто обновление ... со времени QGIS3.x имеет собственный алгоритм обработки фиксированной геометрии, который является оболочкой для алгоритмов GEOS lwgeom MakeValid. Нет необходимости в БД.
Луиджи Пирелли


2

Я просто столкнулся с подобной проблемой в QGIS. У меня поли начал проецировать неправильно. Я использовал Grass fuction v.clean в наборе инструментов Processing, как предложил Бернд. Хотя bpol не сработал, похоже, это было исправлено с помощью функции break.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.