Verwenden Sie einfache Mathematik in einer SLD-Datei auf Geoserver?

11

Ist es möglich, einfache Mathematik in einer SLD-Datei auf Geoserver zu verwenden? Angenommen, ich möchte eine Textgrößeneigenschaft aus einer Datenbank lesen und ihren Wert multiplizieren. Wie kann ich das tun?

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

Dieser einfache Ansatz funktioniert offensichtlich nicht, daher dachte ich, dass es einen Weg geben muss, dies zu erreichen.

Bruno Schäpper
quelle

Antworten:

12

Sie können die mathematischen Funktionen ogc: Mul ogc: Div ogc: Add & ogc: Sub verwenden, um einfache Berechnungen für Eigenschaften durchzuführen.

Ihr Beispiel würde also werden:

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

Das einzige Problem ist, dass Sie in der SLD-Spezifikation technisch möglicherweise keine Funktion in einem CssParameter verwenden können. GeoServer ist jedoch viel verzeihender und wird es zulassen.

Wenn Sie jemals komplexere Funktionen benötigen, lesen Sie die Referenzseite .

Ian Turton
quelle
funktioniert wie ein Zauber
Bruno Schäpper
Ich fand, dass <ogc:Mult>das bei mir nicht funktionierte, aber <ogc:Mul>tat.
Simon O'Keefe
1

Soweit mir bekannt ist, kann GeoServer keine in das SLD eingebetteten Berechnungen durchführen.
Sie können jedoch im SLD eine Regel erstellen, die <ogc:PropertyName>text_size</ogc:PropertyName>mit einem Filter lesen und Ihre eigene Textgröße definieren kann.
Das GeoServer SLD - Kochbuch hat einige Beispiele der Verwendung<ogc:Filter>

AndyHarney
quelle
Scheint so, als ob das jetzt funktioniert. Bitte überprüfen Sie mit Versionen 2.12.1 und höher.
Ragnvald