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

.

QGIS comme serveur de données OGC

Le serveur QGIS est une implémentation open source du WMS 1.3, WFS 1.0.0 et WCS 1.1.1 qui propose en plus des fonctionnalités avancées de rendu cartographique. Le serveur QGIS est 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.

QGIS Serveur 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.

Etant donné que QGIS Desktop et QGIS Server utilisent les mêmes bibliothèques de visualisation, les cartes publiées sur le web ont le même aspect que sous le SIG Desktop.

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 install 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

Un WMS standard avec les frontières des États-Unis incluses dans le serveur QGIS (KDE) nix

Créer un WMS / WFS / WCS depuis un projet QGIS

Pour fournir un nouveau service WMS, WFS ou WCS avec QGIS Server, nous devons créer un fichier de projet QGIS avec quelques données. Ici nous utilisons le fichier shape ‘Alaska’ provenant du jeu de données d’exemple de QGIS. Il faut également définir les couleurs et les styles des couches dans QGIS et le SRS du projet si ils ne sont pas déjà définis.

Figure Server 2:

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

Définitions pour un projet WMS/WFS/WCS de QGIS Server (KDE)

Ensuite allez dans le menu Serveur OWS de la boîte de dialogue Projet ‣ Propriétés du projet et indiquez les informations sur OWS dans les champs dans Informations générale du service. Elles apparaitront dans la réponse GetCapabilities des services WMS, WFS et WCS. Si vous n’avez pas coché checkbox les Informations générale du service, QGIS Server utilisera les informations fournies par le fichier wms_metadata.xml disponible dans le répertoire cgi-bin.

Capacités WMS

Dans la section Capacités WMS, vous pouvez définir l’emprise affichée de la réponse WMS GetCapabilities en saisissant les valeurs X/Y minimum et maximum dans les champs de Emprise annoncée. En cliquant sur Utiliser l’emprise actuelle du canevas, ces valeurs sont paramétrées pour utiliser celles du canevas de carte de QGIS. En cliquant sur checkbox Restreindre les SCR, vous pouvez restreindre la liste des systèmes de référence de coordonnées (SCR) que QGIS Server renvoie. Utilisez le bouton mActionSignPlus pour sélectionner ces SCR depuis le sélecteur de Système de Coordonnées de Référence ou cliquez sur Utilisé pour ajouter le SCR utilisé dans le projet QGIS à la liste.

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 Sélection de composeur d’impression afin de l’ajouter à la liste des composeurs exclus.

Si vous désirez exclure une couche ou un groupe de couches de la publication WMS, cochez checkbox Exclure des couches et cliquez sur le bouton mActionSignPlus dessous. Cela ouvre une boîte de dialogue Sélection de couches et de groupes spécifiques qui vous permet de choisir les couches et les groupes qui ne seront pas publiés. Utilisez les touches Shift ou Ctrl pour choisir plusieurs entrées en même temps.

Vous pouvez recevoir la réponse GetFeatureInfo en texte simple, XML et GML. Le format par défaut est le XML. Le texte simple et le GML dépendent du format de sortie choisi lors de la requête GetFeatureInfo.

Si vous le désirez, vous pouvez cocher checkbox Ajouter la géométrie de l’entité à la réponse. Cela permettra à la réponse GetFeatureInfo de renvoyer les géométries des entités dans un format texte. Si vous voulez que QGIS Server annonce une URL pour les requêtes spécifiques dans la réponse WMS GetCapabilities, ajoutez l’URL dans le champ URL publiée. De plus, vous pouvez restreindre la taille maximale des cartes renvoyées par la requête GetMap en indiquant une longueur et une largeur maximales dans les champs de la section Maximums pour la requête GetMap.

Si une de vos couches utilise l’affichage d’indication de carte (pour afficher du texte issu d’expressions), cette dernière sera listée au sein de la sortie GetFeatureInfo. Si la couche utilise une Valeur Relationnelle pour un de ses attributs, cette information sera également renvoyée par la sortie de GetFeatureInfo.

Capacités WFS

Dans la partie Capacités WFS, vous pouvez sélectionner les couches qui vous voulez publier en WFS et indiquer si elle permettent les opérations de mise à jour, d’insertion et de suppression. Si vous ajoutez une URL dans le champ URL publiée des Capacités WFS, QGIS Server annoncera cette URL spécifique dans la réponse WFS GetCapabilities.

Capacités WCS

Dans la partie Capacités WCS, vous pouvez sélectionner les couches qui vous voulez publier en WCS. Si vous indiquez une URL dans le champ URL publiée de la section Capacités WCS, QGIS Server annoncera cette URL spécifique dans la réponse WCS GetCapabilities.

Maintenant, sauvegarder la session dans un fichier de projet alaska.qgs. Pour founir le projet en WMS/WFS, nous créons un nouveau répertoire /usr/lib/cgi-bin/project avec des provlèges d’administrateur et nous ajoutons le fichier de projet alaska.qgs ainsi qu’une copie du fichier qgis_mapserv.fcgi. C’est tout !

Nous pouvons maintenant tester notre projet WMS, WFS et WCS. Ajoutez les WMS, WFS et WCS dans QGIS tel que décrit dans Chargement des couches WMS/WMTS, Client WFS et WFS-T et Client WCS et chargez les données. 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 la section sur les outils d’annotation dans Outils généraux 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.

Paramètres additionnels supportés par la requête WMS GetMap

Dans la requête WMS GetMap, QGIS Server accepte quelques paramètres additionnels en complément des paramètres standards, comme cela est permis par la spécification WMS 1.3.0 :

  • 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&...

QGIS Journal serveur

Pour journaliser les requêtes envoyées au serveur, paramétrez les variables d’environnement suivantes:

  • QGIS_SERVER_LOG_FILE: indique le chemin et le nom de fichier du journal. Assurez-vous que le serveur dispose des permissions adaptées pour écrire dans le fichier. Le fichier est créé automatiquement lors de l’envoi de requêtes vers le serveur. S’il n’existe pas, vérifiez les permissions.

  • GIS_SERVER_LOG_LEVEL: indique le niveau de journalisation désiré. Les valeurs disponibles sont les suivantes:

    • 0 INFO (journalise toutes les requêtes),

    • 1 WARNING,
    • 2 CRITICAL (journalise uniquement les erreurs critiques, adapté à un fonctionnement en production).

    Exemple:

    SetEnv QGIS_SERVER_LOG_FILE /var/tmp/qgislog.txt
    SetEnv QGIS_SERVER_LOG_LEVEL 0

Note

  • Lorsque vous utilisez le module Fcgid, utilisez la clause FcgidInitialEnv à la place de SetEnv !

  • La journalisation du serveur est également activée si l’éexécutable est compilé en mode publication.

Variables d’environnement

  • QGIS_OPTIONS_PATH: Cette variable indique le chemin vers le répertoire des paramètres. Elle fonctionne de la même manière que l’option –optionspath de l’application QGIS. Elle recherche le fichier de paramètres dans <QGIS_OPTIONS_PATH>/QGIS/QGIS2.ini. Par exemple, pour paramétrer QGIS Server sous Apache pour utiliser le fichier de paramètres /path/to/config/QGIS/QGIS2.ini, ajouter ce qui suit à la configuration Apache:

    SetEnv QGIS_OPTIONS_PATH "/path/to/config/"