Services WFS

Avec ArcGIS Server, vous pouvez publier des services conformes à la spécification WFS (Web Feature Service) de l'OGC (Open Geospatial Consortium, Inc.). Il s'agit d'une spécification ouverte permettant la diffusion d'entités géographiques sur le Web.

Pour publier vos données selon la spécification WFS avec ArcGIS Server, vous devez posséder une licence ArcGIS Server appropriée. Consultez la matrice de fonctionnalité pour connaître les licences requises.

Cette rubrique se compose des sections suivantes :

Pourquoi utiliser un service WFS ?

La diffusion de vos données par l'intermédiaire d'un service WFS permet aux applications compatibles avec les services Web d'accéder aux entités géographiques de votre carte ou géodatabase. Contrairement au service WMS (Web Map Service) de l'OGC, qui renvoie une image de carte, le service WFS renvoie des entités réelles avec la géométrie et les attributs que les clients peuvent utiliser dans toute analyse géospatiale. Les services WFS prennent également en charge des filtres qui permettent aux utilisateurs d'exécuter des requêtes spatiales et attributaires sur les données.

Remarques techniques

Création d'un service WFS

Il existe deux façons de créer un service WFS : à partir d'une carte ou d'une géodatabase.

Création d'un service WFS à partir d'une carte

Vous pouvez créer un service WFS à partir d'une carte ArcMap (.mxd). Publiez la carte en tant que service de carte ArcGIS Server à l'aide du Gestionnaire ou d'ArcCatalog. Au moment de préciser les fonctionnalités à activer, cochez l'option WFS. Une URL est ainsi créée, qui permet à tous les clients WFS d'accéder au service.

Si vous avez besoin d'aide au sujet de la publication du service, reportez-vous à la rubrique Publication d'une ressource SIG sur le serveur.

La carte est simplement une spécification des couches qui seront disponibles dans votre service WFS. La symbologie, les définitions de requête et les alias de champ définis au niveau de la couche ne sont pas transférés vers le service WFS, car l'objectif du service est d'afficher les entités dans les données. Pour afficher les propriétés visuelles de votre carte par l'intermédiaire des spécifications OGC, utilisez un service WMS. Prenez en compte les points suivants lors de la publication d'un service WFS à partir d'une carte :

  • Si vous souhaitez que le service WFS prenne en charge des transactions pour la mise à jour (WFS-T), les données source de toutes les couches de la carte doivent provenir de la même géodatabase ArcSDE. La carte peut autrement contenir des couches issues de plusieurs sources.
  • Plusieurs couches dans la carte ne peuvent pas référencer la même classe d'entités ni avoir le même nom. Vous risquez sinon de recevoir le message d'erreur suivant : "Cet attribut ou ce nom d'espace de travail existe déjà".
  • Le nom de la couche correspond au nom du type renvoyé par WFS.
  • Pour être publiées par l'intermédiaire d'un service WFS, les données doivent être enregistrées avec la géodatabase, y compris les vues SDE.
  • Comme WFS ne fonctionne qu'avec des entités, les couches raster de la carte sont exclues du service.
  • Les services WFS ne prennent pas en charge les classes virtuelles telles que les jointures, les relations, les événements XY, les itinéraires ou les couvertures, ni les couches basées sur l'extension Data Interoperability.

Si vous utilisez votre carte source à d'autres fins que la publication de services WFS, il vous faudra peut-être réaliser une copie de la carte qui jouera le rôle de document source pour le service WFS. Vous pourrez ensuite modifier la copie afin qu'elle remplisse les conditions stipulées ci-dessus sans affecter votre carte originale.

Création d'un service WFS à partir d'une géodatabase

Vous pouvez également créer un service WFS à partir d'une géodatabase. Il peut s'agir de n'importe quel type de géodatabase : personnelle, fichier ou ArcSDE. Publiez la géodatabase en tant que service de géodonnées ArcGIS Server à l'aide du Gestionnaire ou d'ArcCatalog. Au moment de préciser les fonctionnalités à activer, cochez l'option WFS. Une URL est ainsi créée, qui permet à tous les clients WFS d'accéder au service.

Lors de la création d'un service WFS à partir d'un service de géodonnées, toutes les classes d'entités auxquelles l'utilisateur connecté a accès sont exposées dans le service. Par ailleurs, seules les classes d'entités, tables et vues SDE enregistrées avec la géodatabase sont exposées dans le service.

Si vous avez besoin d'aide au sujet de la publication du service, reportez-vous à la rubrique Publication d'une ressource SIG sur le serveur.

La création d'un service WFS à partir d'une géodatabase permet de modifier les entités, ainsi que de les lire et de les interroger.

Remarques à propos de la création de services WFS

Si une classe d'entités dans votre carte ou géodatabase utilise une référence spatiale qui ne peut pas être représentée avec un code EPSG, la référence spatiale WGS 84 est alors utilisée pour cette classe d'entités.

Les classes d'entités de votre carte ou géodatabase qui utilisent un système de référence spatiale inconnu sont ignorées par le service WFS.

Définition des propriétés WFS

Une fois le service publié, vous pouvez lui attribuer des propriétés spécifiques. Ces propriétés définissent les métadonnées utilisées par les clients pour obtenir des informations sur le service. Par défaut, certaines propriétés au niveau du service sont définies, tandis que d'autres ne le sont pas. Vous trouverez ci-dessous la procédure à suivre pour définir les propriétés des métadonnées au niveau du service à l'aide du Gestionnaire ou d'ArcCatalog :

  1. Démarrez ArcCatalog ou le gestionnaire ArcGIS Server.
  2. Ouvrez la boîte de dialogue Propriétés du service. Pour effectuer cette opération dans ArcCatalog, cliquez avec le bouton droit de la souris sur un service existant et sélectionnez Propriétés du service. Dans le Gestionnaire ArcGIS Server, cliquez sur l'onglet Services, sur Gérer des services, puis sur l'icône Modifier correspondant au service.
  3. Cliquez sur l'onglet Fonctionnalités.
  4. Dans la liste des fonctionnalités, cochez la case WFS si elle ne l'est pas déjà. Si elle est déjà cochée, cliquez simplement sur l'acronyme WFS. Des propriétés spécifiques à WFS apparaissent.
  5. Cliquez sur Saisir les propriétés du service ci-dessous.
  6. Dans les zones de texte, saisissez les métadonnées au niveau du service à inclure, telles que le nom du service, le titre et les coordonnées de l'auteur.
  7. Une fois les métadonnées ajoutées, cliquez sur Enregistrer et redémarrer. Les informations que vous entrez sont exposées dans le fichier de fonctionnalités généré par le système.

Pour une description de ces propriétés, reportez-vous à la version 1.0 de la spécification Web Services Common de l'OGC.

Remarque : la case à cocher Activer les transactions permet d'autoriser l'application de mises à jour par l'intermédiaire d'un service WFS-T. Pour plus d'informations, reportez-vous à la rubrique Mise à jour et services WFS ci-dessous.

Un fichier de fonctionnalités externes peut également être utilisé pour définir les métadonnées. Ce fichier vous permet d'inclure d'autres projections que les valeurs par défaut pour vos types d'entités. Les valeurs par défaut comprennent le système de coordonnées de la couche ou de la classe d'entités et le système WGS 84 (EPSG 4326). Pour plus d'informations sur l'utilisation de fichiers de fonctionnalités externes, reportez-vous à la section Rubriques avancées ci-dessous.

Nouveauté d'ArcGIS 10.0 : vous pouvez également définir la propriété DefaultMaxFeatures, qui vous permet de contrôler le nombre maximal d'entités renvoyées par le service. Cette propriété peut être définie dans le fichier de configuration du service ou dans les fichiers de fonctionnalités externes. La propriété DefaultMaxFeatures est uniquement prise en charge avec WFS 1.1.0. Par conséquent, si vous utilisez des fichiers de fonctionnalités externes, il vous suffit de définir cette propriété dans le fichier faisant référence aux propriétés 1.1.0.

Dans un fichier de configuration du service, la propriété DefaultMaxFeatures doit être définie dans la section WFSServer comme suit :

<Extension>
	 <TypeName>WFSServer</TypeName>
  <Enabled>true</Enabled>
  <Properties>
    ...
    <EnableDefMaxFeatures>true</EnableDefMaxFeatures>
    <DefMaxFeaturesValue>200</DefMaxFeaturesValue>
  </Properties>
  ...
</ows:Constraint>
</Extension>

Si vous utilisez des fonctionnalités externes, la propriété DefaultMaxFeatures doit être définie dans la section des métadonnées du fichier WFSServer 1.1.0 comme suit :

<ows:Constraint name="DefaultMaxFeatures">
	 <ows:Value>200</ows:Value>
</ows:Constraint>

Caractères spéciaux

Les propriétés du service ne peuvent pas comporter les caractères suivants : &, <, >, ", '. S'il vous faut utiliser l'un de ces caractères, vous devez le remplacer par la séquence d'échappement appropriée, comme indiqué dans le tableau ci-dessous :

&

&amp;

<

&lt;

>

&gt;

"

&quot;

'

&apos;

Sécurisation des services de l'WFS

Un service WFS présente aux utilisateurs un service de carte ou de géodonnées ArcGIS Server. La sécurité d'un service WFS est gérée par le contrôle de la sécurité du service de carte ou de géodonnées parent. Si un rôle particulier (planificateurs, par exemple) n'a pas accès à une carte, les planificateurs ne sont pas en mesure d'accéder à la carte, qu'ils utilisent une interface SOAP, REST ou WFS.

ArcGIS Server prend en charge différents schémas d'authentification. Les services pour lesquels l'accès est censé faire appel aux interfaces de l'OGC doivent être sécurisés à l'aide de HTTP de base, HTTP Digest ou l'authentification Windows intégrée. La plupart des clients de l'OGC (clients ESRI et autres qu'ESRI) comprendront et utiliseront ces schémas d'authentification standard répandus.

Accès au service WFS

Lorsque vous créez un service WFS avec ArcGIS Server, il peut être utilisé dans tous les clients compatibles.

Types de clients

Un navigateur Web constitue 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. 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 WFS de l'OGC.

De nombreux clients tiers permettent d'utiliser les services WFS. Pour utiliser les services WFS créés par ArcGIS Server, le client doit prendre en charge la norme WFS 1.1 ou 1.0 et le profil GML d'entités simples.

L'application cartographique Web prête à l'emploi fournie avec ArcGIS Server ne prend pas en charge l'ajout de services WFS. ArcCatalog et ArcMap, en revanche, sont compatibles avec les services 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 Desktop.

La spécification WFS 1.1 indique que pour de nombreux systèmes de coordonnées géographiques, y compris le système WGS84, les coordonnées sont renvoyées dans l'ordre latitude, longitude (y,x). Les services WFS publiés par l'intermédiaire d'ArcGIS Server respectent cette spécification. Certains clients WFS, toutefois, s'attendent à ce que les coordonnées soient renvoyées sous la forme longitude, latitude (x,y). Vous pouvez dans ce cas permuter l'ordre des coordonnées pour les entités renvoyées par le service WFS afin qu'elles soient au format longitude, latitude. Pour plus d'informations, reportez-vous à la section Rubriques avancées ci-dessous.

Structure des URL

Pour établir une connexion au service, vous devez connaître son URL. L'URL suit le modèle suivant :

http://<nom du serveur>/<nom de l'instance>/services/<nom du dossier (le cas échéant)>/<nom du service>/<type deservice>/WFSServer?

  • le nom de serveur correspond au nom de votre serveur Web,
  • le nom de l'instance correspond au nom de l'instance ArcGIS Server que vous avez spécifié lors de l'installation d'ArcGIS Server,
  • le service peut être du type MapServer ou GeoDataServer, selon que vous avez créé le service WFS à partir d'une carte ou d'une géodatabase, respectivement.

Si, par exemple, vous avez activé la fonctionnalité WFS sur un service de carte WFSDemoService dans un dossier DemoFolder sur un serveur MyServer avec le nom de l'instance par défaut "arcgis", l'URL serait la suivante : http://MyServer/arcgis/services/DemoFolder/WFSDemoService/MapServer/WFSServer?

De même, si vous avez activé la fonctionnalité WFS sur un service de géodonnées, l'URL serait la suivante : http://MyServer/arcgis/services/DemoFolder/WFSDemoService/GeoDataServer/WFSServer?

Utilisation de filtres

Vous pouvez utiliser plusieurs filtres avec les services WFS afin de sélectionner des groupes d'entités. Les services WFS créés avec ArcGIS Server 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-point

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.

Exemples

Vous trouverez des exemples d'utilisation de GetFeature avec ces filtres à la section 9.5 de la page Web Feature Service Implementation Specification (en anglais).

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é des attributs FeatureType et gml:id, et non de l'OBJECTID de l'entité. Le format du paramètre FeatureID pour une entité dans un service WFS ArcGIS 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 l'élément FeatureType concerné.

RemarqueRemarque :

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

Par exemple : il existe dans un service WFS un type d'entité FeatureType 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://bobmk/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities

Requête GetFeature

Dans cet exemple, l'attribut FeatureID de la ville de Vancouver serait cities.F293__1. La requête suivante peut être utilisée pour demander spécifiquement la ville de Vancouver à l'aide de l'attribut FeatureID : http://bobmk/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&featureid=cities.F293__1

Utilisation du paramètre Filter

Vous pouvez utiliser le paramètre Filter dans GetFeature afin de demander des entités spécifiques dans un service WFS. L'avantage du paramètre Filter réside dans le fait qu'il fait partie du codage de la combinaison mot-clé/valeur standard défini dans la spécification WFS et qu'il peut être ajouté à la fin d'une demande HTTP Get. La valeur du paramètre Filter doit être définie sur une chaîne XML du filtre OGC codée à l'aide d'une URL. Tout filtre pris en charge et répertorié dans le tableau ci-dessus peut être codé et envoyé au serveur via le paramètre Filter.

Par exemple, si vous avez créé un type d'entité appelé blockgroups dans un service WFS, vous pouvez demander des entités blockgoup dans l'étendue -122.423192682619, 37.7877919206256, -122.421377806544, 37.7893634225143 en envoyant la demande GetFeature suivante :

http://server/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é blockgroups contenant une entité ponctuelle spécifique, telle que 122.431577, 37.749936, vous pouvez envoyer la demande GetFeature suivante :

http://server/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 :

Dans WFS, la chaîne XML du filtre doit comporter les préfixes des espaces de noms concernés. En outre, pour éviter que les navigateurs Web ou les serveurs Web ne se trompent dans leurs conversions, l'URL code la chaîne XML du filtre avant de l'envoyer au serveur.

Mise à jour et services WFS

Les services de carte et de géodonnées permettent de publier des données issues de sources de données ESRI telles que la géodatabase. Lorsque vous publiez un service de carte ou de géodonnées avec la fonctionnalité WFS, les clients WFS conformes à la norme OGC peuvent accéder aux données. Ces clients WFS peuvent également voir les modifications les plus récentes apportées aux données.

Lorsqu'un client WFS tel qu'une visionneuse émet une requête, les données sont renvoyées puisqu'elles existent à ce moment dans la source de données. Supposons par exemple que vous possédiez une carte contenant une classe d'entités. Cette classe d'entités est issue d'une géodatabase fichier. Vous pouvez maintenant publier cette carte en tant que service cartographique et activer la fonctionnalité WFS. Un client doté d'une visionneuse WFS peut accéder aux données dans la classe d'entités à l'aide de l'URL WFS fournie par le service de carte.

Supposons maintenant qu'un autre utilisateur accède à la géodatabase fichier source et ajoute, modifie et supprime des entités de la classe d'entités. Les données mises à jour s'afficheront alors lors de la prochaine actualisation de la visionneuse WFS du client.

Lorsque la source de données est une géodatabase ArcSDE, les services de géodonnées et de carte publient les données d'une version spécifique. Si les données sont modifiées dans cette version, ces modifications sont visibles par les clients WFS et non WFS. Si des modifications sont apportées dans d'autres versions, en revanche, les clients n'y ont pas accès tant qu'ils n'ont pas réconcilié leur version avec la version publiée.

Vous disposez ainsi d'un plus grand contrôle sur les données exposées par l'intermédiaire de vos services. Supposons que vous publiiez des données avec la fonctionnalité WFS à partir d'une version nommée WFS. Les clients dotés de visionneuses WFS commencent alors à accéder aux données par l'intermédiaire de votre service. Au même instant, les éditeurs au bureau mettent à jour la version par défaut à l'aide d'ArcGIS. Les modifications apportées par les éditeurs sont ensuite activées et ajustées si nécessaire. Une fois l'évaluation terminée, la version WFS est réconciliée avec la version par défaut. A ce stade, les clients WFS peuvent visualiser les dernières mises à jour apportées par les éditeurs.

Services WFS transactionnels

Un service WFS transactionnel (parfois nommé WFS-T) permet aux éditeurs WFS de modifier les données dans la base de données source par l'intermédiaire du service WFS. Pour appliquer des changements par l'intermédiaire de WFS-T, les données doivent provenir d'une géodatabase ArcSDE. Les transactions peuvent être activées sur les services comprenant des données versionnées, des données non versionnées ou les deux. Si vous utilisez des données versionnées, il est également recommandé de publier le service à partir d'une version autre que la version par défaut.

Pour publier votre géodatabase en tant que service WFS transactionnel, procédez comme suit :

  1. Déterminez si les données publiées par l'intermédiaire du service WFS doivent être versionnées ou non. Si vous publiez des données versionnées, créez une version dédiée à cette fin pour vos éditeurs WFS transactionnels. Si vous utilisez des données non versionnées, vous pouvez publier le service sur la version par défaut.
  2. Sélectionnez le type de service à utiliser pour publier vos données en tant que service WFS. Vous pouvez publier un fichier de connexion à la géodatabase (en tant que service de géodonnées) ou une carte (en tant que service de carte). Si vous utilisez un service de carte avec des données versionnées, veillez à ce que les données de la carte fassent uniquement référence aux données de la version spécifiquement créée pour les éditeurs WFS. Assurez-vous que la fonctionnalité WFS est activée sur le service.
  3. Activez les transactions sur le service. Vous pouvez le faire dans ArcCatalog ou dans le Gestionnaire comme suit :
    • Arrêtez le service.
    • Affichez les Propriétés du service.
    • Cliquez sur l'onglet Fonctionnalités.
    • Cliquez sur le nom WFS (pas la case à cocher).
    • Cochez l'option Activer les transactions.
    • Démarrez le service.

Une fois les transactions activées, les clients WFS peuvent appliquer des modifications à la géodatabase à l'aide des méthodes WFS transactionnelles. Voici un exemple de la manière d'appliquer les modifications :

  • le client WFS se connecte au service WFS publié avec les transactions activées,
  • les entités et les lignes modifiées sont verrouillées sur le serveur (à l'aide de la méthode WFS GetFeatureWithLock, par exemple),
  • les modifications sont effectuées à l'aide d'un éditeur WFS sur le client WFS,
  • les modifications sont ensuite appliquées sur le serveur (à l'aide de la méthode WFS Transaction, par exemple).

Une fois les modifications réinjectées, le verrouillage est désactivé et les entités peuvent être modifiées par d'autres éditeurs WFS. Le verrouillage peut également être désactivé s'il arrive à expiration. Par défaut, le verrouillage expire après 5 minutes. Vous pouvez modifier ce paramètre en précisant un délai d'expiration en minutes à l'aide de la méthode GetFeatureWithLock. Un administrateur peut définir un délai d'expiration par défaut en modifiant manuellement une configuration et en définissant l'élément DefaultLockExpiration (temps en minutes).

Lorsqu'un client demande un verrouillage à l'aide de la méthode GetFeatureWithLock, un ensemble d'entités verrouillées et un lockID lui sont renvoyés. Si certaines des entités demandées ne peuvent pas être verrouillées, la demande échoue et le client devra rappeler la méthode GetFeatureWithLock. Tant que le verrouillage n'est pas désactivé, les autres clients ne peuvent pas demander le verrouillage de ces entités.

Les transactions d'insertion uniquement ne nécessitent pas le verrouillage des entités. Les entités existantes n'étant pas modifiées (mises à jour ou supprimées), il n'est pas nécessaire d'invoquer la méthode GetFeatureWithLock. Toutes les requêtes de transaction avec mises à jour ou suppressions doivent être accompagnées d'un attribut lockID.

Lorsque les modifications sont réinjectées par l'intermédiaire du service WFS-T, elles s'appliquent à la version publiée (avec les données versionnées) ou aux tables métier (avec les données non versionnées). Les sections ci-après traitent des principales différences de workflow à prendre en compte lors de l'utilisation de données versionnées ou non versionnées.

Services WFS-T et données versionnées

Le versionnement vous permet de présenter votre géodatabase aux éditeurs WFS et non WFS et de fusionner de manière efficace les modifications apportées par les deux groupes avec détection complète des conflits. Pour fusionner les modifications, vous pouvez réconcilier et réinjecter la version WFS-T publiée avec son parent. Si des verrouillages sont toujours actifs, la réconciliation et la réinjection échouent. Cette protection vise à éviter les conflits entre des entités verrouillées par un client WFS-T et des entités modifiées par le processus de réconciliation et de réinjection. En outre, la réconciliation et la réinjection verrouillent la version publiée, bloquant ainsi les appels GetFeatureWithLock et Transaction durant le processus. Pour plus d'informations sur l'utilisation des données versionnées, reportez-vous à la rubrique Présentation rapide du versionnement.

Workflow de services WFS-T avec des données versionnées

Les verrouillages d'entités sont gérés sur le serveur au moyen d'une table de verrouillage. Cette table est créée lorsque les transactions sont activées et s'affiche sous forme d'une table ordinaire dans la géodatabase. La table est nommée selon la convention VERSION_<versionID>_ROW_LOCKS. Afin d'éviter le blocage des réconciliations et réinjections, les administrateurs peuvent supprimer les verrouillages restants en supprimant directement les lignes de la table avant d'invoquer les méthodes de réconciliation et réinjection.

Il n'est pas recommandé de modifier la version WFS-T publiée à l'aide d'ArcGIS. En effet, un éditeur ArcGIS n'étant pas informé des verrouillages d'entités, il est par conséquent susceptible de modifier des entités verrouillées. Dans ce cas, les modifications apportées dans ArcGIS risquent d'engendrer des conflits qui vont empêcher le client WFS-T de charger ses modifications. La création et la modification des versions enfants de la version publiée peuvent provoquer des problèmes semblables, si les modifications sont réconciliées et réinjectées dans la version publiée.

Plusieurs services WFS-T peuvent faire référence à la même version publiée, puisque qu'ils partagent tous la même table de verrouillage. Il existe une relation individuelle entre la version publiée et sa table de verrouillage.

Si vous désactivez des transactions ou supprimez le service WFS, la table de verrouillage n'est pas automatiquement supprimée. Lorsqu'il n'existe plus aucun service WFS-T faisant référence à la version, cette table peut être supprimée manuellement.

Services WFS-T et données non versionnées

Si vous publiez des données non versionnées dans un service WFS-T, les modifications s'appliquent directement aux tables métier de la géodatabase. Par conséquent, les modifications validées ne peuvent pas être annulées. Pour plus d'informations sur l'utilisation de données non versionnées, reportez-vous à la rubrique :

Avec les données non versionnées basées sur des services WFS-T, les verrouillages d'entités sont également gérés sur le serveur dans une table de verrouillage, créée lors de l'activation des transactions sur le service. Si vous prévoyez d'autoriser uniquement des clients WFS-T à apporter des modifications par l'intermédiaire du service, le comportement est identique à celui d'un service reposant sur des données versionnées. Si vous prévoyez, en revanche, d'autoriser des clients non WFS-T, tels qu'ArcMap, à modifier les données publiées dans le service, vous devez prendre en compte les points suivants :

  1. Les éditeurs ArcMap ne sont pas informés des verrouillages d'entités et peuvent par conséquent modifier les entités verrouillées par l'intermédiaire du service WFS-T.
  2. Si un éditeur ArcMap modifie des entités, celles-ci sont verrouillées pour les clients WFS-T. En conséquence, les clients WFS-T ne peuvent pas verrouiller, mettre à jour ni supprimer ces entités tant que l'éditeur ArcMap n'a pas enregistré ses modifications.

Si vous désactivez des transactions ou supprimez le service WFS, la table de verrouillage n'est pas automatiquement supprimée. Lorsqu'il n'existe plus aucun service WFS-T faisant référence à la version, cette table peut être supprimée manuellement.

Remarques

  • Pour pouvoir utiliser le service WFS-T, l'utilisateur du SGBD utilisé par ArcGIS Server pour se connecter à la géodatabase ArcSDE doit avoir l'autorisation de créer des tables dans le SGBD.
  • ArcMap n'est doté d'aucun mécanisme de mise à jour WFS transactionnelle, ce qui signifie que vous devez utiliser un client tiers pour modifier des entités à l'aide du service WFS.
  • L'accès au service n'étant pas requis en permanence, vous pouvez utiliser des services groupés pour la modification par l'intermédiaire du service WFS-T.
  • Les classes d'entités qui gèrent les valeurs Z ne peuvent pas être modifiées à l'aide de WFS-T.

Rubriques avancées

Cette section contient des informations approfondies sur les services WFS :

Utilisation des fichiers de fonctionnalités externes

La publication d'un service WFS à l'aide de fichiers de fonctionnalités externes s'adresse aux utilisateurs qui connaissent bien les spécifications WFS de l'OGC, ainsi que la syntaxe des fichiers de fonctionnalités WFS. Cette option vous apporte une plus grande souplesse pour personnaliser vos services WFS. Avec les fichiers de fonctionnalités externes, vous pouvez effectuer les opérations suivantes :

  • ajouter des informations de métadonnées au niveau du service aux fichiers de fonctionnalités WFS,
  • ajouter des informations de métadonnées au niveau des entités aux fichiers de fonctionnalités WFS,
  • ajouter des systèmes de références spatiales prédéfinies supplémentaires depuis la liste des projections prédéfinies d'ArcGIS Server.

La publication d'un service WFS à l'aide d'un fichier de fonctionnalités externes permet d'éviter de devoir créer entièrement ce fichier à chaque accès au service. Vous pouvez ainsi accélérer la connexion à votre service WFS, en particulier lorsque votre service comprend de nombreux noms de type. Cependant, si vous modifiez la carte ou la géodatabase sous-jacente du service, vous devez également mettre à jour le fichier de fonctionnalités pour que le service continue à fonctionner.

Il existe deux façons de créer un fichier de fonctionnalités externes. Vous pouvez créer intégralement le fichier dans un éditeur XML ou texte ou vous pouvez générer un fichier de fonctionnalités en publiant un service WFS avec les valeurs par défaut et en invoquant la méthode GetCapabilities dans un navigateur Web. Le contenu renvoyé par les requêtes GetCapabilities peut être enregistré en tant que fichier .xml, modifié selon vos besoins et utilisé en tant que fichier de fonctionnalités externes. Pour plus d'informations sur la structure et le remplissage du contenu du fichier de fonctionnalités externes, suivez les liens Lectures complémentaires à la fin de cette rubrique.

Depuis la version ArcGIS 9.3 SP1, ArcGIS Server est conforme aux spécifications WFS 1.1.0 et 1.0.0 de l'OGC. En conséquence, les procédures de création et d'utilisation des fichiers de fonctionnalités externes pour ArcGIS 9.3 SP1 ont changé. Vous trouverez ci-après la procédure de création de fichiers de fonctionnalités externes à partir d'un service WFS existant et la procédure de publication d'un service WFS à l'aide de ces fichiers. Ces procédures s'appliquent à ArcGIS 9.3 et au nouveau processus en application depuis la version ArcGIS 9.3 SP1.

Création et publication d'un service WFS avec des fichiers de fonctionnalités externes depuis la version ArcGIS 9.3

1re partie : Création d'un fichier de fonctionnalités externes à partir d'un service WFS existant

  1. Démarrez ArcCatalog ou le Gestionnaire ArcGIS Server.
  2. Ouvrez la boîte de dialogue Propriétés du service. Pour effectuer cette opération dans ArcCatalog, cliquez avec le bouton droit de la souris sur un service existant et sélectionnez Propriétés du service. Dans le Gestionnaire ArcGIS Server, cliquez sur l'onglet Services, puis sur l'icône Modifier correspondant au service.
  3. Cliquez sur l'onglet Fonctionnalités.
  4. Dans la liste des fonctionnalités, cochez la case WFS si elle ne l'est pas déjà. Si elle est déjà cochée, cliquez simplement sur l'acronyme WFS. Certaines propriétés spécifiques à WFS s'affichent.
  5. Mettez en surbrillance l'URL WFS et copiez et collez-la dans un navigateur Web.
  6. Pour créer le fichier de fonctionnalités externes pour les spécifications WFS 1.1.0, ajoutez ?request=getCapabilities ou request=getCapabilities&version=1.1.0 à l'URL WFS dans le navigateur Web et enregistrez les résultats dans un fichier XML avec le numéro de version ajouté à la fin. Dans ArcGIS 9.3, le fichier .xml doit être enregistré comme suit : GetCapabilities110.xml.

2e partie : Création d'un service WFS avec un fichier de fonctionnalités externes depuis la version ArcGIS 9.3

Une fois le fichier de fonctionnalités créé, il peut être placé dans un dossier accessible au SOC et au serveur, par exemple, dans le même dossier que celui de la géodatabase ou de la carte du service. Il est également possible d'utiliser un emplacement URL.

Il est possible de mettre à jour un service existant avec les propriétés par défaut pour utiliser un fichier de fonctionnalités externes ou de créer un service qui référence le fichier de fonctionnalités externes. La procédure ci-après explique comment publier un service WFS avec un fichier de fonctionnalités externes.

RemarqueRemarque :

depuis ArcGIS 9.3, un seul fichier de fonctionnalités externes peut être enregistré dans un dossier ; sinon, le serveur n'est pas en mesure de distinguer le fichier de fonctionnalités à utiliser, puisqu'ils doivent tous être nommés GetCapabilities110.xml.

Publication d'un service WFS avec les fichiers de fonctionnalités externes :

  1. Démarrez ArcCatalog ou le Gestionnaire ArcGIS Server.
  2. Arrêtez le service que vous souhaitez mettre à jour.
  3. Ouvrez la boîte de dialogue Propriétés du service. Pour effectuer cette opération dans ArcCatalog, cliquez avec le bouton droit de la souris sur un service existant et sélectionnez Propriétés du service. Dans le Gestionnaire ArcGIS Server, cliquez sur l'onglet Services, puis sur l'icône Modifier correspondant au service.
  4. Cliquez sur l'onglet Fonctionnalités.
  5. Dans la liste des fonctionnalités, cochez la case WFS si elle ne l'est pas déjà. Si elle est déjà cochée, cliquez simplement sur l'acronyme WFS. Des propriétés spécifiques à WFS apparaissent.
  6. Cliquez sur Utiliser les fichiers de fonctionnalités externes.
  7. La prochaine étape consiste à préciser l'emplacement du fichier de fonctionnalités externes. L'emplacement est précisé en fournissant l'URL ou le chemin d'accès au dossier qui contient le fichier de fonctionnalités. Lorsque vous spécifiez l'emplacement ou URL, n'incluez pas le nom du fichier .xml. Par exemple : http://<nom du serveur>/arcgis/wfs pour une URL ou C:\arcgis\arcgisserver\wfs pour un dossier.
  8. Redémarrez le service.

Création et publication d'un service WFS avec des fichiers de fonctionnalités externes à compter d'ArcGIS 9.3 SP1

Depuis la version ArcGIS 9.3 SP1, ArcGIS Server est conforme aux spécifications WFS 1.1.0 et 1.0.0 de l'OGC. En conséquence, deux fichiers de fonctionnalités externes sont requis : l'un qui référence les spécifications 1.1.0 et l'autre qui référence les spécifications 1.0.0.

1re partie : Création des fichiers de fonctionnalités externes à partir d'un service WFS existant

  1. Démarrez ArcCatalog ou le Gestionnaire ArcGIS Server.
  2. Ouvrez la boîte de dialogue Propriétés du service. Pour effectuer cette opération dans ArcCatalog, cliquez avec le bouton droit de la souris sur un service existant et sélectionnez Propriétés du service. Dans le Gestionnaire ArcGIS Server, cliquez sur l'onglet Services, puis sur l'icône Modifier correspondant au service.
  3. Cliquez sur l'onglet Fonctionnalités.
  4. Dans la liste des fonctionnalités, cochez la case WFS si elle ne l'est pas déjà. Si elle est déjà cochée, cliquez simplement sur l'acronyme WFS. Certaines propriétés spécifiques à WFS s'affichent.
  5. Mettez en surbrillance l'URL WFS et copiez et collez-la dans un navigateur Web.
  6. Pour créer les fichiers de fonctionnalités externes pour les spécifications WFS 1.1.0, ajoutez ?request=getCapabilities ou request=getCapabilities&version=1.1.0 à l'URL WFS dans le navigateur Web et enregistrez les résultats dans un fichier XML. Le nom de fichier a le format suivant : <préfixe>110.xml. Si, par exemple, le service est appelé California, vous pouvez nommer le fichier California110.xml, où California est le préfixe.
  7. Pour créer le fichier de fonctionnalités externes pour les spécifications WFS 1.0.0, ajoutez ?request=getCapabilities&version1.0.0 à l'URL WFS et enregistrez les résultats dans un fichier XML. Le nom de fichier a le format suivant : <préfixe>100.xml ; le préfixe doit correspondre à celui du fichier 1.1.0. Selon l'exemple de l'étape 6, si le fichier 1.1.0 est nommé California110.xml, le fichier 1.0.0 doit être nommé California100.xml.

2e partie : Création d'un service WFS avec un fichier de fonctionnalités externes à compter d'ArcGIS 9.3 SP1

Une fois le fichier de fonctionnalités créé, il peut être placé dans un dossier accessible au SOC et au serveur, par exemple, dans le même dossier que celui de la géodatabase ou de la carte du service. Il est également possible d'utiliser un emplacement URL. Remarque : à compter de la version 9.3 SP1 d'ArcGIS, les deux fichiers doivent résider dans le même emplacement.

Il est possible de mettre à jour un service existant avec les propriétés par défaut pour utiliser un fichier de fonctionnalités externes ou de créer un service qui référence les fichiers de fonctionnalités externes. La procédure ci-après explique comment publier un service WFS avec les fichiers de fonctionnalités externes.

Publication d'un service WFS avec les fichiers de fonctionnalités externes :

  1. Démarrez ArcCatalog ou le Gestionnaire ArcGIS Server.
  2. Arrêtez le service à mettre à jour.
  3. Ouvrez la boîte de dialogue Propriétés du service. Pour effectuer cette opération dans ArcCatalog, cliquez avec le bouton droit de la souris sur un service existant et sélectionnez Propriétés du service. Dans le Gestionnaire ArcGIS Server, cliquez sur l'onglet Services, puis sur l'icône Modifier correspondant au service.
  4. Cliquez sur l'onglet Fonctionnalités.
  5. Dans la liste des fonctionnalités, cochez la case WFS si elle ne l'est pas déjà. Si elle est déjà cochée, cliquez simplement sur l'acronyme WFS. Certaines propriétés spécifiques à WFS s'affichent.
  6. Cliquez sur Utiliser les fichiers de fonctionnalités externes.
  7. La prochaine étape consiste à préciser l'emplacement des fichiers de fonctionnalités externes. L'emplacement est précisé en fournissant l'URL ou le chemin d'accès au dossier qui contient les fichiers de fonctionnalités et le préfixe. Par exemple, si les fichiers de fonctionnalités sont nommés California110.xml et California100.xml pour votre service California, le préfixe est California. Si ces fichiers sont stockés à l'emplacement http://ArcGIS_Server/arcgis/wfs, vous devez spécifier http://ArcGIS_Server/arcgis/wfs/California. Si vous stockez ces fichiers à l'emplacement C:\arcgis\arcgisserver\wfs, vous devez spécifier C:\arcgis\arcgisserver\wfs\California.
  8. Redémarrez le service.
RemarqueRemarque :

Désormais, lorsqu'un client WFS accède au service, le fichier de fonctionnalités approprié est référencé en fonction de la version de la requête. Si, par exemple, le client WFS invoque DescribeFeatureType&version=1.0.0, le serveur renvoie les informations du fichier de fonctionnalités externes spécifique à la version 1.0.0. Si aucune version n'est spécifiée, il renvoie les informations du fichier de fonctionnalités externes spécifique à la version 1.1.0.

Ajout des systèmes de référence spatiale à un fichier de fonctionnalités externes

Bien que vous puissiez demander une carte du service WFS à l'aide de n'importe lequel des systèmes de référence spatiale pris en charge, certains clients WFS renvoient une erreur si la référence spatiale que vous demandez n'apparaît pas dans le fichier de fonctionnalités. D'autres clients, tels que l'extension Data Interoperability, vous autorisent uniquement à utiliser les systèmes de référence spatiale répertoriés dans le fichier de fonctionnalités.

Vous pouvez ajouter manuellement d'autres systèmes de référence spatiale au fichier de fonctionnalités externes de votre service WFS. Les fichiers de fonctionnalités externes sont décrits ci-dessus.

Contrôle de l'ordre des axes

Les entités renvoyées dans certains systèmes de coordonnées géographiques (WGS 84, par exemple) suivent l'ordre des axes latitude, longitude (y,x) par défaut. Ceci est conforme à la spécification WFS 1.1. Par exemple, un point peut être renvoyé suite à une requête getfeature avec ses coordonnées spécifiées comme suit :

<gml:Point>
	<gml:pos>48.4922165520043 -122.630685732366</gml:pos> 
</gml:Point>

Certains clients WFS s'attendent à ce que les coordonnées renvoyées suivent l'ordre des axes longitude, latitude (x,y). Pour utiliser ces clients, vous pouvez définir l'ordre des axes longitude, latitude pour le service. Voici comment définir la propriété :

  1. Connectez-vous en tant qu'administrateur à la machine qui exécute ArcGIS Server.
  2. Arrêtez ArcGIS Server.
  3. Accédez à l'emplacement des fichiers de configuration du service. Par exemple, si ArcGIS Server est installé dans c:\arcgis, allez à c:\arcgis\server\user\cfg.
  4. Ouvrez le fichier de configuration pour votre service (par exemple, myservice.cfg) dans un éditeur de texte.
  5. Dans la section WFS, ajoutez ce qui suit aux propriétés : <AxisOrderWFS11>longlat</AxisOrderWFS11>. Par exemple :
    <Extension>
    	<TypeName>WFSServer</TypeName>
    	<Enabled>true</Enabled>
    	<Properties>
    		<AxisOrderWFS11>longlat</AxisOrderWFS11>
    		<CustomGetCapabilities>false</CustomGetCapabilities>
    		<EnableTransactions>false</EnableTransactions>
    		<Name>wfs_WFSTest_ras</Name>
    		<OnlineResource>http://bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer</OnlineResource>
    		<AppSchemaURI>http://bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer</AppSchemaURI>
    		<AppSchemaPrefix>wfs_WFSTest_ras</AppSchemaPrefix>
    	</Properties>
    	<Info>
    		<WebEnabled>true</WebEnabled>
    	</Info>
    </Extension>
    
  6. Démarrez ArcGIS Server.

Les entités ayant les coordonnées géographiques demandées du service sont maintenant renvoyées selon l'ordre des axes longitude, latitude.

Remarque : la propriété d'ordre des axes s'applique uniquement aux entités avec des coordonnées géographiques. Les entités avec des coordonnées projetées sont toujours renvoyées selon l'ordre des axes x,y.

Utilisation de noms de type complets

Les noms de type générés pour les services WFS définis à partir des géodatabases ArcSDE dépendent du nom non qualifié de la classe d'entités par défaut. Par exemple, le nom de type d'une classe d'entités nommée bob.buildings est "buildings".

Vous pouvez définir une propriété afin d'inclure le nom complet au moment de la génération du nom du type. Ceci peut s'avérer utile lorsque plusieurs classes d'entités portent le même nom mais ont un propriétaire différent dans la géodatabase. Si le nom complet est utilisé, le nom de type de bob.buildings est bob_buildings.

Voici comment définir la propriété permettant d'utiliser le nom complet :

  1. Connectez-vous en tant qu'administrateur à la machine qui exécute ArcGIS Server.
  2. Arrêtez ArcGIS Server.
  3. Accédez à l'emplacement des fichiers de configuration du service. Par exemple, si ArcGIS Server est installé dans c:\arcgis, allez à c:\arcgis\server\user\cfg.
  4. Ouvrez le fichier de configuration pour votre service (par exemple, myservice.cfg) dans un éditeur de texte.
  5. Dans la section WFS, ajoutez ce qui suit aux propriétés : <UseQualifiedName>true</UseQualifiedName>. Par exemple :
    <Extension>
    	<TypeName>WFSServer</TypeName>
    	<Enabled>true</Enabled>
    	<Properties>
    		<UseQualifiedName>true</UseQualifiedName>
    		<CustomGetCapabilities>false</CustomGetCapabilities>
    		<EnableTransactions>false</EnableTransactions>
    		<Name>wfs_WFSTest_ras</Name>
    		<OnlineResource>http://bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer</OnlineResource>
    		<AppSchemaURI>http://bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer</AppSchemaURI>
    		<AppSchemaPrefix>wfs_WFSTest_ras</AppSchemaPrefix>
    	</Properties>
    	<Info>
    		<WebEnabled>true</WebEnabled>
    	</Info>
    </Extension>
    
  6. Démarrez ArcGIS Server.

Lectures complémentaires

Voici quelques ressources supplémentaires si vous souhaitez en savoir plus sur les services WFS :


3/6/2012