Як відфільтрувати великі набори даних у Geoserver WMS?


12

Чи є хороший спосіб фільтрації наборів даних з приблизно 50 000 функцій в Geoserver? Мені доведеться вибирати від 100 до 200 функцій на основі ідентифікаторів. Ці ідентифікатори відрізняються від FeatureIds. Не вдалося знайти оператора "IN", подібного до SQL, у OGC Filter Encoding Standard. Об'єднання декількох операторів PropertyIsEqualTo працює дуже погано.

Відповіді:


8

Ага. У цьому випадку ви можете використовувати підтримку WMS CQL-фільтра GeoServer, тобто:

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

Більше інформації можна отримати на веб- сторінці http://geoserver.org/display/GEOSDOC/WMS+vendor+parameters


Чудово! Не знав, що в CQL є оператор IN. Спробувавши це з оператором "=", Apache зіткнувся з "414 Request-URI Too Long". Можливо, персонажі, збережені таким чином, мають значення.
андеркарт

2
перейти на посаду, а не отримати.
Ян Тертон

@iant: Ти маєш рацію, POST замість GET працює. Однак продуктивність залишається поганою.
underdark

чи є індекс у стовпці FID?
Ян Тертон

@iant: У мене є індекс ідентифікатора, за яким я фільтрую, але не на FID.
underdark

2

Ви можете передати список ідентифікаторів функцій таким чином:

Отримати:

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

POST:

<?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>

Варіант POST, очевидно, є більш багатослівним, але менше, ніж циклічне конструювання PropertyIsEqualTo.


Це виглядає як хороше рішення для фільтрації FeatureIds. На жаль, ідентифікатори, які я повинен фільтрувати (результати алгоритму іншої партії), не такі, як FeatureIds. Я оновив питання.
андеркарт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.