ผ่านพารามิเตอร์ตัวกรองไปยัง GeoServer WFS ผ่าน URL หรือไม่


17

ฉันพยายามใช้ฟังก์ชั่น CURL ของ PHP เพื่อดึงข้อมูล geoJSON จากอินสแตนซ์ GeoServer ฉันทำสิ่งนี้โดยใช้ตัวแปร url แทนที่จะพยายามสร้างคำขอ xml GetFeature แบบเต็ม

อย่างไรก็ตามฉันต้องการรับชุดย่อยของผลลัพธ์ตามเนื้อหาของฟิลด์คุณสมบัติบางอย่าง

ดังนั้นในขณะที่ฉันสามารถรับผลลัพธ์ทั้งหมดโดยใช้ URL นี้:

http://www.myURL.com/geoserver/namespace/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=layername&outputFormat=json&BBOX=1,2,3,4

ฉันสามารถ จำกัด ผลลัพธ์ให้อยู่ใน "ตำแหน่งที่ช่อง LIKE value" หรือ "field = value" ได้หรือไม่

ฉันใช้เวลาหนึ่งชั่วโมงในการสืบค้นเอกสาร Geoserver / ECQL และไม่มีสิ่งใดที่ระบุอย่างชัดเจนว่า "ผนวกฟังก์ชั่นเข้ากับ URL ของคุณในรูปแบบนี้" เป็นผลให้ฉันไม่ชัดเจนถ้าเป็นไปได้ที่จะใช้ตัวแปร url เพื่อทำงานเหล่านี้ แต่บางคนดูเหมือนจะแนะนำว่ามันเป็น

ทุกคนสามารถช่วยเหลือตัวอย่างที่ชัดเจนของตัวกรองที่ใช้งานได้โดยใช้ WFS ของ GeoServer พร้อมพารามิเตอร์ URL หรือไม่

คำตอบ:


25

ฉันคิดว่าคุณได้อ่านhttp://docs.geoserver.org/latest/en/user/tutorials/cql/cql_tutorial.htmlนี้

ต่อไปนี้เป็นตัวอย่างคำขอที่ส่งคำสั่งสำหรับเซิร์ฟเวอร์ตัวอย่างของ Boundless แต่ควรทำงานคล้ายกับเซิร์ฟเวอร์ของคุณเองหากคุณติดตั้งชั้นเลเยอร์ topp: สถานะ

เลือกที่ STATE_NAME คือรัฐอิลลินอยส์

http://demo.opengeo.org/geoserver/wfs?service=wfs&version=1.0.0&request=getfeature&typename=topp:states&PROPERTYNAME=STATE_NAME&CQL_FILTER=STATE_NAME='Illinois'

สังเกตการใช้พารามิเตอร์ WFS มาตรฐาน PROPERTYNAME ซึ่งใช้ที่นี่เพื่อตัดทอนเอาต์พุต ออกจะไม่ทำงานหากคุณต้องการคุณลักษณะทั้งหมดหรือเขียนรายการเพื่อเลือกคุณลักษณะบางอย่าง

จากนั้นเลือกรัฐที่มีชื่อขึ้นต้นด้วย "I"

http://demo.opengeo.org/geoserver/wfs?service=wfs&version=1.0.0&request=getfeature&typename=topp:states&PROPERTYNAME=STATE_NAME&CQL_FILTER=STATE_NAME LIKE 'I%25'

โปรดสังเกตว่าสตริงเปรียบเทียบคือ 'I%' แต่อย่างน้อยกับเบราว์เซอร์ของฉัน (Firefox 31.0) จะต้องมีการเข้ารหัส URL และมาเป็น 'I% 25' สิ่งนี้ไม่ได้กล่าวถึงในแบบฝึกหัด CQL หากตัวกรองของคุณล้มเหลวอาจหมายความว่าคุณต้องเข้ารหัส URL เช่นกันอักขระอื่น ๆ ในตัวกรองของคุณ

หากคุณต้องการ geojson เพิ่ม & outputformat = application / json

http://demo.opengeo.org/geoserver/wfs?service=wfs&version=1.0.0&request=getfeature&typename=topp:states&PROPERTYNAME=STATE_NAME&CQL_FILTER=STATE_NAME LIKE 'I%25'&outputformat=application/json

10
สำหรับคนอื่นที่กำลังดิ้นรนกับสิ่งนี้คุณยังสามารถเพิ่มตัวกรอง CQL หลายตัวใน URL โดยใช้รูปแบบ&CQL_FILTER=field=value AND field=value AND field=value- แต่คุณต้องเข้ารหัส URL "และ" เพื่อให้ช่องว่างถูกเข้ารหัส หวังว่านี่จะช่วยคนอื่นประหยัดเวลา
Ambulare

คำตอบที่มีประโยชน์มาก ๆ , การสอน geoserver นั้นเพิ่งทำหลายสิ่ง คุณจะขยายคิวรีเพื่อส่งคืนฟีเจอร์ที่มีพิกัด XY อย่างไร หรือฟีเจอร์ทั้งหมดภายในกล่องที่มีขอบเขต
Luffydude
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.