In one project, I am trying to adopt marvellous styles for flow maps created by @underdark.
At this moment I have the following output
Shapefile was created with the usage of Flow maps (Oursins) Plugin.
Lines have different directions, i.e. the starting point of first is the ending point of the second and vice versa. So basically the table includes lines with both directions but without any description of those directions.
However, I faced several issues
1. Varying buffers' sizes
Buffers around points shall inherit parameters from a different layer, i.e. they are not the same size.
How to make them respond to the size of the circles' radiuses? Is there any kind of scaling factor, so to make my buffers "dynamic"?
difference(
difference(
$geometry,
buffer(start_point($geometry), 500)
),
buffer(end_point($geometry), 500)
)
Maybe I to apply layer_property()
or dbvaluebyid()
or represent_value()
if I want to extract the dynamic value from a different layer?
I know that the buffer values in the expression above only produce appropriate results for line datasets which use a CRS in meters and will have to be adjusted for other units.
2. Proper allocation of arrows
I am using an expression for Arrow type > Plain
CASE
WHEN x(start_point($geometry)) - x(end_point($geometry)) < 0 THEN 1
ELSE 2
END
but still, I can not properly allocate orange halves of Arrows on the opposite side of blues.
3. The width of the arrows
I want to adjust the line width accordingly to the values of a field "FLUX"
. For that reason, I am using an expression for Arrow width
.
scale_linear("FLUX",0,10,0.1,3) * CASE WHEN "FLUX" > 1000 THEN 1 ELSE 0 END
How shall I handle those issues?
My desired output should look like this, curved lines can be ignored.
References:
CASE WHEN x(start_point($geometry)) - x(end_point($geometry)) < 0 THEN -0.5 ELSE 0.5 END
entered as "offset"-value (or use1
instead of0.5
). Or is that not desirable for your intended style?