Разбить все линии в слое по вершинам, используя QGIS?

11

Я хочу автоматически разбить все линии в слое QGIS по их вершинам ( как это ).

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

Цао Минь Ту
источник
Вы можете использовать инструменты GRASS из QGIS nowdays.Maybe Vector-> Geometry Tools-> Single parts to multipart может помочь. В наборе инструментов Sextante должен быть «Разнесите слой линий» И есть плагин «Функция разделения»
simplexio
Я думаю, что ответ, который вы упомянули, является (все еще) правильной процедурой. Векторный инструмент «Одна деталь в несколько частей» не будет делать то, что вы хотите. Он разделяет мультилинейную строку в узлах , а не в каждой вершине.
Миха
@simplexio: с набором инструментов Sextante я получил сообщение об ошибке, как в ответе Бернда V. И я не могу найти плагин «функции разделения» нигде в сети.
Цао Мин Ту
@Micha: эта процедура может быть правильной, но она будет слишком сложной для моих коллег по работе - которые не знакомы с ГИС, поэтому я буду рассматривать это как последнее средство, когда все остальное не удалось :)
Цао Мин Ту
@Cao Minh Tu: я снова протестировал «функцию разделения» на Linux Master и на Win7 1.8 с вновь созданным линейным слоем, и там все работает. Пожалуйста, создайте тестовый слой с нуля и примените его там. Может быть, в ваших исходных слоях есть ошибки, которые нужно устранить в первую очередь!
Бернд В.

Ответы:

17

Линии разнесения из панели инструментов обработки разбивают все линии в своих вершинах на отдельные линии.

Обработка меню -> Панель инструментов. Введите «взорвать» в поле поиска, чтобы найти функцию. Выберите линейный слой из выпадающего списка и начните. Это создаст новый слой.

Выбор одной или нескольких линий из линейного слоя создаст разделенный слой только с этими функциями, отбрасывая остальные.

Примечание: поскольку QGIS движется быстро, все приведенные ниже сведения уже устарели.

Я думаю, что линии Explode были бы решением noob через набор инструментов 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-Plugin из репозитория « contrib», который делает эту работу за меня.

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

РЕДАКТИРОВАТЬ: К сожалению, многие плагины еще не были перемещены в официальный репозиторий плагинов, но все еще доступны только через «подключенный» репозиторий плагинов: http://pyqgis.org/repo/contributed , который был удален из репозиториев по умолчанию список с версией 1.8.

Там вы можете скачать их по отдельности и разархивировать в папке .qgis / python / plugins ИЛИ добавить этот адрес в список хранилищ плагинов: Plugins -> Fetch python plugins -> Tab "Repositories" -> Add ... -> enter a name and the url.

Бернд В.
источник
Подскажите, где найти плагин «Split Feature» - я не могу найти его в официальном репозитории плагинов? С помощью SEXTANTE Explode lines я получил то же сообщение об ошибке, что и у вас - здесь есть сообщение об ошибке: hub.qgis.org/issues/7157
Цао Минь Ту,
@Cao Minh Tu: извините, полностью забыл, что я добавил старый репозиторий в свой список, где этот плагин находится исключительно. см. мои правки
Бернд В.
Я попробовал плагин Split Feature, там нет сообщения об ошибке, но выходной слой не содержит ничего.
Цао Мин Ту
На pyqgis.org/repo/contributed есть только ошибка 404 - изменился ли URL?
til_b
@til_be см. мое редактирование
Бернд В.
4
  1. Открыть / Создать набор карт GRASS (чтобы вы могли запускать инструменты для ваших данных)
  2. Откройте инструменты GRASS / импортируйте шейп-файл, который вы хотите разбить, в базу данных GRASS
  3. Запустите v.split.vert (установите максимальное количество вершин = 2)
user32879
источник
Это решение сохраняет значения 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)
Стив
источник