Это видео недоступно.
Сожалеем об этом.
QGIS User 0052 - Contour Labels Aggregate function
HTML-код
- Опубликовано: 24 сен 2023
- Label placement geometry generator code:
-- Name the (line) layer that "cuts" the layer
-- where the labels should be placed.
-- Also define the placement width for the labels.
with_variable('label_position_layer', 'layer_name',
with_variable('label_placement_width', 10, -- coordinate units
if( -- First, only apply to lines that actually are to be labled (improve speed)
intersects(
geometry1:=@geometry,
geometry2:=aggregate(
layer:=@label_position_layer,
aggregate:='collect',
expression:=$geometry
)
),
aggregate( -- The actual label placment
layer:=@label_position_layer,
aggregate:='collect',
expression:=intersection(
geometry1:=geometry(@parent),
geometry2:=buffer($geometry, @label_placement_width)
)
),
'') -- End of if-statement
))
Mr. Klas karlsson, I envision you as a tranquil, modest, and benevolent gentleman.
Thank you very much.
very useful, huge thank You))
My labels don't apear on the intersections. The label line only dictates witch contur gets a label
does anybody know a solution to display the altitude labels correctly - always facing to the top?
Try this (at 8 min): ruclips.net/video/-xzoVF7Z7u0/видео.htmlsi=co42L6mgXGlstQhU
absolutely awsome!
how the hillshade effect made?
Hello Klas..can I ask your inputs how to do a symbology bypass for two lines (of same layer) intersecting each other with geometry generator? Thanks
Are you having trouble exporting maps with masks on QGIS 3.32?
To me the next step after this is making the contour labels “aggregate” with the zoom level. That is, as you zoom out you see fewer. How would this be accomplished? Just using a zoom range modifier to make every third or fourth one visible, etc? Would that also be possible to do with SVG objects so that as you zoom out they “combine” to reduce clutter.
Not sure about SVG, but for selective rendering depending on scale you can absolutely use geometry generators:
with_variable(
'factor',
to_int(
scale_linear(
value:=@map_scale,
domain_min:=1000000,
domain_max:=10000000,
range_min:=1,
range_max:=10)),
if("ELEV"%(@factor*100)=0,
$geometry,'')
)
i'm the winner... 1 hundred
... thank you
Am I wrong that for the intersect you can use the overlay_intersects function?
You can usually do a lot of things multiple ways. In this case you are right, overlay_intersects() gets you the same result as intersects(aggregate...) but with less code. Well spotted!