Об'єднання сусідніх многокутників у форматному файлі, розбитому на межі плитки?


24

Наразі я використовую дані про будівництво з Ordnance Survey Vectormap District, і я помітив, що багато багатокутників, що будуються, розділені на 2 через те, як ОС розділила filefile.

Це те, що я бачу в 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" ("Vector / Geoprocessing / Dissolve").

Якщо ви хочете зберегти атрибути (у випадку з OS Vector, це був би лише ідентифікатор, який здається досить довільним), ви можете розділити розчинений векторний шар, а потім призначити атрибути вихідного нерозчиненого шару, використовуючи "Приєднати атрибути за місцем розташування ":

Це підмножина двох форм-файлів будівель ОС, які були об'єднані в єдиний форм-файл за допомогою "Вектор / Управління даними / Об'єднання форм-файлів в одне". Кольори призначаються випадковим чином для відображення окремих особливостей:

Це результат інструменту «Розчинити»: Усі функції були розпущені в єдину функцію з ідентифікатором першого об’єкта, перерва в трьох центральних будівлях відпала:

Після розділення функції за допомогою "Вектор / Геометрія / Багаточастинка на одночастинки" будівлі знову є індивідуальними ознаками, але всі вони мають однаковий ідентифікатор:

Запускаючи "Інструменти управління вектором / даними / Об'єднання атрибутів за місцеположенням" з розділеним шаром як цільовим і оригінальним об'єднаним шаром як шаром "Приєднати вектор", будівлі перепризначають свої індивідуальні ідентифікатори:


Я думаю, що проблема може полягати в тому, що це ОС VMD OpenData (виправте мене, якщо я помиляюся). У такому випадку функції не мають атрибутів, які можна використовувати для розчинення. Тож ви можете також спробувати використовувати звичайний fTools розчинення. Удачі в цьому, у деяких векторах OpenData у мене багатокутники розділені на лінії, що збігаються з лініями сітки, які просто не розсмоктуються.
nhopton

@nhopton: Але звичайний fTools розчиняється, об'єднує всі функції в єдину функцію (якщо немає ідентифікаторів, які можна використовувати для визначення того, які функції належать разом, як це відбувається тут), що, швидше за все, не те, чого хоче Роб. Якщо ви використовуєте v.dissolveпісля призначення всіх функцій якийсь однаковий атрибут манекена, лише ті, які мають межу, будуть об'єднані разом.
Джейк

Ні одна особливість, мабуть, не була б проблемою для Роба, якби все, що він був, - це форми. Але так, спробуйте обидва способи розчинення. Нік.
nhopton

Ви впевнені, що всі багатокутники, які мали бути розпущені, насправді були розпущені? Тут більшість з них розчиняється, але не всі вони.
nhopton

Дякую за допомогу! Виявляється, @nhopton мав рацію, що розбиття району VectorMap насправді трохи відключені, і тому вони не розчиняються правильно. Зараз я експериментую з використанням PostGIS, щоб прискорити цей процес.
Робін Хоукс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.