Узагальнення файлу багатокутника при збереженні топології в QGIS?


35

У мене є багатокутник Shapefile, який мені потрібно узагальнити. Як я можу узагальнити полігони та переконатись у відсутності топологічних помилок, таких як "слайвери".

Я вже спробував:

  1. Вектор -> Інструменти геометрії -> багатокутники до ліній
  2. Вектор -> Інструменти геометрії -> спрощена геометрія ... тут я вже бачу на екрані, що я створюю перекриття та прогалини, проте зараз я намагаюся
  3. Вектор -> Інструменти геометрії -> лінії до багатокутників

і тут програма показує помилку і збої

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


Чи є якісь новини з цього питання?
— Oystein

на жаль: ні
— Курт

Відповіді:


16

GRASS - це топологія. Ви можете використовувати v.generalize з панелі інструментів Processing для спрощення багатокутників, і якщо вхідні дані топологічно правильні, таким буде і вихід.

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


за допомогою інсталятора Windows я отримую помилку (відсутня залежність), коли я намагаюся запустити v.generalize. Вам потрібна спеціальна конфігурація?
— Курт

@Kurt: Автономний інсталятор? Не впевнений, до якої версії GRASS вона входить. У налаштуваннях обробки можна вказати, чи GRASS 6.x або 7.x і де він встановлений. Спробуйте налаштувати ці конфігурації під свої налаштування.
— underdark

так, я використовую автономний інсталятор. Дотримуючись ваших порад, я відключив траву 7 за допомогою параметрів обробки та правильно налаштував шлях до qrass 6. цей шлях був невірним, що залишився від старого qgis. Тепер я можу запустити v.generalize, але врешті-решт я отримую нову помилку: вихідний шар не вдалося відкрити, і нарешті в повідомленні сказано, що трава, здається, правильно встановлена ​​та налаштована. ви можете, будь ласка, дати мені якісь пропозиції чи підказки?
— Курт

Зазвичай ця помилка означає, що на певному етапі геопереробка не вдалася. Ви повинні вивчити журнал, який створюється під час запуску інструментів, щоб побачити, де відбувається помилка.
— андермаркет

7

Це можна розглядати як попередню відповідь @ Underdark, за допомогою якої можна очистити топологію векторного шару перед узагальненням. GRASS має функцію v.clean, яка містить ряд інструментів для відновлення шару, таких як:

  • оснащення, яке 'прив'язує' рядки до найближчої вершини
  • rmdangle, який видаляє всі дратівливі звисання
  • rmdupl, який видаляє дублювані функції геометрії

та інші інші, зображені на зображенні нижче:

v.clean

Ви також можете встановити поріг залежно від того, наскільки чутливі ви хочете запускати інструменти. Особисто я схильний використовувати функцію Check Geometry Validity в QGIS ( Вектор > Інструменти геометрії > Перевірка дійсності геометрії ), щоб перевірити наявність помилок і, якщо такі є, використовувати відповідний інструмент у v.clean . Після усунення помилок ви повинні бути в кращому становищі для узагальнення.

Сподіваюся, це допомагає!


3
І якщо достатньо простого зменшення вершини, v.generalize не потрібен, оскільки це може зробити інструмент чорносливу.
— Габор Фаркас

дякую за попередню відповідь @ Underdark, яка містить цінні відомості. хоча я прямо не сказав це, звичайно, файл-багатокутник, який я хотів узагальнити, є топологічно чистим [бо; сміття - сміття поза :-)]
— Курт

@ Курт, це має сенс :)
— Йосип

2

Ви спробували використовувати MapShaper ? Я знайшов це хорошим способом узагальнення багатокутників; є також офлайн-версія, якщо ви хочете завантажити код.

Альтернативою може стати конвертувати це у GeoJson, а потім TopoJson, який підтримує "спрощення форми збереження топології" https://github.com/mbostock/topojson


Спробував Mapshaper, це справді чудовий інструмент
— Курт

1
ще один коментар: Як зазначено в назві: я шукаю рішення з qgis. Maphaper imho це не зберігає топологію (Доведіть себе, роблячи дуже сильне узагальнення!). Topojson: це купа JavaScript-вихідного коду, який корисний лише для програмістів
— Курт

ой, пропустив лише аспект QGIS. QGIS все ж обробляє geojson; Цікаво, чи було б сенсом працювати над функцією спрощення topojson в плагіні QGIS, щоб зробити його доступним для непрограмістів
— djq

Я продовжую поза тематичний рядок: OpenJUMP для цього має інструмент «Спростити покриття полігону».
— user30184

0

Я щойно зробив швидкий тест, і інструмент "Спростити геометрію" в меню "Вектор", відповідно до топології. Я спробував і без "Увімкнути топологічне редагування", відмітившись у розділі "Параметри оснащення". Ви спробували це?

EDIT: Це було зроблено безпосередньо на полігонному файлі - чому б ви перетворили спочатку на рядки?


Привіт, Даррен, дякую за підказку, я спробую це з топологічним редагуванням enablr
— Курт,

1
Привіт, Даррен, якщо це не поважає топологію. немає різниці з "включити топологічне редагування". Я гадаю, це тому, що узагальнення генерує новий шар, тоді як "увімкнути топологічне редагування", здається, працює лише з -виділеними - існуючими шарами. Не могли б ви зробити дуже сильну генералізацію та перевірити ще раз, якщо у вас зараз правильна топологія? дякую
— Курт

1
Курт; Цікаво. Схоже, ти маєш рацію, коли робиш сильне узагальнення! Вибачте!
— Даррен Коуп

1
Цей прапорець відсутній у QGIS 2.2 (можливо, раніше), якщо хтось здійснить пошук.
— lynxlynxlynx

0

Існує та ж дискусія тут , мій остаточну відповідь в тому , що SAGA робить роботу для вас.


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