Un géoservice est un moyen de mettre à disposition de l’information géographique à travers Internet.
Aujourd’hui, la quasi totalité des produits permettant la mise en place et l’utilisation d’un géoservice sont basés sur des standards OGC. L’Open Geospatial Consortium, ou OGC, est une organisation internationale à but non lucratif fondée en 1994 pour répondre aux problèmes d’interopérabilité des systèmes d’information géographique (SIG). Les missions de ce consortium sont de regrouper tous les acteurs concernés afin de développer et promouvoir des standards ouverts garantissant l’interopérabilité dans le domaine de la géomatique et de l’information géographique et de favoriser la coopération entre développeurs, fournisseurs et utilisateurs.
Les standards et spécifications OpenGIS élaborés par l’OGC permettent de réaliser des systèmes et des services d’informations complexes et ouverts en favorisant des contenus et des services accessibles à tous et utilisables par tout type d’application.
Nous verrons dans cet article les deux principales normes utilisées dans les géoservices: WMS et WFS.
La norme OGC WMS (Web Map Server) spécifie l’interface et les paramètres pour demander dynamiquement des cartes à partir d’un serveur. Chaque WMS est configuré individuellement et peut servir à une multitude de cartes différentes, combinaison de couches et peut même éventuellement être stylisé avec une symbologie différente.
Le service Web Feature Service (WFS) représente un changement dans la façon dont l’information géographique est créée, modifiée et échangée sur Internet. Plutôt que de partager de l’information géographique au niveau des fichiers à l’aide du protocole de transfert de fichiers (FTP), par exemple, le WFS offre un accès direct et détaillé à l’information géographique au niveau des caractéristiques et des propriétés.
Cette norme internationale précise les opérations de visualisation, les opérations de requête, les opérations de verrouillage, les opérations de transaction et les opérations de gestion des requêtes stockées et paramétrées.
Dans le premier cas ce qui sera renvoyé par le serveur est une image, tandis que dans le deuxième cas ce sera des données vecteur sous forme de fichier XML.
Un des principaux avantages d’un géoservice est de s’affranchir de la multitude de formats SIG.L’utilisateur ne connaît que les deux protocoles. C’est le logiciel du géoservice qui se charge de la lecture et mise en forme des données aux différents formats.
Un exemple de cette architecture est l’utilisation de Geoserver. L’image suivante montre les différents types de données gérées par Geoserver.
Le protocole WFS
Le protocole WFS permet de mettre en ligne les données à proprement parler. L’utilisateur accède à l’information de base des entités et de leurs attributs. Bien sûr, il est possible de contrôler et de limite l’accès à certaines entités ou à certaines propriétés, mais le résultat d’une requête au serveur ce sera un fichier de données.
Cette norme internationale précise les opérations de découverte, les opérations d’interrogation, les opérations de verrouillage, les opérations de transaction et les opérations de gestion des expressions de requête stockées et paramétrées.
Les opérations de découverte permettent d’interroger le service pour déterminer ses capacités et de récupérer le schéma d’application qui définit les types de fonctionnalités que le service offre.
Les opérations de requête permettent de récupérer des entités ou les valeurs des propriétés des entités à partir du magasin de données sous-jacent en fonction des contraintes, définies par le client, sur les propriétés de l’entité.
Les opérations de verrouillage permettent l’accès exclusif à des entités dans le but de modifier ou de supprimer des entités.
Les opérations transactionnelles permettent de créer, de modifier, de remplacer et de supprimer des entités du magasin de données sous-jacent.
Les opérations de requête stockées permettent aux clients de créer, déposer, lister et décrire des expressions de requête paramétrées qui sont stockées par le serveur et peuvent être invoquées à plusieurs reprises en utilisant différentes valeurs de paramètre.
Dans l’état actuel, la norme WFS définit onze opérations :
- GetCapabilities (opération de découverte)
- DescribeFeatureType (opération de découverte)
- GetPropertyValue (opération de requête)
- GetFeature (query operation)
- GetFeatureWithLock (opération d’interrogation et de verrouillage)
- LockFeature (opération de verrouillage)
- Transaction (opération transactionnelle)
- CreateStoredQuery (opération de requête stockée)
- DropStoredQuery (opération de requête stockée)
- ListStoredQueries (opération de requête stockée)
- DescribeStoredQueries (opération de requête stockée)
Nous verrons ici les quatre premières qui sont les plus courantes. Les autres opérations concernent la mise à jour des données à travers le géoservice et sont, généralement, réservées à un nombre restreint d’utilisateurs.
GetCapabilities
L’opération GetCapabilities est une requête à un serveur WFS pour obtenir une liste des opérations et services, ou capacités, supportés par ce serveur. Quand vous établissez une connexion avec QGis, par exemple, sur un serveur WFS, QGis envoie cette requête pour pouvoir gérer la connexion et vous proposer le chargement des différentes couches disponibles.
La requête prend la forme:
localhost:8080/geoserver/wfs?
service=wfs&
version=1.1.0&
request=GetCapabilities
La réponse à GetCapabilities est un long document XML.
Un document GetCapabilities comporte cinq éléments principaux :
ServiceIdentification contient des renseignements de base sur l’en-tête de la demande, comme le titre et le type de service. Le ServiceType indique quelles versions de WFS sont supportées.
ServiceProvider Fournit les coordonnées de l’entreprise qui publie le service WFS, y compris le téléphone, le site Web et le courriel.
OperationsMetadata Décrit les opérations supportées par le serveur WFS et les paramètres de chaque opération. Un serveur WFS peut être configuré pour ne pas répondre aux opérations énumérées ci-dessus.
FeatureTypeList couches sont listées dans le formulaire namespace:featuretype. La projection par défaut est également indiquée, avec la boîte d’emprise pour les données dans la projection indiquée.
Filter_Capabilities Liste des filtres, ou expressions, qui sont disponibles pour former des prédicats de requête, par exemple, les opérateurs spatiaux (tels que Equals, Touches) et les opérateurs de comparaison (tels que lessthan, greaterthan). Les filtres eux-mêmes ne sont pas inclus dans le document GetCapabilities.
DescribeFeatureType
DescribeFeatureType demande de l’information sur une couche particulière avant de demander les données réelles. Plus précisément, l’opération demandera une liste de caractéristiques et d’attributs pour la couche donnée, ou énumérera les types de caractéristiques disponibles.
La requête prend la forme:
localhost:8080/geoserver/wfs?
service=wfs&
version=2.0.0&
request=DescribeFeatureType&
typeNames=topp:tasmania_roads&
outputFormat=text/javascript
La réponse sera du type:
Dans cet exemple la réponse indique que la couchetasmanbia_roads possède deux attributs: the_geom de type polyligne et TYPEde type string.
GetFeature
L’opération GetFeature renvoie une sélection d’entités de la source de données.
La requête prend la forme:
localhost:8080/geoserver/wfs?
service=wfs&
version=2.0.0&
request=GetFeature&
typeNames=topp:tasmania_roads&
featureID=tasmania_roads.1&
outputFormat=text/javascript
Cette requête demande à obtenir une entité de la couche tasmania_roads, ayant comme identifiant tasmania_roads.1
La réponse est:
On observe les valeurs des coordonnées de la polyligne et la valeur de TYPE pour cette entité: alley.
Le protocole WMS
L’Interface de service de cartes Web (WMS) offre une interface HTTP simple pour demander des images de cartes géoenregistrées à partir d’une ou de plusieurs bases de données géospatiales distribuées. Une demande WMS définit la ou les couches géographiques et la zone d’intérêt à traiter. La réponse à la demande est une ou plusieurs images de carte géo-enregistrées (retournées en tant que JPEG, PNG, etc) qui peuvent être affichées dans une application de navigateur. L’interface permet également de spécifier si les images retournées doivent être transparentes afin que les couches de plusieurs serveurs puissent être combinées ou non.
Une requête GETMAP typique est de la forme:
localhost:8080/geoserver/topp/wms?
service=WMS&
version=1.1.0&
request=GetMap&
layers=topp:tasmania_roads&
bbox=145.19754%2C-43.423512%2C148.27298000000002%2C-40.852802&
width=768&
height=641&
srs=EPSG:4326&
format=image/png
Le paramètre layers indique quelle couche on souhaite, le paramètre bbox indique l’emprise géographique souhaitée et le paramètre srs quel système de coordonnées on demande.
Les paramètres width et height indiquent la taille exacte en pixels de l’image en retour de cette requête, tandis que format indique le format d’image souhaité.
Ces informations sont indispensables car le retour de la requête sera une image qu’on chargera directement dans une fenêtre cartographique:
La taille de l’image sera donc la taille de la fenêtre cartographique et pour que cette image se superpose aux autre informations de la fenêtre les coins de l’image doivent correspondre exactement avec les coordonnées actuelles de la fenêtre.
A titre de comparaison avec le protocole WFS, voici le retour de la requête demandant l’ensemble des entités de la même couche (tasmania_roads):
Les deux résultats s’appuient sur la même couche de données sur le serveur, mais tandis que l’image est directement utilisable dans un navigateur, les données devront être traitées par un code informatique pour pouvoir être affichées.