GeoserverのSLDファイルで単純な数学を使用していますか?


11

GeoserverのSLDファイルで単純な数学を使用することは可能ですか?データベースからテキストサイズプロパティを読み取り、その値を乗算したいとします。どうすればよいですか?

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

この単純なアプローチは明らかに機能しないため、これを達成するための何らかの方法があるに違いないと思った。

回答:


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ははるかに寛容であり、許可されます。

より複雑な機能が必要な場合は、リファレンスページを参照してください


チャームのように動作します
ブルーノシェーパー

私に<ogc:Mult>はうまくいかなかったが、うまくいったことがわかっ<ogc:Mul>た。
サイモンオキーフ

1

私が知る限り、GeoServerはSLDに組み込まれた計算を実行できません。
ただし<ogc:PropertyName>text_size</ogc:PropertyName>、フィルターで読み取ることができるルールをSLDに作成し、独自のテキストサイズを定義できます。GeoServer SLDクックブックはいくつか持っているの使用を
<ogc:Filter>


これは現在機能しているようです。バージョン2.12.1以降で確認してください。
ragnvald
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.