Чи є в QGIS можливість автоматичного заповнення отворів у полігонах шляхом встановлення параметрів, наприклад, максимальної площі, відстані між прикордонними лініями? Я хочу видалити / заповнити отвори, які дуже "тонкі" / маленькі.
Чи є в QGIS можливість автоматичного заповнення отворів у полігонах шляхом встановлення параметрів, наприклад, максимальної площі, відстані між прикордонними лініями? Я хочу видалити / заповнити отвори, які дуже "тонкі" / маленькі.
Відповіді:
Використовуючи QGIS 2.10.1-Pisa з версією Processing 2.10.2, є декілька інструментів, доступних у панелі інструментів обробки :
Сподіваюся, це допомагає!
Я зіткнувся з тією ж проблемою, що і у вас, з цим файлом форм, що має багато прогалин між багатокутниками.
Щоб вирішити проблему, ви можете використати незначну модифікацію методу tshiffle:
Ця дія створить новий профіль форми, що складається лише з одного многокутника, тому вам доведеться підірвати його на окремі частини. Для цього ви можете скористатись інструментом "Вектор / Геометрія / Інструмент для багаточастинних".
Після цього видаліть зовнішню сутність. Тепер у новому форматі ви маєте кілька полігонів, що покривають прогалини вашого початкового покриття.
Можливо, є більш витончені рішення там, але це завжди працювало для мене.
1) Створіть «заповнення дірок» багатокутників. Для цього намалюйте гігантський багатокутник, більший за оригінал, і скористайтеся інструментом «різниця». Якщо ви намалювали набагато більший багатокутник, у вас будуть всі полігони, що заповнюють отвори, плюс один більший багатокутник, який обходить початкову форму. Видаліть цей великий багатокутник, зберігаючи багатокутники "заповнення дірок".
2) Об’єднайте багатокутники, що заповнюють отвори, з оригінальним форматом. Якщо ви хочете лише заповнити отвори, які відповідають певним критеріям (тобто під X числом квадратних кілометрів), ви можете профільтрувати тут.
3) Розведіть щойно злитий багатокутник на загальному полі.
Я бачив деякі пояснення, що слідують тим самим шляхом, що й gtapko та tshiffle, але жодне не працювало для мене, оскільки неправильні геометрії зробили інструмент різниці нефункціональним. Отже, я придумав власне рішення, яке не на 100% автоматизоване, але воно є керованим. Напевно, хтось це вже зрозумів, але я ризикую:
1) Створіть ідентифікатор на початковому, пошкодженому шарі
Створити атрибут ID просто, але таке рішення є моїм, тому я перегляну його.
Спочатку потрібно відкрити таблицю атрибутів, а потім перейти до польового калькулятора , який є кнопкою, що нагадує абак. Там вам нададуть можливість створити нове поле або оновити наявне. На малюнку вище я створюю новий під назвою "Ідентифікатор". Формула знаходиться в кінці малюнка. (Вибачте за те, що мій QGIS був налаштований на іншій мові. Оскільки дизайн та формули абсолютно однакові у всіх мовних версіях, я не думаю, що він тут увійде в наш спосіб.)
2) Перетворіть багатокутники на лінії
Цей крок розташований у меню « Вектор> Геометрія» у меню. Ваша перетворена форма повинна виглядати так:
Одразу після перетворення багатокутників у прямі, вам доведеться зробити саме навпаки, що є ...
3) Перетворити лінії на багатокутники
Параметри знаходяться прямо поруч. Знову ж таки, не будемо мати на увазі мовний бар’єр.
4) Радійте тому, що ви зробили кроки 2 та 3, це тому, що тепер ви впевнені, що ці рядки будуть вважатися багатокутниками, а значить, тепер у таблиці атрибутів є своя лінія. Якщо ви це перевірите, це буде виглядати приблизно так:
Перший - ЗАВЖДИ весь полігон (повірте, я сьогодні видалив пару сотень рядків ...), а решта - це вільні лінії посередині. Можна включити редагування та підготуватися до дії. Якщо ви вирішили спробувати це, слід пам’ятати про дві речі: організуйте свою таблицю по ідентифікації , таким чином ви впевнені, що нічого не пропускаєте, і використовуйте shift для вибору кластерів даних, як і будь-яка інша програма .
Я знаю , це не вершки з QGIS рішення проблем, але якщо ви зіткнулися з ситуацією , коли інструменти не працюють через неприпустиму геометрією цих ліній створення (я навіть намагався розчиняючи за ідентифікатором, але не вийшло), то це може бути виходом.