通过使用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
Jochen,您找到问题中所描述问题的任何解决方案了吗?我正面临类似的需求,并且正在寻找相同的东西
—
iulian