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.

Bruno Schäpper
sumber

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 .

Ian Turton
sumber
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>

AndyHarney
sumber
Sepertinya ini sekarang berfungsi. Silakan periksa dengan versi 2.12.1 dan lebih tinggi.
ragnvald