Я видел много вопросов, связанных с разделением линии с помощью точечного слоя.
Я хочу разбить строку на части ее длины.
Например, у меня есть линия 400
длиной в несколько метров, я хочу разделить ее на четыре линии по 100 метров каждая.
Есть модуль травы v.split
, но я получаю сообщение об ошибке при запуске из панели инструментов qgis:
*"TypeError: object of type 'NoneType' has no len()"*
Поэтому я не уверен, смогу ли я заставить его работать, если это будет решением.
qgis
line
digitizing
жилль
источник
источник
Ответы:
Функция v.split.length из GRASS должна делать именно то, что вы хотите, разбивая линию на равные сегменты, определенные пользователем, без необходимости в точечном слое. Вот простой пример прямой линии (она также работает на не прямых и нескольких линиях):
Я добавил столбец для вычисления его длины, используя
$length
в выражении:Используя функцию v.split.length из GRASS через Processing Toolbox , я решил разделить линию на 25-метровые сегменты, которые должны составить в общей сложности 4 части:
Затем я обновил столбец Длина выходного слоя и использовал ту же команду, что и выше, чтобы пересчитать длину:
Не знаете, почему вы получаете сообщение об ошибке, не могли бы вы поделиться своим линейным слоем для тестирования?
источник
Давайте предположим, что есть слой ломаной линии
"lines"
.Я могу предложить использовать «Виртуальный слой» через
Layer > Add Layer > Add/Edit Virtual Layer...
Возможны несколько случаев:
Случай 1. Разбиение линии на равные отрезки, в основном равной длины, которая определяется пользователем.
С помощью следующего запроса можно достичь результата. Для того, чтобы увеличить / уменьшить длину сегмента, пожалуйста , настройте
1000 AS step_length
в системе-- configurations
.Выходной виртуальный слой будет выглядеть следующим образом
Примечание: Если значение «дельта» (напримерпоследний сегмент кратчайшего) не должен быть включен,затем вставить
WHERE sec_length >= step_length
в-- query
см нижеСлучай 2. Разбиение линии на определенное количество отрезков
С помощью следующего запроса можно достичь результата. Для того, чтобы увеличить / уменьшить количество сегментов, пожалуйста , настроить
8 AS sections
по прибытию-- configurations
.Выходной виртуальный слой будет выглядеть следующим образом
источник