Розщеплення всіх ліній по шару у вершинах за допомогою QGIS?


11

Я хочу автоматично розділити всі рядки в шарі QGIS в їх вершинах ( як це ).

Я здійснив пошук у Google і знайшов цю статтю , яка досить близька, але робочий процес складний. Оскільки мені доведеться навчити своїх співробітників (які не знайомі з ГІС) використовувати цей інструмент, я хочу щось таке просто, як плагін або щось, що не потребує GRASS. Оскільки давно минув 2010 рік - час попередньої відповіді , мені цікаво, чи є кращий спосіб досягти того ж результату?


Ви можете використовувати інструменти GRASS від QGIS зараз. Можливо, вектор-> Інструменти геометрії-> Окремі деталі для багаточастин можуть допомогти. Панель інструментів Sextante повинна мати "Вибухнути шару лінії" І є плагін "розділити функцію"
simplexio

Я думаю, що відповідь, на яку ви посилалися, є (все-таки) правильною процедурою. Векторний інструмент "Одинична частина до багаточастинних" не буде робити те, що ви хочете. Він розбиває багаторядковий рядок у вузлах , а не в кожній вершині.
Micha

@simplexio: за допомогою інструментарію Sextante я отримав повідомлення про помилку, як і у відповіді Бернда В., і я не можу знайти плагін "роздільної функції" ніде в мережі.
Cao Minh Tu

@Micha: ця процедура може бути правильною, але вона буде занадто складною для моїх колег, які не знайомі з ГІС, тому я вважаю це останнім засобом, коли все не вдасться :)
Cao Minh Tu

@Cao Minh Tu: я знову протестував функцію «Спліт» на Linux Master та на Win7 1.8 із нещодавно створеним лінійним шаром, і там він працює. Створіть тестовий шар з нуля і нанесіть його там. Можливо, у ваших оригінальних шарах є помилки, які потрібно вирішити спочатку !?
Бернд В.

Відповіді:


17

Вибухові лінії з Панелі обробки інструментів розділять усі рядки в їх вершинах на окремі рядки.

Обробка меню -> Панель інструментів. Введіть "вибухнути" в поле пошуку, щоб знайти функцію. Виберіть шар рядка зі спадного меню та почніть. Це створить новий шар.

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

Примітка. Оскільки QGIS швидко рухається, усі дані нижче вже застаріли.

Я думаю, що лінії Explode були б нооб -рішенням із панелі інструментів SEXTANTE . QGIS Geoalgorithms > Vector geometry tools > Explode lines. На жаль, наразі це не працює, я отримую лише повідомлення про помилку.

Traceback (most recent call last):
  File "path/.qgis//python/plugins\sextante\core\GeoAlgorithm.py", line 145, in execute
    self.processAlgorithm(progress)
  File "path/.qgis//python/plugins\sextante\algs\Explode.py", line 58, in processAlgorithm
    features = QGisLayers.features(layer)
NameError: global name 'layer' is not defined

Робочим рішенням є Split Feature-плагін із сховища "сприяння", який робить для мене роботу.

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

EDIT: На жаль, багато плагінів ще не переміщено до офіційного сховища плагінів, але вони все ще доступні лише через "внесене" сховище плагінів: http://pyqgis.org/repo/contributed , яке було видалено із сховищ за замовчуванням список з версією 1.8.

Там ви можете завантажити їх окремо і розпакувати їх у папці .qgis / python / plugins АБО ви додасте цю адресу у свій список сховищ плагінів: Plugins -> Fetch python plugins -> Tab "Repositories" -> Add ... -> enter a name and the url.


Чи можете ви сказати мені, де знайти плагін "Спліт функція" - я не можу знайти його в офіційному сховищі плагінів? За допомогою рядків SEXTANTE Explode я отримав те саме повідомлення про помилку, як і ваше - тут є повідомлення про помилку: hub.qgis.org/isissue/7157
Cao Minh Tu

@Cao Minh Tu: вибачте, повністю забув, що я додав старий сховище до свого списку, де цей плагін знаходиться виключно. переглянути мої зміни.
Бернд В.

Я спробував плагін Split Feature, немає повідомлення про помилку, але вихідний шар нічого не містив.
Цао Мінь Ту

На pyqgis.org/repo/contributed є лише помилка 404 - чи змінилась URL-адреса?
til_b

@til_be дивіться мою редакцію
Bernd V.

4
  1. Відкрити / створити набір карт GRASS (щоб ви могли запускати інструменти на своїх даних)
  2. Відкрийте інструменти GRASS / Імпортуйте файл форми, який ви хочете розділити, у базу даних GRASS
  3. Запустити v.split.vert (встановити максимальну кількість вершин = 2)

Це рішення зберігає значення z в геометрії сегмента
Тамас Коса

1
    segment_list = []
    for feature in feature_list:
        vertices = feature.geometry().asPolyline() # returns list of vertices comprising polyline
        for point in range(len(vertices)-1):
            segment = QgsFeature()
            segment.setGeometry(QgsGeometry.fromPolyline([vertices[point], vertices [point+1]]))
            segment.setAttributes(feature.attributes())
            segment_list.append(segment)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.