在Geoserver的SLD文件中使用简单的数学运算?


11

是否可以在Geoserver的SLD文件中使用简单的数学运算?假设我想从数据库中读取文本大小属性并乘以它的值,我该怎么做?

<sld:TextSymbolizer>
    ...
    <sld:CssParameter name="font-size">
        <ogc:PropertyName>text_size</ogc:PropertyName> * 2.1
    </sld:CssParameter>
    ...
</sld:TextSymbolizer>

这种简单的方法显然行不通,因此我认为必须有某种方法可以实现这一目标。

Answers:


12

您可以使用数学函数ogc:Mul ogc:Div ogc:Add和ogc:Sub对属性进行简单的数学运算。

因此,您的示例将变为:

<sld:CssParameter name="font-size">
    <ogc:Mul>
       <ogc:PropertyName>text_size</ogc:PropertyName>
       <ogc:Literal>2.5</ogc:Literal>
    </ogc:Mul>
</sld:CssParameter>

唯一的问题是,从技术上讲,SLD规范可能不允许您在CssParameter中使用函数。但是,GeoServer更宽容并且会允许它。

如果您需要更复杂的功能,请参见参考页


像魅力一样工作
BrunoSchäpper2015年

我发现这<ogc:Mult>对我<ogc:Mul>没有用,但确实有用。
西蒙·奥基夫

1

据我所知,GeoServer无法执行SLD中嵌入的任何数学运算。
但是,您可以在SLD中创建一个可以<ogc:PropertyName>text_size</ogc:PropertyName>使用过滤器读取的规则,并定义自己的文本大小。
GeoServer的SLD食谱有一些例子使用的<ogc:Filter>


好像现在正在工作。请检查2.12.1及更高版本。
ragnvald
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.