9

I've seen a lot of questions involving splitting a line with the help of a point layer. I want to split a line in fractions of its length. For example, I have a line 400 meters long, I want to split it into four lines of 100 meters long each. There is the grass module v.split, but I get an error message when I start it from the qgis toolbox :

*"TypeError: object of type 'NoneType' has no len()"*

So I'm not sure, if I get it to work, if this would be a solution.

  • Please clarify: Do you want to split by length i.e. ever 100 meters or into a specific number of parts? – underdark Oct 6 '14 at 18:25
  • Into a specific number of parts. Joseph, below, has given a good workaround. – Gilles Oct 22 '14 at 15:34
9

The v.split.length function from GRASS should do exactly what you want by splitting the line into equal segments defined by the user without the need for a point layer. Here's a simple example of a straight line (it also works on non-straight and multiple lines):

Simple line

I added a column to calculate its length using $length in the expression:

Line attribute

Using the v.split.length function from GRASS via the Processing Toolbox, I chose to split the line into 25m segments which should make a total of 4 parts:

v.split.length function

I then updated the Length column of the output layer and used the same command as above to re-calculate the length:

Attribute result

Not sure why you are receiving the error, could you share your line layer for people to test?

  • Hello, thanks for your answer. It is working. It's not splitting the line in fractions of the lenght though, as I still have to calculate the number of segments from the measured length, but it's a good workaround. Thank you. – Gilles Oct 22 '14 at 15:31
  • Apologies for not giving you a definitive answer but I'm glad it's a workaround atleast. Most welcome buddy! – Joseph Oct 23 '14 at 11:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.