Communication avec un service WFS dans un navigateur Web

La ressource en ligne de chaque opération prise en charge par un serveur WFS conforme est une adresse URL (Uniform Resource Locator) HTTP), donc un service WFS peut être considéré comme un service REST (Representational State Transfer)Representational State Transfer. Vous pouvez utiliser ces opérations par l'intermédiaire de paramètres URL afin d'obtenir des métadonnées de service, des informations sur le type d'entité et des entités codées à l'aide de GML depuis le service WFS. Ces opérations et paramètres sont décrits en détail dans les spécifications WMS de l'OGC.

Types de clients

Les services WFS peuvent être utilisés par tout client capable de lire des données WFS. Un navigateur Web constitue généralement le client le plus simple d'un service WFS. Les demandes WFS peuvent être émises via HTTP ; les réponses ou exceptions sont renvoyées par l'intermédiaire du navigateur. Tous les services WFS prennent en charge trois opérations : GetCapabilities, DescribeFeatureType et GetFeature.

De nombreux clients tiers permettent d'utiliser les services WFS. Pour utiliser les services WFS, le client doit prendre en charge la norme WFS 1.0.0 ou 1.1.0 et le profil GML d'entités simples. En outre, ArcGIS for Desktop peut fonctionner avec des WFS. Pour obtenir de l'aide sur l'utilisation des services WFS dans ArcMap, reportez-vous à la rubrique Procédure d'utilisation de WFS avec ArcGIS for Desktop.

Structure des URL WFS

Pour établir une connexion au service, vous devez connaître son URL, qui prend le format suivant :

http://gisserver.domain.com:6080/arcgis/services/<nom du dossier (le cas échéant)>/<nom du service>/<type de service>/WFSServer?

Si, par exemple, vous avez activé la fonctionnalité WFS sur le service de carte WFSDemoService dans un dossier DemoFolder sur le serveur gisserver.domain.com au port 6080, l'URL serait la suivante :

http://gisserver.domain.com:6080/arcgis/services/DemoFolder/WFSDemoService/MapServer/WFSServer?request=GetCapabilities

De même, si vous avez activé la fonctionnalité WFS sur un service de géodonnées, l'URL serait la suivante :

http://gisserver.domain.com:6080/arcgis/services/DemoFolder/WFSDemoService/GeoDataServer/WFSServer?

Utilisation de filtres

Vous pouvez utiliser le paramètre Filtre dans WFS afin d'obtenir des entités spécifiques dans un service WFS. Le paramètre Filtre présente l'avantage de faire partie du codage standard de la combinaison mot-clé/valeur défini dans la section 9.5 de WFS 1.1 Implementation Specification et de pouvoir ainsi être ajouté à la fin des requêtes HTTP. Les services WFS se conforment à la spécification OpenGIS Filter Encoding Implementation (FE) version 1.1 de l'OGC.

Voici les filtres que vous pouvez appliquer :

Géométrie

Spatial

Logique

Comparaison

Tri

Enveloppe

BBOX

Et

EqualTo

SortBy*

Point

Egal à

Ou

NotEqualTo

Multi-points

Disjoint

Non

LessThan

LineString

Intersection

GreaterThan

Polygone

Croise

LessThanOrEqualTo

Touche

GreaterThanOrEqualTo

Distance de recherche

Comme

Contient

Entre

Superpose

NullCheck

RemarqueRemarque :

*Le filtre SortBy s'applique uniquement aux services WFS basés sur les données stockées dans une géodatabase ArcSDE.

Par exemple, si vous avez créé un FeatureType nommé BlockGroups dans un service WFS, vous pouvez demander les entités BlockGroup dans l'étendue -122.423192682619, 37.7877919206256, -122.421377806544, 37.7893634225143 en envoyant la requête GetFeature suivante :

http://gisserver.domain.com:6080/arcgis/services/playground/sanfrancisco_wfs/MapServer/WFSServer?service=WFS&request=GetFeature&version=1.1.0&typename=esri:blockgroups&Filter=<ogc:Filter><ogc:BBOX><ogc:PropertyName>Shape</ogc:PropertyName><gml:Box srsName="urn:x-ogc:def:crs:EPSG:4326"><gml:coordinates>37.7877919206256,-122.423192682619 37.7893634225143,-122.421377806544</gml:coordinates></gml:Box></ogc:BBOX></ogc:Filter>

Pour demander une entité BlockGroup contenant dans une entité ponctuelle particulière, telle que 122.431577, 37.749936, vous pouvez envoyer la requête GetFeature suivante :

http://gisserver.domain.com:6080/arcgis/services/playground/sanfrancisco_wfs/MapServer/WFSServer?service=WFS&request=GetFeature&version=1.1.0&typename=esri:blockgroups&Filter=<ogc:Filter><ogc:Contains><ogc:PropertyName>Shape</ogc:PropertyName><gml:Point srsName="urn:x-ogc:def:crs:EPSG:4326"><gml:pos srsName="urn:x-ogc:def:crs:EPSG:4326">37.749936 -122.431577</gml:pos></gml:Point></ogc:Contains></ogc:Filter>

RemarqueRemarque :

WFS requiert la présence des préfixes des espaces de noms concernés dans la chaîne XML de filtrage. En outre, pour éviter des conversions incorrectes par les navigateurs ou les serveurs Web, l'URL encode la chaîne XML de filtrage avant de l'envoyer au serveur.

Utilisation du service WFS dans un navigateur Web

Dans les exemples suivants, des paramètres URL sont utilisés pour communiquer avec un service WFS dans un navigateur Web.

GetCapabilities

Cette demande renvoie tous les types d'entités et les fonctionnalités disponibles à travers le service au format GML. Pour utiliser l'opération GetCapabilities, copiez et collez l'URL du service WFS dans la barre d'adresse et ajoutez ?request=getcapabilities à la fin de l'URL.

Exemple d'URL : http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=GetCapabilities

Le graphique suivant est un exemple des fonctionnalités renvoyées par l'opération GetCapabilities :

Fonctionnalité renvoyée par l'opération GetCapabilities

GetCapabilities renvoie également une liste de toutes les classes d'entités et tables disponibles :

Classes d'entités et tables disponibles renvoyées par l'opération GetCapabilities

DescribeFeatureType

Cette demande décrit les informations de champ concernant une ou plusieurs entités du service WFS. Cela inclut les noms de champs, les types de champs, les valeurs minimales et maximales autorisées dans les champs et toute autre contrainte définie dans un champ des classes d'entités ou tables.

Pour utiliser l'opération DescribeFeatureType, copiez et collez l'URL WFS dans la barre d'adresse et ajoutez ?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&VERSION=1.1.0 à la fin de l'URL. Cette demande renvoie toutes les informations de champ concernant chaque type d'entité et table disponible dans le service d'entités.

Exemple d'URL : http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&VERSION=1.1.0

Classes d'entités, tables et informations de champ renvoyées par l'opération DescribeFeatureType

Ajout de filtres

Vous pouvez également spécifier une seule classe d'entités ou table à propos de laquelle vous souhaitez obtenir des informations de champ en ajoutant la demande suivante à la fin de l'URL avec le nom du type d'entité ou de la table :

?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=<enter feature type here>&VERSION=1.1.0

Dans l'exemple ci-dessous, la demande DescribeFeatureType permet d'identifier les informations de champ pour le type d'entité des villes.

Exemple d'URL : http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=cities&VERSION=1.1.0

Classe d'entités Cities et informations de champ correspondantes renvoyées par l'opération DescribeFeatureType filtrée

GetFeature

Cette demande renvoie des informations concernant des types d'entités spécifiques disponibles par l'intermédiaire du service WFS.

Pour utiliser l'opération GetFeature dans un navigateur Web, copiez et collez l'URL WFS dans la barre d'adresse et ajoutez ?request=getFeature&typename=<saisir le type d'entité ici> à la fin de l'URL. Cette demande renvoie toutes les informations d'attribut et de géométrie concernant chaque entité ou ligne dans le type d'entités.

Exemple d'URL : http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities

Informations d'attribut et de géométrie renvoyées par l'opération GetFeature pour la classe d'entités Cities

Ajout de filtres

Vous pouvez ajouter également des filtres dans la demande pour affiner les résultats renvoyés. Par exemple, vous pouvez demander toutes les villes qui se trouvent dans une plage de coordonnées spécifiée. Dans l'exemple ci-dessous, deux villes se trouvent dans une plage de coordonnées spécifiée.

Exemple d'URL : http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities&BBOX=46.90,-76.21,42.12,-72.88

Villes dans la plage de coordonnées spécifiée renvoyées par l'opération GetFeature filtrée

Utilisation du paramètre FeatureID

Vous pouvez utiliser le paramètre FeatureID dans GetFeature afin de demander des entités spécifiques dans un service WFS. Le paramètre FeatureID est constitué du type d'entité et de l'identifiant de l'entité (gml:id), et non de l'OBJECTID de l'entité. Le format de l'identifiant d'une entité dans un service WFS est le suivant : <FeatureType>.< gml:id>. Pour identifier l'attribut gml:id d'une entité dans un service WFS, vous pouvez entre autres émettre une requête GetFeature sur le type d'entité concerné.

RemarqueRemarque :

les attributs gml:id ne sont pas fournis pour les entités des services WFS basés sur un fichier de formes.

Supposons, par exemple, qu'il existe dans un service WFS un type d'entité nommé Cities. Si vous émettez une requête GetFeature pour Cities, la réponse comprend l'attribut gml:id de chaque entité.

Exemple d'URL : http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities

Requête GetFeature

Dans cet exemple, l'identifiant d'entité de la ville de Vancouver serait cities.F293__1. La requête suivante permet de demander spécifiquement la ville de Vancouver à l'aide de l'identifiant d'entité :

http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&featureid=cities.F293__1

5/10/2014