Есть ли в QGIS возможность автоматически заполнять отверстия в полигонах, задавая параметры, например, максимальную площадь, расстояние между границами? Я хочу удалить / заполнить отверстия, которые очень "тонкие" / маленькие.
Есть ли в QGIS возможность автоматически заполнять отверстия в полигонах, задавая параметры, например, максимальную площадь, расстояние между границами? Я хочу удалить / заполнить отверстия, которые очень "тонкие" / маленькие.
Ответы:
Используя QGIS 2.10.1-Pisa с версией Processing 2.10.2, есть несколько инструментов, доступных на панели инструментов обработки :
Надеюсь это поможет!
Я столкнулся с той же проблемой, что и вы, с этим шейп-файлом, имеющим много пробелов между полигонами.
Чтобы решить эту проблему, вы можете использовать небольшую модификацию метода tshiffle:
Это действие создаст новый шейп-файл, состоящий только из одного многоугольника, поэтому вы должны разбить его на отдельные части. Для этого вы можете использовать инструмент Vector / Geometry Tools / Multipart to singleparts.
После этого удалите внешнюю сущность. Теперь у вас есть в новом шейп-файле несколько полигонов, покрывающих промежутки вашего исходного покрытия.
Там могут быть более элегантные решения, но это всегда работало для меня.
1) Создать «заполнение дыр» полигонов. Для этого нарисуйте гигантский многоугольник, больший, чем оригинал, и используйте инструмент «Разница». Если вы нарисовали многоугольник намного большего размера, у вас будут все многоугольники с «заполнением дыр» плюс один многоугольник большего размера, который обходит исходную форму. Удалите этот большой многоугольник, сохранив многоугольники "заполнения дыр".
2) Объединить полигоны «заполнения дыр» с оригинальным шейп-файлом. Если вы хотите заполнить только те отверстия, которые соответствуют определенным критериям (т. Е. Меньше X квадратных километров), вы можете отфильтровать это здесь.
3) Растворите вновь слитый многоугольник на общем поле.
Я видел некоторые объяснения по тому же пути, что и у gtapko и tshiffle, но ни одно из них не помогло мне, потому что неправильная геометрия сделала инструмент различий неработоспособным. Итак, я придумал собственное решение, которое не на 100% автоматизировано, но оно управляемо. Возможно, кто-то уже понял это, но я рискну
1) Создайте идентификатор на оригинальном поврежденном слое
Создать атрибут ID просто, но мое решение так же, как я расскажу об этом.
Сначала вы должны открыть таблицу атрибутов, а затем перейти к полевому калькулятору , который представляет собой кнопку, похожую на счет. Там вам будет предоставлена возможность создать новое поле или обновить существующее. На картинке выше я создаю новый с именем "ID". Формула справа в конце картинки. (Извините за то, что моя QGIS настроена на другом языке. Поскольку дизайн и формулы одинаковы во всех языковых версиях, я не думаю, что это будет мешать нам.)
2) Преобразовать полигоны в линии
Этот шаг находится в разделе Vector> Geometry меню. Ваша преобразованная форма должна выглядеть так:
Сразу после преобразования полигонов в линию, вам придется сделать прямо противоположное, что ...
3) Конвертировать линии в полигоны
Варианты прямо рядом друг с другом. Опять же, давайте не будем возражать против языкового барьера здесь.
4) Радуйтесь . Причина, по которой вы выполнили шаги 2 и 3, заключается в том, что теперь вы уверены, что эти линии будут считаться полигонами, что означает, что теперь они имеют свою собственную линию в таблице атрибутов. Если вы проверите это, это будет выглядеть так:
Первый - ВСЕГДА весь многоугольник (поверьте, сегодня я удалил пару сотен строк ...), а остальные - свободные линии посередине. Вы можете включить редактирование и подготовиться к действию. Если вы решите попробовать это, вам следует иметь в виду две вещи: организовать свою таблицу по идентификатору , таким образом вы уверены, что ничего не пропустили и используете shift для выбора кластеров данных, как и любая другая программа. ,
Я знаю, что это не лучший способ решения проблем QGIS, но если вы сталкиваетесь с ситуацией, когда инструменты не работают из-за неправильной геометрии, создаваемой этими линиями (я даже пытался растворить по идентификатору, но это не сработало), тогда это может быть выход.