Удаление небольших полигонов «соль и перец» из слоя в QGIS?

11

У меня есть карта , составленную из нескольких полигонов, с несколько сотен тысяч точек очень маленьких полигонов на внутри него.

Мне нужны большие полигоны, но не точки маленькие полигоны. Как выбрать и удалить все точки маленьких многоугольников, сохраняя при этом большие многоугольники? (Я, очевидно, не хочу делать это вручную - есть слишком много пунктов для этого!)

Я совершенно новичок в QGIS, и я безуспешно гуглил. Возможно, потому что я не уверен, что правильная терминология для поиска Google!

Я использую следующие файлы: .dbf, .prj, .qpj, .shp и .shx. Я просто перетаскиваю файл .shp в QGIS, и карта отображается в виде одного слоя. В основном карта Великобритании разделена на регионы (которые я хочу) и покрыта точками (которые не хочу).

вид карты вид таблицы

Вот как это выглядит вблизи. Я сделал растворение, чтобы посмотреть, войдут ли они в окружающий слой, без удачи:

крупный план полигонов

Ошеломленный и растерянный
источник
4
Похоже, вы используете шейп-файлы (.shp). Каждый шейп-файл может содержать только одну из точек, линий или многоугольников. Таким образом, один (или более) из ваших шейп-файлов будут содержать регионы Великобритании в виде полигонов, а 1 (или более) из ваших шейп-файлов будут содержать только точки. Если вы включите / выключите шейп-файлы в оглавлении (рядом с ними будет галочка), вы увидите, какие данные хранятся в каждом файле. Затем вы можете просто удалить файлы, которые содержат точки.
Dan_h_b
1
Кто создал данные или откуда вы их взяли? Похоже (на основе рисунка) у вас есть многоугольники с отверстиями в них.
HeikkiVesanto
1
Я согласен с Весанто, что если это всего лишь один слой, то это может быть слой многоугольника с отверстиями в нем или очень маленькие многоугольники. В этом случае вы можете объединить их с более крупными полигонами. Например, выберите полигоны, которые находятся внутри большого, затем объедините. Не могли бы вы увеличить масштаб и сделать снимок экрана "точек" на карте крупным планом?
Крис П
1
Есть ли шанс, что вы можете прикрепить файл shp?
Dan_h_b
1
Итак, предположим, я скажу, что у вас есть многоугольники (основанные на том факте, что в вашей таблице атрибутов всего 17 строк). Если вы разберете свои данные на полигоны, состоящие из одной части, вы получите сотни полигонов. (Вектор> Инструменты геометрии> Составные части). Затем вы сможете сделать выборку на основе области (то есть выбрать действительно маленькие области) и удалить их, чтобы избавиться от всех этих крошечных многоугольников, или аналогичным образом вы сможете растворить их в любой большой многоугольник, на который они падают. в пределах.
Dan_h_b

Ответы:

22

Похоже, что вы работаете с данными кодовой точки съемки Ordnance , которые представляют собой набор данных областей почтовых индексов в Великобритании и Северной Ирландии.

«Точки», на которые вы ссылаетесь, представляют собой небольшие квадратные многоугольники, представляющие так называемые «вертикальные улицы»: стеки из нескольких почтовых индексов, которые нельзя представить с помощью «обычных» многоугольников (см. Комментарий Энди Харфута для более подробной информации). ). Возможно, вы захотите дважды подумать об удалении этих полигонов, если для анализа вам нужны соответствующие почтовые индексы.

Тем не менее, вот как вы можете удалить эти полигоны:

  1. Выберите все вертикальные многоугольники улиц, нажав «Выбрать объекты с помощью выражения» и введя "POSTCODE" LIKE 'V%'. При этом будут выбраны все объекты с почтовым индексом, начиная с Vвертикальных улиц.

  2. Простое удаление объектов не поможет, так как полигоны оставят дыры, как вы уже заметили. Вместо этого вы можете объединить вертикальные улицы с соседним большим полигоном, используя «Вектор / Инструменты геообработки / Устранить полигоны-осколки», сохранив результат в новом файле.

  3. Вы можете получить предупреждение о том, что некоторые функции не могут быть распущены, вместе со списком идентификаторов функций. Если вы также хотите избавиться от этих объектов, выберите вертикальные улицы в новом слое, используя выражение из ранее, и затем выполните одно из следующих действий:

    1. Если вам нужно автоматическое решение, вы можете растворить вертикальные улицы вместе со всеми соседними полигонами. Сохраните выделение на новый слой, используя «Слой / Сохранить выделение как векторный файл», а затем используйте «Вектор / Инструменты исследования / Выбор по местоположению», чтобы выбрать объекты в объединенном слое, которые пересекаются с нарушающими вертикальные улицы, создавая новую выделенную область. , Затем распустите этот выбор, используя «Вектор / Инструменты геообработки / Растворение», выбрав --- Dissolve all ---«Поле растворения». Обратите внимание, что этот подход может привести к нежелательному роспуску «правильных» полигонов, если нарушающая вертикальная улица находится на границе двух других полигонов или если в двух соседних полигонах есть нарушающие вертикальные улицы.

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

Джейк
источник
3
Отличный обзор источника, рисков, вариантов и процесса, который первоначально запрашивал ОП!
RyanKDalton
1
Минорная точка - вертикальные улицы существуют там, где имеется вертикальный стек из нескольких почтовых индексов, что препятствует их представлению в качестве «обычного» многоугольника в наборе данных. Это обычно происходит в жилых многоэтажках или офисных зданиях. Список предоставляется в качестве дополнения к основному набору данных многоугольников кодовых точек, который расширяет код вертикальной улицы (начиная с V) на несколько почтовых индексов, которые его составляют.
Энди Харфут
@AndyHarfoot: Ах да, спасибо за разъяснения! Я отредактировал свой ответ
Джейк
Это великолепно - спасибо. Только одно - я не могу найти Выбор объектов с помощью инструментов Выражение или Вектор / Инструменты геообработки / Устранить многоугольники. Я на 1.8.0 Лиссабоне. Нужно ли обновляться?
Ошеломленный и растерянный
2

Попробуйте изменить свою методологию. Вместо того, чтобы пытаться выбрать и удалить тысячи точек, вы пытались выбрать полигоны и создать новый слой из этого выделения? Это не было бы слишком утомительно, если бы у вас был метод для удаления всех точек вручную, просто вместо этого выберите объекты полигона и либо создайте слой, либо экспортируйте их. Если эти точки являются маленькими полигонами, как прокомментировали другие, вы все равно можете выбрать только те полигоны, которые хотите сохранить и экспортировать.

LMHall
источник