Используя простой Math в файле SLD на Geoserver?

11

Можно ли использовать простой Math в файле SLD на Geoserver? Предположим, я хочу прочитать свойство размера текста из базы данных и умножить его значение, как я могу это сделать?

<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.
Однако вы можете создать правило в SLD, которое можно читать <ogc:PropertyName>text_size</ogc:PropertyName>с помощью фильтра, и определить свой собственный размер текста. GeoServer SLD Cookbook имеет некоторые примеры использования
<ogc:Filter>

AndyHarney
источник
Похоже, это сейчас работает. Пожалуйста, проверьте версии 2.12.1 и выше.
Рагнвальд