Geoserver WMS'deki büyük veri kümelerine nasıl filtre uygulanır?


12

Geoserver'da yaklaşık 50.000 özelliğe sahip veri kümelerini filtrelemenin iyi bir yolu var mı? Kimlikleri temel alarak 100 ile 200 arasında özellik seçmek zorundayım. Bu kimlikler FeatureIds'den farklıdır. OGC Filtre Kodlama Standardı'nda SQL'e benzer bir "IN" operatörü bulunamadı. Birden fazla PropertyIsEqualTo işleçlerini birleştirmek gerçekten kötü performans gösteriyor.

Yanıtlar:


8

Ah. Bu durumda, GeoServer'ın WMS CQL filtre desteğini kullanabilirsiniz;

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

Daha fazla bilgiye http://geoserver.org/display/GEOSDOC/WMS+vendor+parameters adresinden ulaşılabilir.


Harika! CQL bir IN operatörü olduğunu bilmiyordum. "=" Operatörüyle bunu denerken, Apache "414 Request-URI Too Long" ile karşılaştı. Belki bu şekilde kaydedilen karakterler bir fark yaratır.
underdark

2
get yerine gönderiye geçin.
Ian Turton

@iant: Haklısın, GET yerine POST. Yine de performans düşük.
underdark

sütununda bir dizininiz var mı?
Ian Turton

@iant: Filtrelediğim kimlik üzerinde bir dizin var, ancak FID'lerde değil.
underdark

2

Özellik kimlikleri listesini aşağıdaki şekilde iletebilirsiniz:

ALMAK:

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

İLETİ:

<?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 seçeneği açıkçası daha ayrıntılı, ancak PropertyIsEqualTo yapılarını döngüden daha az.


FeatureIds filtrelemek için iyi bir çözüm gibi görünüyor. Ne yazık ki, filtrelemek zorunda olduğum kimlikleri (farklı bir tarafın algoritmasının sonuçları) FeatureIds ile aynı değil. Soruyu güncelledim.
underdark
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.