Passare i parametri di filtro a GeoServer WFS tramite URL?


17

Sto cercando di utilizzare la funzione CURL di PHP per recuperare informazioni geoJSON da un'istanza di GeoServer. Lo sto facendo usando le variabili url invece di provare a costruire una richiesta GetFeature xml completa.

Tuttavia, vorrei essere in grado di ottenere un sottoinsieme dei risultati basato su alcuni dei contenuti dei campi delle proprietà.

Quindi, mentre posso ottenere tutti i risultati usando questo 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

posso anche limitare i risultati a "Where field LIKE value" o "field = value"?

Ho trascorso un'ora a esplorare la documentazione Geoserver / ECQL e nessuno di questi afferma chiaramente "aggiungi le funzioni al tuo URL in questo formato". Di conseguenza, non sono chiaro se è possibile utilizzare le variabili url per eseguire queste attività, ma alcune persone sembrano suggerire che lo sia.

Qualcuno può aiutare con un chiaro esempio di un filtro funzionante utilizzando WFS di GeoServer con parametri URL?

Risposte:


25

Suppongo che tu abbia letto questo http://docs.geoserver.org/latest/en/user/tutorials/cql/cql_tutorial.html

Ecco alcune richieste di esempio che inviano query per il server demo di Boundless, ma che dovrebbero funzionare in modo simile con il proprio server se si dispone di topp layer demo: stati installati.

Seleziona dove 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'

Si noti l'uso del parametro WFS standard PROPERTYNAME utilizzato qui per abbreviare l'output. Lasciare uscire se si desidera tutti gli attributi o scrivere un elenco per selezionare alcuni attributi.

Quindi selezionare gli stati con il nome che inizia 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'

Nota che la stringa di confronto è 'I%' ma almeno con il mio browser (Firefox 31.0) deve essere codificata in URL e arriva 'I% 25'. Questo non è menzionato nel tutorial CQL. Se i tuoi filtri falliscono, può significare che devi codificare l'URL anche di alcuni altri caratteri nel filtro.

Se hai bisogno di geojson aggiungi & 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
Per chiunque abbia difficoltà con questo, puoi anche aggiungere più filtri CQL all'URL usando il formato &CQL_FILTER=field=value AND field=value AND field=value, ma devi codificare l'URL in "AND" in modo che gli spazi siano codificati. Spero che questo aiuti a risparmiare qualcun altro tempo.
Ambulare,

Risposta molto utile, il tutorial geoserver lascia fuori così tante cose. Come estenderesti la query per restituire la funzione con coordinate XY? O tutte le funzioni all'interno di un rettangolo di selezione?
Luffydude,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.