Використовуючи простий 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>


Схоже, це зараз працює. Перевірте версії 2.12.1 і новіших версій.
ragnvald
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.