Використовуючи Geometry generator
тип шару символів, я малюю прямокутники розмірів @nv_bg_w
(ширини) та @nv_bg_h
(висоти) (змінні проекту) для лінійних ознак, або за координатами text_x, text_y
(атрибути, якщо ні NULL
), або альтернативно в центрі рядка наступним виразом:
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)))|| '))'
)
Як видно x(point_on_surface($geometry))
і y(point_on_surface($geometry))
трапляються дуже часто. Принаймні, у цьому простому прикладі це робить код важче читати, ніж це потрібно.
Отже, моє запитання: чи є спосіб збереження останніх виразів у деяких тимчасових змінних, таких як (псевдокод):
@mx=x(point_on_surface($geometry))
@my=y(point_on_surface($geometry))
geom_from_wkt(
'POLYGON((' ||
... #and so on