Outdated version of the documentation. Find the latest one here.

QGIS as OGC Data Server

Le Serveur QGIS est une implémentation open source du WMS 1.3 et WFS 1.0.0 qui propose de plus des fonctionnalités avancées de rendu cartographique. Il s’agit d’une application FastCGI/CGI (Common Gateway Interface) écrite en C++ qui tourne sur un serveur web (par exemple Apache ou Lighttpd). Il est financé par les projets Orchestra et Sany de l’Union Européenne et la ville d’Uster en Suisse.

Il utilise QGIS comme backend pour la logique des couches SIG et le rendu cartographique. La bibliothèque Qt est utilisée pour l’interface et la programmation multiplateforme en C++. À la différence des autres serveurs WMS, le Serveur QGIS utilise les règles de cartographie comme langage de configuration, à la fois pour la configuration du serveur et pour les règles cartographiques définie par l’utilisateur.

De plus, le projet de Serveur QGIS fournit l’extention ‘Publish to Web’, une extension de QGIS qui exporte les couches courantes et la symbologie dans un projet web pour le Serveur QGIS (contenant les règles de visualisation cartographiques au format SLD).

Le Serveur QGIS utilise les mêmes bibliothèques de visualisation que QGIS : les cartes publiées sur le web ont le même rendu que celles de QGIS. L’extension ‘Publish to Web’ gère pour le moment la sémiologie basique et des règles cartographiques plus complexes paramétrées manuellement. Comme la configuration se base sur le standard SLD et ses extensions, il n’y a qu’un seul langage standardisé à apprendre, ce qui simplifie grandement la complexité de création de cartes pour le web.

Dans un prochain manuel, nous fournirons un exemple de configuration pour mettre en place un Serveur QGIS. Pour le moment, nous vous recommandons de vous référer aux sites suivants pour obtenir plus d’informations :

Installation test sur Debian Squeeze

Nous fournissons ici que de courtes et simples explications sur l’installation sur Debian Squeeze. De nombreux autres systèmes d’exploitation proposent des paquets pour le Serveur QGIS. Si vous devez les compiler depuis le source, référez-vous aux URL ci-dessus.

En plus de QGIS et de QGIS Server, vous avez besoin d’un serveur web, dans notre exemple apache2. Vous pouvez installer tous ces paquets et leurs dépendances nécessaires avec aptitude ou apt-get install. Après l’installation vous devez tester si le serveur web et le serveur QGIS fonctionnent comme prévu. Assurez vous que le serveur Apache tourne avec /etc/init.d/apache2 start. Ouvrez un navigateur web et tapez l’URL http://localhost. Si Apache fonctionne, vous devriez voir le message ‘It works!’.

Testons maintenant l’installation du serveur QGIS. Le fichier qgis_mapserv.fcgi est disponible dans /usr/lib/cgi-bin/qgis_mapserv.fcgi et fournit un WMS standard qui affiche les frontières de l’Alaska. Ajoutez le WMS via l’URL http://localhost/cgi-bin/qgis_mapserv.fcgi comme expliqué dans Sélection des serveurs WMS/WMTS.

Figure Server 1:

../../../_images/standard_wms_usa.png

Standard WMS with USA boundaries included in the QGIS Server (KDE) nix

Créer un WMS / WFS depuis un projet QGIS

To provide a new QGIS Server WMS or WFS we have to create a QGIS project file with some data. Here we use the ‘alaska’ shapefile from the QGIS sample dataset. Define the colors and styles of the layers in QGIS and define the project CRS, if not already done.

Figure Server 2:

../../../_images/ows_server_definition.png

Definitions for a QGIS Server WMS/WFS project (KDE)

Then go to the OWS Server menu of the Project ‣ Project Properties dialog and give some information about the OWS in the fields under Service Capabilities. This will appear in the GetCapabilities response of the WMS or WFS. If you don’t check checkbox Service capabilities QGIS Server will use the information given in the wms_metadata.xml file located in the cgi-bin folder.

In the WMS capabilities section you can define the extent advertised in the WMS GetCapabilities response by entering the minimum and maximum X and Y values in the fields under Advertised extent. Clicking Use Current Canvas Extent sets these values to the extent currently displayed in the QGIS map canvas. By checking checkbox CRS restrictions you can restrict in which coordinate reference systems (CRS) QGIS Server will offer to render maps. Use the mActionSignPlus button below to select those CRS from the Coordinate Reference System Selector, or click Used to add the CRS used in the QGIS project to the list.

Si vous avez défini des composeurs d’impression dans votre projet, ils seront listés dans la réponse GetCapabilities et pourront être utilisés par la requête GetPrint pour créer des impressions, une des mises en page servant de modèle. Ceci est une extension propre à QGIS de la norme WMS 1.3.0. Si vous souhaitez exclure un composeur de la publication par WMS, cochez checkbox Exclure des composeurs et cliquez le bouton mActionSignPlus en dessous. Sélectionnez ensuite un composeur depuis la boîte de dialogue Selection de composeur d’impression afin de l’ajouter à la liste des composeurs exclus.

If you want to exclude any layer or layer group from being published by the WMS, check checkbox Exclude Layers and click the mActionSignPlus button below. This opens the Select restricted layers and groups dialog which allows you to choose the layers and groups that you don’t want to be published. Use the shift or control key if you want to select multiple entries at once.

If you wish you can check checkbox Add WKT geometry to feature info response. This will include in the GetFeatureInfo response the geometries of the features in a text format. If you want QGIS Server to advertise specific request URLs in the WMS GetCapabilities response, enter the corresponding URL in the Advertised URL field. Furthermore you can restrict the maximum size of the maps returned by the GetMap request by entering the maximum width and height into the respective fields under Maximums for GetMap request.

In the WFS capabilities area you can select the layers that you want to provide as WFS, and specify if they will allow the update, insert and delete operations. If you enter a URL in the Advertised URL field of the WFS capabilities section, QGIS Server will advertise this specific URL in the WFS GetCapabilities response.

Now save the session in a project file alaska.qgs. To provide the project as a WMS/WFS, we create a new folder /usr/lib/cgi-bin/project with admin privileges and add the project file alaska.qgs and a copy of the qgis_mapserv.fcgi file - that’s all.

Nous pouvons maintenant tester notre projet WMS et WFS. Ajoutez le WMS et WFS dans QGIS tel que décrit dans Chargement des couches WMS/WMTS et Client WFS et WFS-T et chargez le WMS. L’URL est la suivante :

http://localhost/cgi-bin/project/qgis_mapserv.fcgi

Bien configurer votre OWS

Pour les couches vectorielles, le menu Champs de la fenêtre Couche ‣ Propriétés vous permet de définir quels attributs seront publiés. Par défaut, tous les attributs sont publiés par votre WMS et WFS. Si vous souhaitez ne pas publier un attribut donné, décochez la case correspondante sous la colonne WMS ou WFS.

Vous pouvez superposer en filigrane, sur les cartes produites par votre WMS, des annotations de texte ou de SVG dans le fichier de projet. Voir sec_annotations pour obtenir des instructions sur la création d’annotations. Pour afficher les annotations en filigrane sur la sortie WMS, la case à cocher Figer la position de la carte de la fenêtre Annotation de texte doit être décochée. Cette fenêtre est accessible en double-cliquant sur l’annotation alors qu’un des outils d’annotation est actif. Pour les annotations SVG, vous devrez soit configurer le projet pour sauvegarder les chemins absolus (dans l’onglet Général de la fenêtre du menu Projet‣ Propriétés du projet) ou modifier manuellement le chemin d’accès à l’image SVG de façon à ce qu’il représente un chemin d’accès relatif valide.

Extra parameters supported by the WMS GetMap request

In the WMS GetMap request QGIS Server accepts a couple of extra parameters in addition to the standard parameters according to the OCG WMS 1.3.0 specification:

  • Paramètre MAP: Comme avec MapServer, le paramètre MAP peut être utilisé pour spécifier le chemin vers le fichier projet QGIS. Vous pouvez indiquer un chemin absolu ou un chemin relatif à l’emplacement de l’exécutable du serveur (qgis_mapserv.fcgi). Si aucun chemin n’est indiqué, QGIS Server recherche les fichiers .qgs dans le dossier de son exécutable.

    Exemple:

    http://localhost/cgi-bin/qgis_mapserv.fcgi?\
      REQUEST=GetMap&MAP=/home/qgis/mymap.qgs&...
  • Paramètre DPI : Le paramètre DPI peut être utilisé pour spécifier la résolution de sortie.

    Exemple:

    http://localhost/cgi-bin/qgis_mapserv.fcgi?REQUEST=GetMap&DPI=300&...
  • Paramètre OPACITIES : L’opacité peut être définie sur la couche ou le groupe de couches. Les valeurs possibles vont de 0 (transparence totale) à 255 (complètement opaque).

    Exemple:

    http://localhost/cgi-bin/qgis_mapserv.fcgi?\
      REQUEST=GetMap&LAYERS=mylayer1,mylayer2&OPACITIES=125,200&...