Menggunakan Matematika sederhana dalam file SLD di Geoserver?


11

Apakah mungkin menggunakan Matematika sederhana dalam file SLD di Geoserver? Misalkan saya ingin membaca properti ukuran teks dari database dan melipatgandakan nilainya, bagaimana saya bisa melakukan ini?

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

Pendekatan sederhana ini jelas tidak berhasil, jadi saya pikir pasti ada beberapa cara untuk mencapai ini.

Jawaban:


12

Anda dapat menggunakan fungsi matematika ogc: Mulai ogc: Div ogc: Tambah & ogc: Sub untuk melakukan matematika sederhana pada properti.

Jadi contoh Anda akan menjadi:

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

Satu-satunya masalah adalah bahwa secara teknis spesifikasi SLD mungkin tidak memungkinkan Anda untuk menggunakan fungsi dalam CssParameter. Namun GeoServer jauh lebih pemaaf dan akan membiarkannya.

Jika Anda membutuhkan fungsi yang lebih kompleks, lihat halaman referensi .


bekerja seperti pesona
Bruno Schäpper

Saya menemukan bahwa <ogc:Mult>itu tidak berhasil bagi saya, tetapi <ogc:Mul>ternyata berhasil.
Simon O'Keefe

1

Sejauh yang saya ketahui, GeoServer tidak dapat melakukan matematika apa pun yang tertanam dalam SLD.
Namun Anda dapat membuat aturan dalam SLD yang dapat membaca <ogc:PropertyName>text_size</ogc:PropertyName>dengan filter, dan menentukan ukuran teks Anda sendiri.
The GeoServer SLD Cookbook memiliki beberapa contoh dari menggunakan<ogc:Filter>


Sepertinya ini sekarang berfungsi. Silakan periksa dengan versi 2.12.1 dan lebih tinggi.
ragnvald
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.