¿Pasar parámetros de filtro a GeoServer WFS a través de URL?

17

Estoy tratando de usar la función CURL de PHP para obtener información geoJSON de una instancia de GeoServer. Estoy haciendo esto usando variables de URL en lugar de intentar construir una solicitud GetFeature xml completa.

Sin embargo, me gustaría poder obtener un subconjunto de los resultados en función de algunos de los contenidos de los campos de propiedades.

Entonces, aunque puedo obtener todos los resultados usando esta 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

¿puedo limitar también los resultados a "Donde el valor del campo ME GUSTA" o "campo = valor"?

He pasado una hora buscando en la documentación de Geoserver / ECQL y nada de eso dice claramente "agregar las funciones a su URL en este formato". Como resultado, no estoy claro si es posible usar variables de URL para realizar estas tareas, pero algunas personas parecen sugerir que sí.

¿Alguien puede ayudar con un ejemplo claro de un filtro que funcione utilizando el WFS de GeoServer con parámetros de URL?

Ambulare
fuente

Respuestas:

25

Supongo que has estado leyendo este http://docs.geoserver.org/latest/en/user/tutorials/cql/cql_tutorial.html

Aquí vienen algunas solicitudes de muestra que envían consultas para el servidor de demostración de Boundless, pero que deberían funcionar de manera similar con su propio servidor si tiene la capa de demostración topp: state instalada.

Seleccione dónde STATE_NAME es 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'

Observe el uso del parámetro estándar WFS PROPERTYNAME que se usa aquí para acortar la salida. Dejar fuera si desea todos los atributos, o escriba una lista para seleccionar algunos atributos.

Luego seleccione estados con nombre que comience con "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'

Tenga en cuenta que la cadena de comparación es 'I%' pero al menos con mi navegador (Firefox 31.0) debe estar codificada en URL y viene 'I% 25'. Esto no se menciona en el tutorial de CQL. Si sus propios filtros fallan, puede significar que debe codificar con URL también algunos otros caracteres en su filtro.

Si necesita geojson, agregue & 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
usuario30184
fuente
10
Para cualquier otra persona que tenga dificultades con esto, también puede agregar múltiples filtros CQL a la URL usando el formato &CQL_FILTER=field=value AND field=value AND field=value, pero necesita codificar la URL "Y" para que los espacios estén codificados. Espero que esto ayude a ahorrar tiempo a otra persona.
Ambulare
Respuesta muy útil, el tutorial de geoservidor deja de lado muchas cosas. ¿Cómo ampliaría la consulta para devolver la función que tiene coordenadas XY? ¿O todas las características dentro de un cuadro delimitador?
Luffydude