Passando parâmetros de filtro para o GeoServer WFS via URL?


17

Estou tentando usar a função CURL do PHP para buscar informações geoJSON de uma instância do GeoServer. Estou fazendo isso usando variáveis ​​de URL em vez de tentar construir uma solicitação GetFeature xml completa.

No entanto, eu gostaria de obter um subconjunto dos resultados com base em alguns conteúdos dos campos de propriedades.

Então, enquanto eu posso obter todos os resultados usando este 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

também posso limitar os resultados para "Onde o campo LIKE value" ou "field = value"?

Passei uma hora vasculhando a documentação do Geoserver / ECQL e nada indica claramente "anexar as funções à sua URL neste formato". Como resultado, não estou claro se é possível usar variáveis ​​de URL para executar essas tarefas, mas algumas pessoas parecem sugerir que sim.

Alguém pode ajudar com um exemplo claro de um filtro funcional usando o WFS do GeoServer com parâmetros de URL?

Respostas:


25

Suponho que você esteja lendo este http://docs.geoserver.org/latest/en/user/tutorials/cql/cql_tutorial.html

A seguir, alguns exemplos de pedidos que estão enviando consultas para o servidor de demonstração do Boundless, mas que devem funcionar de maneira semelhante com o seu próprio servidor se você tiver o topp da camada de demonstração: states instalado.

Selecione onde STATE_NAME é 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 o uso do parâmetro WFS padrão PROPERTYNAME, usado aqui para encurtar a saída. A licença está desativada se você desejar todos os atributos ou escreva uma lista para selecionar alguns atributos.

Em seguida, selecione os estados com o nome começando com "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'

Observe que a sequência de comparação é 'I%', mas pelo menos no meu navegador (Firefox 31.0), ela deve ser codificada em URL e vem 'I% 25'. Isso não é mencionado no tutorial CQL. Se seus próprios filtros falharem, isso pode significar que você também deve codificar por URL alguns outros caracteres no seu filtro.

Se você precisar de geojson, adicione & 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
Para qualquer outra pessoa que esteja enfrentando problemas, também é possível adicionar vários filtros CQL à URL usando o formato &CQL_FILTER=field=value AND field=value AND field=value- mas é necessário codificar a URL "AND" para que os espaços sejam codificados. Espero que isso ajude a economizar tempo de outra pessoa.
Ambulare

Resposta muito útil, o tutorial do geoserver deixa de fora muitas coisas. Como você estenderia a consulta para retornar o recurso que possui coordenadas XY? Ou todos os recursos dentro de uma caixa delimitadora?
Luffydude
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.