Suite

Passer des paramètres de filtre à GeoServer WFS via une URL ?

Passer des paramètres de filtre à GeoServer WFS via une URL ?


J'essaie d'utiliser la fonction CURL de PHP pour récupérer les informations geoJSON à partir d'une instance GeoServer. Je fais cela en utilisant des variables d'URL plutôt que d'essayer de construire une requête XML complète GetFeature.

Cependant, j'aimerais pouvoir obtenir un sous-ensemble des résultats en fonction du contenu de certains champs de propriété.

Ainsi, bien que je puisse obtenir tous les résultats en utilisant cette 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

puis-je également limiter les résultats à "Où champ LIKE valeur" ou "champ = valeur" ?

J'ai passé une heure à parcourir la documentation Geoserver/ECQL et rien n'indique clairement "ajouter les fonctions à votre URL dans ce format". En conséquence, je ne sais pas s'il est possible d'utiliser des variables d'URL pour effectuer ces tâches, mais certaines personnes semblent suggérer que c'est le cas.

Quelqu'un peut-il aider avec un exemple clair de filtre fonctionnel utilisant le WFS de GeoServer avec des paramètres d'URL ?


Je suppose que vous avez lu ceci http://docs.geoserver.org/latest/en/user/tutorials/cql/cql_tutorial.html

Voici quelques exemples de requêtes qui envoient des requêtes pour le serveur de démonstration de Boundless mais qui devraient fonctionner de la même manière avec votre propre serveur si vous avez installé la couche de démonstration topp:states.

Sélectionnez où STATE_NAME est l'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'

Notez l'utilisation du paramètre WFS standard PROPERTYNAME qui est utilisé ici pour raccourcir la sortie. Laisser est sorti si vous voulez tous les attributs, ou écrivez une liste pour sélectionner certains attributs.

Sélectionnez ensuite les états dont le nom commence par "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'

Notez que la chaîne de comparaison est 'I%' mais au moins avec mon navigateur (Firefox 31.0), elle doit être codée en URL et elle vient 'I%25'. Ceci n'est pas mentionné dans le tutoriel CQL. Si vos propres filtres échouent, cela peut signifier que vous devez également encoder d'autres caractères dans votre filtre.

Si vous avez besoin de geojson, ajoutez &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