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

QGIS comme serveur de données OGC

QGIS Server est une implémentation open source WMS 1.3, WFS 1.0.0 et WCS 11.1.1, qui en plus, propose des fonctionnalités cartographiques avancées pour le rendu thématique. QGIS Server est une application FastCGI/CGI (Common Gateway Interface) écrite en C++ qui fonctionne avec un serveur web (tel que Apache, Lighttpd). Il dispose d’une extension Python qui autorise un développement rapide et efficace et un déploiement de nouvelles fonctionnalités. Il a été financé au départ par les projets de l’UE Orchestra, Sany et la ville d’Uster en Suisse.

QGIS Server 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 les sections qui suivent vous trouverez les instructions d’installation de QGIS Server sur Linux Debian/Ubuntu. Pour d’autres plateformes ou distributions, nous vous recommandons les contributions d’utilisateurs accessibles aux adresses suivantes :

Installation de QGIS Server sur Debian/Ubuntu

A ce stade, nous donnerons une courte et simple procédure d’installation pour une configuration de travail minimale utilisant Apache 2 sur Debian Squeeze (avec quelques variations mineures pour Ubuntu 14.04). De nombreux autres OS proposent aussi des paquets pour QGIS Server. Si vous devez les compiler depuis la source, merci de vous référez aux URL ci-dessus.

Premièrement, ajoutez le dépôt SIG Debian suivant :

$ cat /etc/apt/sources.list.d/debian-gis.list
deb http://qgis.org/debian trusty main
deb-src http://qgis.org/debian trusty main

$ # Add keys
$ sudo gpg --keyserver keyserver.ubuntu.com --recv-key 3FF5FFCAD71472C4
$ sudo gpg --export --armor 3FF5FFCAD71472C4 | sudo apt-key add -

$ # Update package list
$ sudo apt-get update && sudo apt-get upgrade

Maintenant, installez QGIS Server :

$ sudo apt-get install qgis-server python-qgis

Installez par exemple l’extension HelloWorld pour tester les serveurs. Créez un répertoire pour accueillir les extensions serveur. Cela sera spécifié dans la configuration de l’hôte virtuel et passé au serveur par le biais d’une variable d’environnement :

$ sudo mkdir -p /opt/qgis-server/plugins
$ cd /opt/qgis-server/plugins
$ sudo wget https://github.com/elpaso/qgis-helloserver/archive/master.zip
$ # In case unzip was not installed before:
$ sudo apt-get install unzip
$ sudo unzip master.zip
$ sudo mv qgis-helloserver-master HelloServer

Installez le serveur Apache dans un hôte virtuel séparé sur le port 80. Activez le module rewrite pour transmettre les entêtes HTTP BASIC auth.

$ sudo a2enmod rewrite
$ cat /etc/apache2/conf-available/qgis-server-port.conf
Listen 80
$ sudo a2enconf qgis-server-port

Voici la configuration de l’hôte virtuel, stocké dans /etc/apache2/sites-available/001-qgis-server.conf :

<VirtualHost *:80>
  ServerAdmin [email protected]
  DocumentRoot /var/www/html

  ErrorLog ${APACHE_LOG_DIR}/qgis-server-error.log
  CustomLog ${APACHE_LOG_DIR}/qgis-server-access.log combined

  # Longer timeout for WPS... default = 40
  FcgidIOTimeout 120
  FcgidInitialEnv LC_ALL "en_US.UTF-8"
  FcgidInitialEnv PYTHONIOENCODING UTF-8
  FcgidInitialEnv LANG "en_US.UTF-8"
  FcgidInitialEnv QGIS_DEBUG 1
  FcgidInitialEnv QGIS_SERVER_LOG_FILE /tmp/qgis-000.log
  FcgidInitialEnv QGIS_SERVER_LOG_LEVEL 0
  FcgidInitialEnv QGIS_PLUGINPATH "/opt/qgis-server/plugins"

  # Needed for QGIS HelloServer plugin HTTP BASIC auth
  <IfModule mod_fcgid.c>
      RewriteEngine on
      RewriteCond %{HTTP:Authorization} .
      RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  </IfModule>

  ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
  <Directory "/usr/lib/cgi-bin">
      AllowOverride All
      Options +ExecCGI -MultiViews +FollowSymLinks
      # for apache2 > 2.4
      Require all granted
      #Allow from all
  </Directory>
 </VirtualHost>

Maintenant activez l’hôte virtuel et redémarrer Apache :

$ sudo a2ensite 001-qgis-server
$ sudo service apache2 restart

Testez le serveur avec l’extension HelloWorld :

$ wget -q -O - "http://localhost/cgi-bin/qgis_mapserv.fcgi?SERVICE=HELLO"
HelloServer!

Vous pouvez avoir un aperçu des GetCapabilities de QGIS server ici : http://localhost/cgi-bin/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

Astuce

Si vous travaillez avec une entité qui a beaucoup de nœuds alors la modification ou l’ajout d’une nouvelle entité échouera. Dans ce cas, il est possible d’insérer le code suivant dans le fichier 001-qgis-server.conf file:

<IfModule mod_fcgid.c>
FcgidMaxRequestLen 26214400
FcgidConnectTimeout 60
</IfModule>

Créer un serveur WMS / WFS 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

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.

Warning

si vous utilisez le projet QGIS avec des styles basés sur des fichiers SVG qui utilisent des chemins relatifs, vous devez prendre conscience que le serveur trace les chemins relatifs à partir de l’emplacement du fichier qgis_mapserv.fcgi (et non du fichier qgs). Ainsi, si vous déployez un projet sur le serveur et que les fichiers SVG ne sont pas correctement placés, les images produites risquent de ne pas respecter le style de l’outil bureautique. Pour que cette situation ne se produise pas, vous pouvez simplement copier les fichiers SVG relativement à qgis_mapserv.fcgi. vous pouvez également créer un lien symbolique pointant vers le répertoire contenant les fichiers SVG dans le répertoire hébergeant le fichier fcgi (sur Linux/Unix).

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 signPlus 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 GetProjectSettings 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 signPlus 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.

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 signPlus 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.

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.

QGIS supporte les requêtes WMS serveur suivantes :

  • GetCapabilities
  • GetMap
  • GetFeatureInfo
  • GetLegendGraphic (SLD profile)
  • DescribeLayer (SLD profile)
  • GetStyles (custom QGIS profile)

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.

QGIS supporte les requêtes WFS serveur suivantes :

  • GetCapabilities
  • DescribeFeatureType
  • GetFeature
  • Transaction

Capacités WMS

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

QGIS supporte les requêtes WCS serveur suivantes :

  • GetCapabilities
  • DescribeCoverage
  • GetCoverage

Cache GetCapabilities

Pour améliorer les temps de réponse, QGIS Server met en cache les réponses aux requêtes GetCapabilities. Lorsqu’une telle requête survient, QGIS Server met en cache la réponse et marque le cache comme valide. En même temps, il vérifie si le fichier de projet est modifié. Lorsque le projet est modifié, le cache est déclaré invalide est QGIS attend une nouvelle requête pour le regénérer.

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.

Configuration serveur et paramètres gérés

QGIS Server gère certains paramètres spécifiques et certaines requêtes qui améliore grandement les possibilités de personnalisation de son comportement. Les paragraphes qui suivent listent les paramètres spécifiques et les variables d’environnement gérées par le serveur.

Paramètres additionnels supportés par tout type de requête

  • Paramètres FILE_NAME: si configuré, la réponse du serveur sera renvoyée au client sous forme de fichier pièce-jointe avec le nom de fichier indiqué par le paramètre.

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

Note

Vous pouvez définir une variable d’environnement QGIS_PROJECT_FILE pour indiquer à l’exécutable du serveur où trouver le fichier de projet QGIS. Cette variable est l’emplacement à partir duquel QGIS lira le fichier de projet. Si cette variable n’est pas définie, le serveur utilisera le paramètre MAP de la requête et, en dernier recours, cherchera dans le répertoire de l’exécutable du serveur.

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

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

  • 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&...
  • Paramètre FILTER: (disponible dans QGIS 1.8 et supérieur).

    Des sous-ensembles de couches peuvent être sélectionnés avec le paramètre FILTER. La syntaxe est basiquement la même que pour les chaînes de caractères de sous-ensembles QGIS. Néanmoins, il existe quelques restrictions pour éviter les injections SQL dans les bases de données en utilisant QGIS Server:

    Les chaînes de caractères doivent être entourées de guillemets (simples pour le chaînes de caractères, double pour les attributs). Un espace entre chaque mot/caractère spécial est obligatoire. Les mots-clés autorisés et les caractères spéciaux sont ‘AND’, ‘OR’, ‘IN’, ‘=’, ‘<’, ‘>=’, ‘>’, ‘>=’, ‘!=*, ‘(‘,’)’. Les points-virgules dans les chaînes d’expression ne sont pas autorisés.

    Exemple:

    http://myserver.com/cgi/qgis_mapserv.fcgi?REQUEST=GetMap&LAYERS=mylayer1,mylayer2&FILTER=mylayer1:"OBJECTID" = 3;mylayer2:'text' = 'blabla'&....

Note

Il est possible d’effectuer des recherches attributaires via GetFeatureInfo en omettant le paramètre X/Y si un FILTER est présent. QGIS Server renvoie alors l’information des entités correspondantes et génère une emprise combinée dans la sortie xml.

  • Paramètre SELECTION: (Disponible dans QGIS 1.8 et supérieur)

    Les entités vectorielles peuvent être sélectionnées en envoyant des listes séparées par des virgules avec les ids des entités dans les requête GetMap et GetPrint.

    Exemple:

    http://myserver.com/cgi/qgis_mapserv.fcgi?REQUEST=GetMap&LAYERS=mylayer1,mylayer2&SELECTION=mylayer1:3,6,9;mylayer2:1,5,6&...

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

Les requêtes WMS vers QGIS Server gère les paramètres supplémentaires pour définir la tolérance pour les couches de points, de lignes et de polygones:

  • Paramètre FI_POINT_TOLERANCE: Tolérance pour les requêtes GetFeatureInfo sur les couches de points, en pixels.

  • Paramètre FI_LINE_TOLERANCE: Tolérance pour les requêtes GetFeatureInfo sur les couches de lignes, en pixels.

  • Paramètre FI_POLYGON_TOLERANCE: Tolérance pour les requêtes GetFeatureInfo sur les couches de polygones, en pixels.

Requête GetPrint

QGIS Server dispose de la capacité de créer une sortie de composeur d’impression au format pdf ou image. Les fenêtres de composeur d’impression du projet publié sont utilisés comme modèles. Dans la requête GetPrint, le client a la possibilité d’indiquer des paramètres pour les cartes et les étiquettes du composeur contenu.

Exemple :

Le projet publié dispose de deux compositions de cartes. Dans la réponse GetProjectSettings, elles sont listées comme modèle d’impression possibles:

<WMS_Capabilities>
...
<ComposerTemplates xsi:type="wms:_ExtendedCapabilities">
<ComposerTemplate width="297" height="210" name="Druckzusammenstellung 1">
<ComposerMap width="171" height="133" name="map0"/>
<ComposerMap width="49" height="46" name="map1"/></ComposerTemplate>
</ComposerTemplates>
...
</WMS_Capabilities>

Le client dispose maintenant d’une information pour demander une sortie d’impression:

http://myserver.com/cgi/qgis_mapserv.fcgi?...&REQUEST=GetPrint&TEMPLATE=Druckzusammenstellung 1&map0:EXTENT=xmin,ymin,xmax,ymax&map0:ROTATION=45&FORMAT=pdf&DPI=300

Les paramètres de la requête GetPrint sont:

  • <map_id>:EXTENT donne l’emprise d’un composeur de cartes sous la forme xmin,ymin,xmax,ymax.

  • <map_id>:ROTATION, la rotation de la carte en degrés.

  • <map_id>:GRID_INTERVAL_X, <map_id>:GRID_INTERVAL_Y, la densité de ligne pour les grilles d’un composeur de carte dans les direction x et y.

  • <map_id>:SCALE, indique une échelle de carte pour le composeur. C’est très utile pour s’assurer de l’échelle de visibilité des couches et des étiquettes, même si le client et le serveur disposent d’algorithmes différents pour calculer le dénominateur d’échelle.

  • <map_id>:LAYERS, <map_id>:STYLES, permettent de fournir une liste de couches et de styles pour le composeur (utilisé dans le cas des cartes d’aperçu qui doivent afficher uniquement un sous-ensemble de couches).

Requête GetLegendGraphics

Plusieurs paramètres additionnels sont disponibles pour modifier la taille des éléments de légende:

  • BOXSPACE, epsace entre le cadre de légende et le contenu (mm).

  • LAYERSPACE, espace vertical entre les couches (mm).

  • LAYERTITLESPACE, espace vertical entre le titre de la couche et les éléments à suivre (mm).

  • SYMBOLSPACE, espace vertical entre le symbole et l’objet qui suit (mm).

  • ICONLABELSPACE, espace horizontal entre le symbole et le texte de l’étiquette (mm).

  • SYMBOLWIDTH, largeur de l’aperçu du symbole (mm).

  • SYMBOLHEIGHT, hauteur de l’aperçu du symbole (mm).

Ces paramètres modifies les propriétés des polices des titres des couches et des objets étiquettes:

  • LAYERFONTFAMILY / ITEMFONTFAMILY, famille de police pour le titre de la couche/texte de l’objet.

  • LAYERFONTBOLD / ITEMFONTBOLD, ‘TRUE’ pour utiliser une police en gras.

  • LAYERFONTSIZE / ITEMFONTSIZE, taille de la police en point.

  • LAYERFONTITALIC / ITEMFONTITALIC ‘TRUE’, pour utiliser une police en italique.

  • LAYERFONTCOLOR / ITEMFONTCOLOR, code couleur hexadécimal (ex: #FF0000 pour rouge).

  • LAYERTITLE / RULELABEL (à partir de QGIS 2.4), paramétré à ‘FALSE’ pour obtenir uniquement le graphique de la légende sans ses étiquettes.

Légende basée sur le contenu. Ces paramètres permettent au client de demander une légende qui affiche uniquement les symboles des entités situées dans l’emprise requêtée:

  • BBOX, l’emprise géographique sur laquelle la légende sera construite.

  • CRS / SRS, le système de coordonnées de référence utilisé pour définir les coordonnées de BBOX.

  • WIDTH / HEIGHT, lorsque paramétrés, ces valeurs doivent correspondre à la requête GetMap pour permettre à QGIS Server de mettre à l’échelle les symboles selon la taille de l’image.

La fonctionnalité de légende basée sur le contenu d’entités est basée sur l’implémentation de UMN MapServer:.

Requête GetProjectSettings

Ce type de requête fonctionne de manière similaire aux requêtes GetCapabilities mais il reste spécifique à QGIS Server et permet au client de lire de l’information supplémentaire non renvoyée par les sorties de GetCapabilities:

  • Visibilité initiale des couches.

  • Information sur les attributs des vecteurs et leur type d’éditeur.

  • Information à propos de l’ordre des couches et de leur rendu.

  • liste des couches publiées en WFS

Export DXF

Il est possible d’exporter les couches au format DXF en utilisant une requête GetMap. Seules les couches qui disposent d’un accès en lecture dans le service WFS sont exportées au format DXF. Voici une requête valide et une documentation des paramètres disponibles:

http://your.server.address/wms/liegenschaftsentwaesserung/abwasser_werkplan?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=Haltungen,Normschacht,Spezialbauwerke&STYLES=&CRS=EPSG%3A21781&BBOX=696136.28844801,245797.12108743,696318.91114315,245939.25832905&WIDTH=1042&HEIGHT=811&FORMAT=application/dxf&FORMAT_OPTIONS=MODE:SYMBOLLAYERSYMBOLOGY;SCALE:250&FILE_NAME=werkplan_abwasser.dxf

Paramètres :

  • FORMAT=application/dxf
  • FILE_NAME=nom_de_fichier_suggéré_pour_le_télécharement.dxf

  • FORMAT_OPTIONS=voir les options ci-dessous, les paires clef:valeur sont séparées par des points virgules

Paramètres de FORMAT_OPTIONS:

  • SCALE:échelle est utilisé pour les règles de symbologie, les filtres et les styles (et non pour la mise à l’échelle des données qui restent à l’échelle initiale).

  • MODE:NOSYMBOLOGY|FEATURESYMBOLOGY|SYMBOLLAYERSYMBOLOGY correspond aux trois options d’export disponibles dans la boîte de dialogue de l’export DXF sous QGIS Desktop.

  • LAYERSATTRIBUTES:colonne_avec_valeurs_utilisées_pour_les_noms_des_couches_dxf - si non spécifié, les noms originels des couches QGIS sont utilisés.

  • USE_TITLE_AS_LAYERNAME, si activé, le titre de la couche sera utilisé comme nom de couche.

Paramètres additionnels supportés par la requête WFS GetFeature

In the WFS GetFeature request, QGIS Server accepts two extra parameters in addition to the standard parameters according to the OGC WFS 1.0.0 specification:

  • Paramètre GeometryName: ce paramètre peut être utilisé pour récupérer l’emprise ou le centroïde de la géométrie ou aucune géométrie si none est employé (on récupère uniquement les attributs). Les valeurs autorisées sont extent, centroid ou none.

  • StartIndex parameter: STARTINDEX is standard in WFS 2.0, but it’s an extension for WFS 1.0.0 which is the only version implemented in QGIS Server. STARTINDEX can be used to skip some features in the result set and in combination with MAXFEATURES will provide for the ability to use WFS GetFeature to page through results. Note that STARTINDEX=0 means start with the first feature, skipping none.

Journalisation de QGIS Server

Pour enregistrer 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.

Nom court pour les couches, les groupes et le projet

Un certains nombre d’éléments disposent d’un <Name> dt d’un <Title>. Le nom est une chaîne de caractères utilisée dans la communication de machine à machine alors que le titre est utilisé pour les êtres humains.

For example, a dataset might have the descriptive Title “Maximum Atmospheric Temperature” and be requested using the abbreviated Name “ATMAX”. User can already set title for layers, groups and project.

Le nom OWS est basé sur le nom utilisé dans l’arbre des couches. Ce nom est plus une étiquette pour les être humains qu’un nom utilisé dans la communication de machine à machine.

QGIS Server gère :

  • l’édition de nom courts dans les propriétés des couches

  • Boîte de dialogue de données WMS pour les groupes de l’arbre de couches (nom court, titre, résumé). En faisant un clic-droit sur un groupe de couches et en sélectionnant l’option Définir un groupe de données WMS, vous obtiendrez:

    Figure set group wms data:

    ../../../_images/set_group_wms_data.png
  • l’édition de nom court dans les propriétés du projet et l’ajout d’un validateur d’expressions régulières "^[A-Za-z][A-Za-z0-9\._-]*" pour les éditions de noms courts (via une méthode statique)

  • l’ajout d’un validateur de fonction rationnelles "^[A-Za-z][A-Za-z0-9\._-]*" pour les éditions de noms courts (via une méthode statique)

  • l’ajout d’un élément TreeName dans les propriétés du projet (fullProjectSettings)

Si un nom court a été utilisé pour des couches, des groupes et pour le projet, il sera utilisé par QGIS Server pour définir le nom de la couche.

Connexion au fichier de service

Pour faire en sorte qu’Apache puisse accéder au fichier de service PostgreSQL (consultez la section ref:pg-service-file), vous devez modifier vos fichiers *.conf de la manière suivante:

SetEnv PGSERVICEFILE /home/web/.pg_service.conf

<Directory "/home/web/apps2/bin/">
  AllowOverride None
.....

Ajouter des polices à votre serveur Linux

Gardez à l’esprit que vous pouvez utiliser des projet QGIS qui utilisent des polices qui n’existent pas par défaut sur les autres machines. Cela signifie que si vous partagez le projet, il pourra apparaître de manière différente sur d’autres machines (si les polices n’existent pas sur la machine cible).

Pour s’assurer que cela n’arrive pas, vous devez simplement installer les polices manquantes sur la machine cible. En règle général, le faire sur des systèmes bureautiques est relativement simple (double-cliquer sur des polices).

Sous Linux, si vous n’avez pas d’environnement de bureau d’installé (ou que vous préferrez la ligne de commande), vous devrez:

  • Sur les systèmes basés sur Debian:

    sudo su
    mkdir -p /usr/local/share/fonts/truetype/myfonts && cd /usr/local/share/fonts/truetype/myfonts
    
    # copy the fonts from their location
    cp /fonts_location/* .
    
    chown root *
    cd .. && fc-cache -f -v
  • Pour les systèmes basés sur Fedora:

    sudo su
    mkdir /usr/share/fonts/myfonts && cd /usr/share/fonts/myfonts
    
    # copy the fonts from their location
    cp /fonts_location/* .
    
    chown root *
    cd .. && fc-cache -f -v

Variables d’environnement

Vous pouvez configurer certains aspects de QGIS Server avec des variables d’environnement. Par exemple, pour configurer QGIS Server sur Apache pour qu’il utilise le fichier de configuration /path/to/config/QGIS/QGIS2.ini, ajoutez la ligne suivante dans la configuration d’Apache:

SetEnv QGIS_OPTIONS_PATH "/path/to/config/"

ou, si vous utilisez fcgi:

FcgidInitialEnv QGIS_OPTIONS_PATH "/path/to/config/"

Voici une liste des variables gérées par QGIS Server:

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

  • QUERY_STRING: la chaîne de caractères de la requête, habituellement transmise par le serveur Web. Cette variable peut être utile pour tester le binaire de QGIS Server depuis la ligne de commande.

  • QGIS_PROJECT_FILE: le fichier de projet .qgs`, habituellement transmise sous forme de paramètre dans la chaîne de la requête, vous pouvez également la paramétrer comme une variable d’environnemen (par exemple, en utilisant le module Apache mod_rewrite).

  • 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é. Consultez Journalisation de QGIS Server.

  • MAX_CACHE_LAYERS: Indique le nombre maximal de couches mises en cache (100 par défaut).

  • DISPLAY: Ce paramètre est utilisé pour transmettre (tromper) le numéro d’affichage du serveur X (utilisé sur les systèmes de type Unix).

  • QGIS_PLUGINPATH: Utile si vous utilisez des extensions Python pour le serveur, le répertoire indiqué est celui qui sera utilisé pour la recherche des extensions Python.