Melewati Parameter Filter ke GeoServer WFS via URL?

17

Saya mencoba menggunakan fungsi CURL PHP untuk mengambil informasi geoJSON dari instance GeoServer. Saya melakukan ini menggunakan variabel url daripada mencoba membangun permintaan GetFeature xml penuh.

Namun, saya ingin mendapatkan subset hasil berdasarkan beberapa konten bidang properti.

Jadi, sementara saya bisa mendapatkan semua hasil menggunakan url ini:

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

dapatkah saya juga membatasi hasil ke "Di mana bidang nilai LIKE" atau "bidang = nilai"?

Saya telah menghabiskan satu jam membaca dokumentasi Geoserver / ECQL dan tidak ada yang dengan jelas menyatakan "menambahkan fungsi ke URL Anda dalam format ini". Akibatnya, saya tidak jelas apakah mungkin menggunakan variabel url untuk melakukan tugas-tugas ini, tetapi beberapa orang tampaknya menyarankan itu.

Adakah yang bisa membantu dengan contoh yang jelas dari filter yang berfungsi menggunakan WFS GeoServer dengan parameter URL?

Ambulare
sumber

Jawaban:

25

Saya kira Anda telah membaca http://docs.geoserver.org/latest/en/user/tutorials/cql/cql_tutorial.html ini

Ini dia beberapa contoh permintaan yang mengirimkan permintaan untuk server demo Boundless tetapi yang harus bekerja sama dengan server Anda sendiri jika Anda memiliki lapisan atas demo: status diinstal.

Pilih di mana STATE_NAME adalah Illinois

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'

Perhatikan penggunaan parameter WFS standar PROPERTYNAME yang digunakan di sini untuk mempersingkat output. Biarkan keluar jika Anda ingin semua atribut, atau menulis daftar untuk memilih beberapa atribut.

Kemudian pilih negara dengan nama dimulai dengan "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'

Perhatikan bahwa string pembandingnya adalah 'I%' tetapi setidaknya dengan browser saya (Firefox 31.0) harus dikodekan dengan URL dan muncul 'I% 25'. Ini tidak disebutkan dalam tutorial CQL. Jika filter Anda gagal, itu mungkin berarti Anda harus menyandikan URL juga beberapa karakter lain di filter Anda.

Jika Anda memerlukan geojson add & 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
pengguna30184
sumber
10
Untuk orang lain yang berjuang dengan ini, Anda juga dapat menambahkan beberapa filter CQL ke URL menggunakan format &CQL_FILTER=field=value AND field=value AND field=value- tetapi Anda perlu URL menyandikan "DAN" sehingga spasi dikodekan. Semoga ini bisa membantu menghemat waktu orang lain.
Ambulare
Jawaban yang sangat berguna, tutorial geoserver hanya meninggalkan begitu banyak hal. Bagaimana Anda memperpanjang kueri untuk mengembalikan fitur yang memiliki koordinat XY? Atau semua fitur di dalam kotak pembatas?
Luffydude