Usi la matematica semplice nel file SLD su Geoserver?


11

È possibile utilizzare la matematica semplice in un file SLD su Geoserver? Supponiamo che io voglia leggere una proprietà di dimensioni del testo da un database e moltiplicarne il valore, come posso fare?

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

Questo semplice approccio ovviamente non funziona, quindi ho pensato che ci doveva essere un modo per raggiungere questo obiettivo.

Risposte:


12

Puoi usare le funzioni matematiche ogc: Mul ogc: Div ogc: Aggiungi & ogc: Sub per fare semplici matematiche sulle proprietà.

Quindi il tuo esempio diventerebbe:

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

L'unico problema è che tecnicamente la specifica SLD potrebbe non consentire l'utilizzo di una funzione in un CssParameter. Tuttavia GeoServer è molto più indulgente e lo permetterà.

Se hai bisogno di funzioni più complesse, consulta la pagina di riferimento .


funziona come un incantesimo
Bruno Schäpper,

Ho scoperto che <ogc:Mult>non ha funzionato per me, ma <ogc:Mul>ha funzionato.
Simon O'Keefe,

1

Per quanto ne so GeoServer non può fare alcun calcolo matematico nel SLD.
È tuttavia possibile creare una regola in SLD in grado di leggere <ogc:PropertyName>text_size</ogc:PropertyName>con un filtro e definire le proprie dimensioni del testo.
Il ricettario di GeoServer SLD contiene alcuni esempi di utilizzo<ogc:Filter>


Sembra che ora stia funzionando. Verificare con le versioni 2.12.1 e successive.
Ragnvald,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.