Як розчинити багатокутники з формфайлу за допомогою інструментів з відкритим кодом?


10

У своєму поточному проекті я візуалізую дані на карті, що представляють деякі значення для кожної адміністративної області країни. Мені надано файл форми цієї країни, який я перетворюю на GeoJSON для використання з PolyMaps. Тепер у мене з’явилася вимога об'єднати кілька областей у більші, оскільки немає даних про деякі менші частини, але можна отримати агреговані дані для великих. Ці кластери заздалегідь визначені (наприклад, A + B + C = D), тому я подумав, що буде простіше створити кластерний файл форми і перетворити його в GeoJSON згодом.

Але як створити такий кластер, бажано, автоматизований та з інструментами з відкритим кодом? Будь-який інший розумний спосіб, звичайно, також вітається.

Відповіді:


5

Ви завжди можете використовувати інструмент з відкритим кодом, наприклад QGIS, щоб відкрити свій файл форм і об'єднати функції, використовуючи вбудований інструмент "об'єднати вибрані функції" (просто виберіть функції, натисніть об'єднати, виберіть атрибути для успадкування нової об'єднаної функції, зроблено).

Звичайно, це не має особливого сенсу, якщо ми говоримо про сотні чи тисячі злиття. Мене днями цікавило, чи можна об’єднати функції "за атрибутом" у QGIS?

EDIT: Гаразд, я дурний, якщо у вас є спільний атрибут для всіх функцій, які ви збираєтеся "кластеризувати" (наприклад, назва провінції чи графства), це було б справою про інструмент розпуску. Відкрийте свій файл форми, виберіть розчинення (у QGIS він знаходиться за адресою вектор> Інструменти геопроцесори> Розчинити), виберіть стовпчик із вищезгаданою загальною назвою та розпочніть процес. Це, сподіваємось, (якщо я вас не зрозумів неправильно) призведе до того, що ви шукали.


Загалом, хороша порада, і якщо все зводиться до ручної роботи, я знайду когось, хто створить мені ті форми файлів за допомогою QGIS, як ви описали. Однак я хотів би мати можливість визначити ці кластери (наприклад, за допомогою кодів NUTS: об'єднати FR413 і FR411 у щось, що називається _FRX1), а потім запустити скрипт, який би генерував ці кластеризовані форми файлів. Я хочу мати можливість виправляти помилки або пристосовувати швидко відстежувані зміни без накладних витрат інструменту графічного інтерфейсу. Цілком можливо, що ці кластери будуть визначені кінцевими користувачами колись, тому мені потрібна трохи гнучкості.
Микола Прокощенко

Я ніколи його не використовую, але я думаю, що ви можете використовувати консоль, щоб робити все в QGIS, тому в GUI немає потреби. Вам також завжди доведеться визначати ці кластери в якійсь таблиці, навіть якщо ви повністю покладаєтесь на сценарій розробленого сценарію. Таким чином, ви можете уникнути возитися зі своїм форм-файлом, приєднавшись до цієї таблиці і розчинившись потім. Я думаю, це теж було б сценарієм?
SAnderka

Цілком можливо, я абсолютно новачок у всіх речах ГІС. Я вивчу сценарій QGIS, дякую.
Микола Прокощенко

2

Для менш ручної роботи ви можете ознайомитися з SpatiaLite. Ви можете легко імпортувати форму файлів, використовуючи напр

spatialite> .loadshp ~/maps/areas areas iso-8859-15
spatialite> UPDATE areas SET Geometry = SetSrid(Geometry,4326);
spatialite> SELECT RecoverGeometryColumn('areas','Geometry',4326,'POLYGON',2);

Потім для розсмоктуючої частини:

Я хотів би мати можливість визначити ці кластери (наприклад, за допомогою кодів NUTS: об'єднати FR413 і FR411 у те, що називається _FRX1)

Тут потрібна функція GUnion (). Ви можете визначити свої "кластери" у другій таблиці. Тоді ви можете приєднатись до таблиці кластерів та областей та використовувати GUnion () з GROUP BY для створення остаточного Union_table.

Потім можна експортувати у shapefile за допомогою .dumpshp

spatialite> .dumpshp union_table Geometry new_shapefile iso-8859-15 POLYGON

Якщо вам потрібен GeoJSON, ви можете перетворити файл зараз.

Ви можете написати короткий сценарій, наприклад, в Python, який обробляє всі ці навантаження, з'єднання та скидання.


Виглядає дуже перспективно, я експериментую з цим! Дякую! Чи можете ви пояснити, що роблять UPDATEі SELECTлінії?
Микола Прокощенко
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.