2

I have a slight issue I just cannot solve. I use QGIS 3.6

I have multiple layers:

  1. layer with multiple points with milage numbers;
  2. a layer containing one or more polygons (let's call them "areapolygons").

I need to cut that (area) in pieces according to that milage points.

I tried the following, but that did not work:

  1. create paths from the points layer
  2. buffering the paths, so I get polygons (let's call them milage-polygons)
  3. then clipping the milage-polygons with the "areapolygons"

I hope that'll give me areas of 100m. But I got some errors.

I need a sort of 'cutting' lines on the place of the milage points, to cut the polygon. How can I perform that?

polygons, milages and cutting lines

3
  • 3
    Would be helpful to know what errors.
    – MrXsquared
    Commented Aug 10, 2019 at 23:19
  • 1
    Hi! I understand. But I was more looking for in idea for an approach for my quest. Commented Aug 11, 2019 at 20:17
  • 1
    If you can create lines using the geometry by expression algorithm, then you can cut the polygon using split with lines. The challenging is writing an expression to define the lines based on the points.
    – csk
    Commented Aug 12, 2019 at 19:04

1 Answer 1

1

I created a graphical model for QGIS 3.8 to create the blue dotted "cutting" lines from your picture. Only thing you need is a point layer with an integer field called ID, where your points are sorted ascending. Of course you can (or must) adjust this model to your specific needs. As I cannot attach it here, I added it to my GitHub repository. I've done this pretty quickly, so I am sure there are better, or more efficient solutions out there. A known "bug" is, when you select a greater buffer width, than points are apart from each other, it doesnt work anymore. Maybe you can use "extend lines" algorithm or something to fix this if needed.

Since you use QGIS 3.6 the join by nearest won't work. You can check out if you can implement NNJoin plugin instead or upgrade.

Here is how it works:

  1. Input a points layer with ascending ID field (e.g. @row_number)
  2. Build a path out of the points
  3. Buffer this path (adjust your buffer width here) using miter and flat style
  4. Convert this buffer to lines
  5. Extract the vertices
  6. Join these vertices with the nearest point from 1. and get it's ID (this step requires QGIS 3.8+)
  7. Create new fields for line grouping afterwards (for extracted vertices and points from 1.) by multiplying ID with 1000
  8. Create new fields for line ordering (@row_number)
  9. Merge vertices and points from 1.
  10. Create a path from points from this merged layer
  11. Dissolve this path

enter image description here

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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