Sử dụng toán đơn giản trong tệp SLD trên Geoserver?


11

Có thể sử dụng Toán đơn giản trong tệp SLD trên Geoserver không? Giả sử tôi muốn đọc một thuộc tính kích thước văn bản từ cơ sở dữ liệu và nhân giá trị của nó, làm thế nào tôi có thể làm điều này?

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

Cách tiếp cận đơn giản này rõ ràng không hiệu quả, vì vậy tôi nghĩ rằng phải có một số cách để đạt được điều này.

Câu trả lời:


12

Bạn có thể sử dụng các hàm toán học ogc: Mul ogc: Div ogc: Add & ogc: Sub để thực hiện các phép toán đơn giản trên các thuộc tính.

Vì vậy, ví dụ của bạn sẽ trở thành:

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

Vấn đề duy nhất là về mặt kỹ thuật, đặc tả SLD có thể không cho phép bạn sử dụng một hàm trong CssParameter. Tuy nhiên GeoServer dễ tha thứ hơn nhiều và sẽ cho phép điều đó.

Nếu bạn cần các chức năng phức tạp hơn, xem trang tham khảo .


hoạt động như một bùa mê
Bruno Schäpper

Tôi thấy rằng <ogc:Mult>nó không làm việc cho tôi, nhưng <ogc:Mul>đã làm.
Simon O'Keefe

1

Theo như tôi biết GeoServer không thể thực hiện bất kỳ phép toán nào được nhúng vào SLD.
Tuy nhiên, bạn có thể tạo quy tắc trong SLD có thể đọc <ogc:PropertyName>text_size</ogc:PropertyName>bằng bộ lọc và xác định kích thước văn bản của riêng bạn.
Các geoserver SLD Cookbook có một số ví dụ của việc sử dụng<ogc:Filter>


Có vẻ như điều này hiện đang làm việc. Vui lòng kiểm tra với các phiên bản 2.12.1 trở lên.
ragnvald
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.