Передача параметрів фільтра в 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 значення" або "поле = значення"?

Я провів годину лову по документації Geoserver / ECQL, і жодна з них чітко не говорить про "додавання функцій до вашої URL-адреси в цьому форматі". Як результат, мені не ясно, чи можна використовувати змінні URL для виконання цих завдань, але, здається, деякі люди припускають, що це так.

Чи може хто-небудь допомогти з чітким прикладом робочого фільтра за допомогою WFS GeoServer з параметрами URL?

Відповіді:


25

Я думаю, ви читали це http://docs.geoserver.org/latest/en/user/tutorials/cql/cql_tutorial.html

Ось деякі зразки запитів, які надсилають запити на демо-сервер Boundless, але які повинні працювати аналогічно з вашим власним сервером, якщо у вас встановлений демо-рівень topp: state.

Виберіть, де 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, який тут використовується для скорочення виводу. Якщо ви хочете, щоб усі атрибути вийшли, або виберіть список для вибору деяких атрибутів.

Потім виберіть держави з назвою, починаючи з "Я"

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

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