Làm cách nào để lọc các bộ dữ liệu lớn trong Geoserver WMS?


12

Có cách nào tốt để lọc bộ dữ liệu với khoảng 50.000 tính năng trong Geoserver không? Tôi phải chọn từ 100 đến 200 tính năng dựa trên id. Các id này khác với FeatureIds. Không thể tìm thấy toán tử "IN" tương tự như SQL trong Tiêu chuẩn mã hóa bộ lọc OGC. Kết hợp nhiều toán tử PropertyIsEqualTo thực hiện rất kém.

Câu trả lời:


8

Ah. Trong trường hợp đó, bạn có thể sử dụng hỗ trợ bộ lọc WMS CQL của GeoServer, tức là:

http://<hostname>/wms?service=WMS&version=1.1.1&request=GetMap&....&cql_filter=IN ('id_1','id_2','id_3')

Thêm thông tin có sẵn tại http://geoserver.org/display/GEOSDOC/WMS+vendor+parameter


Tuyệt quá! Không biết rằng có một toán tử IN trong CQL. Trong khi thử điều này với toán tử "=", Apache đã chạy vào "414 Request-URI Too Long". Có lẽ các nhân vật được lưu theo cách này tạo ra sự khác biệt.
underdark

2
chuyển sang bài thay vì nhận.
Ian Turton

@iant: Bạn nói đúng, POST thay vì GET hoạt động. Hiệu suất vẫn còn mặc dù.
underdark

Bạn có một chỉ mục trên cột FID không?
Ian Turton

@iant: Tôi có một chỉ mục trên id tôi đang lọc, nhưng không phải trên FID.
underdark

2

Bạn có thể vượt qua một danh sách các id tính năng theo cách sau:

ĐƯỢC:

http://<hostname>/wfs?service=WFS&version=1.1.0&request=GetFeature&typename=foo&featureid=id_1,id_2,id_3

BÀI ĐĂNG:

<?xml version="1.0" encoding="UTF-8"?>
<wfs:GetFeature version="1.1.0" outputFormat="text/xml; subtype=gml/3.1.1" service="WFS" resultType="results" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd" xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <wfs:Query typeName="foo">
        <wfs:PropertyName>String</wfs:PropertyName>
        <ogc:Filter>
            <ogc:FeatureId fid="id_1"/>
            <ogc:FeatureId fid="id_2"/>
            <ogc:FeatureId fid="id_3"/>
        </ogc:Filter>
    </wfs:Query>
</wfs:GetFeature>

Tùy chọn POST rõ ràng dài dòng hơn, nhưng ít hơn việc lặp các cấu trúc PropertyIsEqualTo.


Đó có vẻ là một giải pháp tốt để lọc FeatureIds. Thật không may, các id tôi phải lọc (kết quả của thuật toán của một bên khác) không giống với FeatureIds. Tôi cập nhật câu hỏi.
underdark
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.