Объединить смежные полигоны в шейп-файле, который был разбит на границах листов?


24

В настоящее время я использую данные о зданиях из Vectormap District Ordnance Survey и заметил, что многие строительные полигоны разделены на 2 из-за того, как ОС разделяет шейп-файл.

Вот что я вижу в QGIS - я выделил некоторые из зданий, разделенных на границе плитки:

введите описание изображения здесь

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

К сожалению, каждая сторона разделенных зданий имеет разные идентификаторы, поэтому я не могу их легко распустить.

Как бы вы предложили, чтобы я мог автоматически объединять строительные плитки?

редактировать

Сейчас я использую PostGIS для объединения полигонов, разделенных на границах плиток. Вот оператор SQL, который делает это для меня - это во много, много раз быстрее, чем делать это с QGIS:

DROP TABLE merged;
CREATE TABLE merged AS
SELECT
  -- Merge polygons that are within 0.01 metres of each other
  (ST_Dump(ST_Union(ST_Buffer(the_geom, 0.01)))).geom AS the_geom
FROM unmerged;

-- Update the geometry_columns table
SELECT Populate_Geometry_Columns();

6
Возможно, вам следует опубликовать свое решение в качестве ответа и принять его вместо моего. Придерживаясь схемы вопрос-ответ, другим людям с такой же проблемой гораздо легче найти решение.
— Джейк,

Ответы:


18

Если вы просто хотите слить грани и довольны наличием одной большой многоугольной функции для всех зданий, вы можете просто использовать инструмент fTools «Dissolve» («Вектор / Геообработка / Растворение»).

Если вы хотите сохранить атрибуты (в случае вектора ОС, который будет только идентификатором, который выглядит довольно произвольно), вы можете разделить слой растворенного вектора и затем назначить атрибуты исходного нерастворенного слоя, используя «Атрибуты соединения». по местоположению ":

Это подмножество двух шейп-файлов зданий ОС, которые были объединены в один шейп-файл с использованием «Вектор / Управление данными / Слияние шейп-файлов в один». Цвета назначаются случайным образом, чтобы показать отдельные особенности:

Это результат инструмента «Растворение»: все объекты были объединены в один объект с идентификатором первого объекта, разрыв в трех центральных зданиях пропал:

После разделения объекта с помощью «Вектор / Геометрия / Составной элемент на отдельные части» здания снова становятся отдельными объектами, но все они имеют одинаковый идентификатор:

Запустив «Вектор / Инструменты управления данными / Объединить атрибуты по местоположению» с разделенным слоем в качестве цели и исходным объединенным слоем в качестве векторного слоя объединения, зданиям будут присвоены их индивидуальные идентификаторы:


Я думаю, что проблема может быть в том, что это ОС VMD OpenData (поправьте меня, если я ошибаюсь). В этом случае объекты не имеют атрибутов, которые можно использовать для растворения. Так что вы можете попробовать использовать обычные растворы fTools. Удачи в этом, в некоторых векторах OpenData у меня есть полигоны, разделенные линиями, которые совпадают с линиями сетки, которые просто не будут растворяться.
— Нхоптон

@nhopton: Но обычное растворение fTools объединит все функции в одну функцию (если нет идентификаторов, которые можно использовать для определения того, какие функции объединяются, как в данном случае), что, скорее всего, не то, что хочет Роб. Если вы используете v.dissolveпосле присвоения всем объектам некоторого идентичного фиктивного атрибута, только те, которые имеют общую границу, будут объединены вместе.
— Джейк

Роб, наверное, не будет проблемой, если все, что ему нужно, это формы. Но да, попробуйте оба метода растворения. Ник.
— Ноптон

Вы уверены, что все полигоны, которые должны были быть распущены, были фактически распущены? Здесь большинство из них растворяется, но не все.
— Нхоптон

Спасибо за помощь! Оказывается, @nhopton был прав, и что расщепления VectorMap District на самом деле немного отклонены и поэтому не растворяются правильно. Сейчас я экспериментирую с использованием PostGIS для ускорения этого процесса.
— Робин Хоукс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.