2

I have vector data for rivers including their width at various points. From what I have seen so far, QGIS 3.8 can set the line width only per linestring, no per segment.

Is it possible (maybe with a Plugin) to control the width of my rivers as they become larger (after inflows), or do I have to split them up into several segments (which messes with feature selection, which is why I'd like to keep each river as one linestring).

Taras
  • 32,823
  • 4
  • 66
  • 137
Tom
  • 251
  • 1
  • 10

1 Answers1

2

Other than with expressions, you can use the line-width-assistant - it's probably easier because you don't need expressions (but you can, if you want, see below).

Select the assistent, select the source ( field that contains the values/width-information in your attribute table), than update values (that automatically selects min./max. values - otherwise set them manually) and then set width from... to ... to choose the min. to max. range of your style (like from 0.1 to 2 mm). You might also use scaling.

If you are into writing expressions, the source-field can also contain an expression - use the expression-symbol ε for that.

See screenshot for details: QGIS line-width assistant

Babel
  • 71,072
  • 14
  • 78
  • 208
  • I understand this lets me set the width by some variable. But I don't see it letting the same linestring (river) be smaller at one end and wider at the other. – Tom Sep 06 '19 at 22:50
  • Don't you have a variable for that? You wrote you have width at various points - so just use this as input. If not: are the segments of the rivers in the flow-order (from up- to downstream)? Than you could use the fid-column for that. For better answers, the format and attributes of your data is needed. – Babel Sep 06 '19 at 22:56
  • I do have the data, but don't know where to store it. If I split up every river into multiple linestrings, I know how to make it. But can one linestring have different width at different points? – Tom Sep 06 '19 at 23:25
  • 1
    OK, so that means you first have to connect your data with the line - the layer does not contain this information? And yes, with this method, your river must consist of multiple linestrings with each linestring having a certain value (width). With this method, it is not possible to stye one linestring to have different width at different points. But see here: https://anitagraser.com/2017/04/17/better-river-styles-with-tapered-lines/ – Babel Sep 07 '19 at 14:03