¿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.

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 .


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>


Parece que esto ahora está funcionando. Verifique con las versiones 2.12.1 y superiores.
ragnvald
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.