Geoserver'da SLD dosyasında basit Math mı kullanıyorsunuz?


11

Geoserver'da bir SLD dosyasında basit Math kullanmak mümkün müdür? Bir veritabanından bir metin boyutu özelliği okumak ve değerini çarpmak istediğimi varsayalım, bunu nasıl yapabilirim?

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

Bu basit yaklaşım açıkça işe yaramıyor, bu yüzden bunu başarmanın bir yolu olmalı diye düşündüm.

Yanıtlar:


12

Özellikler üzerinde basit matematik işlemleri yapmak için ogc: Mul ogc: Div ogc: Add & ogc: Sub matematik fonksiyonlarını kullanabilirsiniz.

Böylece örneğiniz:

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

Tek sorun, teknik olarak SLD spesifikasyonunun bir CssParameter içinde bir fonksiyon kullanmanıza izin vermeyebilmesidir. Ancak GeoServer çok daha bağışlayıcıdır ve buna izin verecektir.

Daha karmaşık fonksiyonlara ihtiyacınız varsa referans sayfasına bakın .


bir cazibe gibi çalışır
Bruno Schäpper

Bunun <ogc:Mult>benim için işe yaramadığını buldum , ama işe <ogc:Mul>yaradı.
Simon O'Keefe

1

Bildiğim kadarıyla GeoServer SLD'ye gömülü bir matematik yapamaz.
Bununla birlikte, SLD'de <ogc:PropertyName>text_size</ogc:PropertyName>bir filtreyle okuyabilen bir kural oluşturabilir ve kendi metin boyutunuzu tanımlayabilirsiniz. GeoServer SLD Cookbook bazılarına sahiptir örnekler kullanmanın
<ogc:Filter>


Bu şimdi çalışıyor gibi görünüyor. Lütfen 2.12.1 ve sonraki sürümleri ile kontrol edin.
ragnvald
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.