จะกรองชุดข้อมูลขนาดใหญ่ใน Geoserver WMS ได้อย่างไร


12

มีวิธีที่ดีในการกรองชุดข้อมูลที่มีคุณสมบัติประมาณ 50,000 รายการใน Geoserver หรือไม่? ฉันต้องเลือกระหว่าง 100 และ 200 ฟีเจอร์ตามรหัส รหัสเหล่านี้แตกต่างจาก FeatureIds ไม่พบโอเปอเรเตอร์ "IN" ที่คล้ายกับ SQL ในมาตรฐานการเข้ารหัสตัวกรอง OGC การรวมตัวดำเนินการ 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


ที่ดี! ไม่ทราบว่ามีตัวดำเนินการ IN ใน CQL ในขณะที่พยายามทำเช่นนี้กับโอเปอเรเตอร์ "=" Apache จะพบกับ "414 Request-URI Too Long" บางทีตัวละครที่บันทึกไว้ด้วยวิธีนี้สร้างความแตกต่าง
Underdark

2
เปลี่ยนเป็นโพสต์แทนการรับ
Ian Turton

@iant: ถูกต้อง POST แทนที่จะเป็น GET ใช้งานได้ ประสิทธิภาพยังคงแย่อยู่
underdark

คุณมีดัชนีในคอลัมน์ FID หรือไม่
Ian Turton

@iant: ฉันมีดัชนีบน ID ที่ฉันกำลังค้นหา แต่ไม่ใช่ใน FID
underdark

2

คุณสามารถส่งรายการรหัสคุณลักษณะในลักษณะดังต่อไปนี้:

ได้รับ:

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

โพสต์:

<?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 ฉันอัพเดทคำถาม
underdark
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.