¿Usa matemática simple en un archivo SLD en Geoserver?

11

¿Es posible usar Math simple en un archivo SLD en Geoserver? Supongamos que quiero leer una propiedad de tamaño de texto de una base de datos y multiplicar su valor, ¿cómo puedo hacer esto?

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

Este enfoque simple obviamente no funciona, así que pensé que debía haber alguna forma de lograrlo.

Bruno Schäpper
fuente

Respuestas:

12

Puede usar las funciones matemáticas ogc: Mul ogc: Div ogc: Add & ogc: Sub para hacer cálculos matemáticos simples en las propiedades.

Entonces su ejemplo sería:

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

El único problema es que técnicamente la especificación SLD puede no permitirle usar una función en un CssParameter. Sin embargo, GeoServer es mucho más indulgente y lo permitirá.

Si alguna vez necesita funciones más complejas, consulte la página de referencia .

Ian Turton
fuente
funciona como un encanto
Bruno Schäpper
Descubrí que eso <ogc:Mult>no funcionó para mí, pero lo <ogc:Mul>hizo.
Simon O'Keefe
1

Por lo que sé, GeoServer no puede hacer ningún cálculo matemático integrado en el SLD.
Sin embargo, puede crear una regla en el SLD que pueda leer <ogc:PropertyName>text_size</ogc:PropertyName>con un filtro y definir su propio tamaño de texto.
El libro de cocina GeoServer SLD tiene algunos ejemplos de uso<ogc:Filter>

AndyHarney
fuente
Parece que esto ahora está funcionando. Verifique con las versiones 2.12.1 y superiores.
ragnvald