13

I'm attempting to split a curved (wiggle) line into equal length segments. Have used Grass's v.split which works to a degree but does not provide the output I'm after.

v.split will extract segmented lengths based on a "maximum segment length" or "maximum number of vertices in segment". So, if I want to split the line into 10 meter segments and use a maximum segment length of 10 then all my segments come up just short, e.g. 9.98, or 9.6. for individual lines, wiggle or straight.

What I want instead is given for example a 55m line: Start at one end and place a node/point every 10m along the line until it reaches the end. In the case above it would get split into 6 segments with the last segment being 5m long and all the others being 10m.

Is there a better module?

Taras
  • 32,823
  • 4
  • 66
  • 137
Geezer
  • 476
  • 1
  • 4
  • 13

4 Answers4

8

The current version of QGIS (QGIS 3.0+) has the option to Force segments to be exactly of a given length, except for the last one using v.split. v.split is accessed from the Processing Toolbox under GRASS --> Vector

enter image description here

user3386170
  • 1,957
  • 1
  • 28
  • 53
5

QGIS 3.20 has a built-in Vector Geometry tool called the "Split Lines by Maximum Length" which splits a line into multiple parts where each part is of a specified maximum length.

Takes a line (or curve) layer and splits each feature into multiple parts, where each part is of a specified maximum length. Z and M values at the start and end of the new line substrings are linearly interpolated from existing values.

Taras
  • 32,823
  • 4
  • 66
  • 137
Rob Irwin
  • 111
  • 1
  • 5
2

The best and easiest solution appears to be the "ProfileFromLine" plugin, which unfortunately doesn't appear to be available for 2.0. Very quick and easy to use, in 1.8.

Geezer
  • 476
  • 1
  • 4
  • 13
1

I understand that your tags are related to QGIS and Grass, but you did ask for other options. I have used ETGeoWizards and XTools (plugins to ArcMap) to perform this task; with great success.

Ryan Garnett
  • 9,479
  • 8
  • 61
  • 106