En utilisant le Geometry generatortype de couche de symboles, je dessine des rectangles de dimensions @nv_bg_w(largeur) et @nv_bg_h(hauteur) (variables de projet) pour aligner des entités, soit aux coordonnées text_x, text_y(attributs, sinon NULL) soit alternativement au centre de la ligne par l'expression suivante:
geom_from_wkt(
'POLYGON((' ||
COALESCE("text_x", x(point_on_surface($geometry))) ||' '|| COALESCE("text_y", y(point_on_surface($geometry))) || ','||
(to_real(COALESCE("text_x", x(point_on_surface($geometry)))+ @nv_bg_w )) ||' '|| COALESCE("text_y", y(point_on_surface($geometry))) || ','||
(to_real(COALESCE("text_x", x(point_on_surface($geometry)))+ @nv_bg_w )) ||' '|| (to_real(COALESCE("text_y", y(point_on_surface($geometry))))- @nv_bg_h ) || ','||
COALESCE("text_x", x(point_on_surface($geometry))) ||' '|| (to_real(COALESCE("text_y", y(point_on_surface($geometry))))- @nv_bg_h ) || ','||
COALESCE("text_x", x(point_on_surface($geometry))) ||' '|| COALESCE("text_y", y(point_on_surface($geometry)))|| '))'
)
Comme on peut le voir x(point_on_surface($geometry))et y(point_on_surface($geometry))se produire très souvent. Au moins dans cet exemple simple, cela rend le code plus difficile à lire qu'il ne le devrait.
Ma question est donc la suivante: existe-t-il un moyen de stocker ces dernières expressions dans certaines variables temporaires, quelque chose comme (pseudocode):
@mx=x(point_on_surface($geometry))
@my=y(point_on_surface($geometry))
geom_from_wkt(
'POLYGON((' ||
... #and so on
