Processing math: 100%

23 votos

¿Pasar parámetros de filtro a GeoServer WFS mediante URL?

Estoy intentando utilizar la función CURL de PHP para obtener información geoJSON de una instancia de GeoServer. Estoy haciendo esto usando variables url en lugar de tratar de construir una solicitud completa xml GetFeature.

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

Así, mientras que puedo obtener todos los resultados utilizando 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 también limitar los resultados a "Donde campo LIKE valor" o "campo = valor"?

He pasado una hora revisando la documentación de Geoserver/ECQL y en ninguna se dice claramente "añada las funciones a su URL en este formato". Como resultado, no tengo claro si es posible utilizar variables url para realizar estas tareas, pero algunas personas parecen sugerir que es.

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

35voto

Joe Puntos 16

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

Aquí vienen algunas peticiones de ejemplo que están enviando consultas para el servidor demo de Boundless pero que deberían funcionar de forma similar con tu propio servidor si tienes instalada la capa demo topp:states.

Seleccionar donde 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 utiliza aquí para acortar la salida. Déjelo fuera si desea todos los atributos, o escriba una lista para seleccionar algunos atributos.

A continuación, seleccione los Estados cuyo nombre empiece por "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'

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

Si necesita geojson añada &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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X