Skip to content

Instantly share code, notes, and snippets.

@mdouchin
Last active March 21, 2018 09:40
Show Gist options
  • Save mdouchin/cb575fd538c39cad8d1a to your computer and use it in GitHub Desktop.
Save mdouchin/cb575fd538c39cad8d1a to your computer and use it in GitHub Desktop.
Add SVG paths in QGIS Server

Voici la nouvelle bonne méthode (depuis QGIS 2.4) pour utiliser des SVG côté bureautique et côté serveur sans souci. C'est un peu complexe, mais on ne le fait qu'une fois

Machine cliente (bureautique)

  • Créer un répertoire ./share/svg/une_categorie/ quelque part sur votre système, par exemple un répertoire au-dessus des répertoires Lizmap. Par exemple : C:/chemin/vers/mes/dossiers/sig/share/svg/une_categorie

  • Y mettre les fichiers SVG que vous souhaitez utiliser dans vos projets QGIS publiés avec Lizmap ou QGIS Server seul

  • Ouvrir les options de QGIS : menu Préférences / Options puis onglet Système et bloc Chemins SVG

  • Ajouter le chemin C:/chemin/vers/mes/dossiers/sig/share/ via le bouton Ajouter et valider en fermant la fenêtre d'options avec le bouton OK. Attention: ne pas utiliser le chemin complet C:/chemin/vers/mes/dossiers/sig/share/svg/une_categorie , mais bien s'arrêter au répertoire share

  • Dans les propriétés des couches vecteurs, onglet Style , choisir le SVG via l'arbre Groupes SVG , en cliquant sur le répertoire share : les SVG sont disponibles dans le dossier une_categorie apparaissent dans le panneau de droite.

  • Enregistrer le projet QGIS. Vous pouvez l'ouvrir avec un éditeur de texte et vérifier que les chemins vers vos SVG sont du type svg/une_categorie/supermarket.svg

Sur le serveur

  • Sur le serveur, copier le contenu du répertoire share au même niveau que les répertoires Lizmap (ou ailleurs, mais bien noter le chemin), par exemple dans /home/data/ftp/graphiques/

On a donc une arborescence comme celle-ci:

/home/data/ftp/graphiques/
|-- /home/data/ftp/graphiques/svg/
   |-- /home/data/ftp/graphiques/svg/une_categorie/
      |-- /home/data/ftp/graphiques/svg/une_categorie/supermarket.svg
  • Créer un répertoire pour contenir le fichier ini de configuration de QGIS, par exemple /home/data/config/QGIS/ (en respectant la majuscule pour QGIS). Y mettre un fichier nommé QGIS2.ini pour avoir un chemin:
/home/data/config/QGIS/QGIS2.ini
  • Mettre dans ce fichier ini la configuration des chemins SVG. On peut ajouter plusieurs chemins (sans slash de fin), par exemple:
[svg]
searchPathsForSVG=/home/data/ftp/graphiques|/home/data/ftp/autres_graphiques
  • Configurer pour Apache la variable d'environnement QGIS_OPTIONS_PATH vers le chemin vers le fichier d'options de QGIS, dans lequel est spécifié le répertoire share comme répertoire contenant des SVG. On peut mettre cette variable dans le fichier fcgid.conf, ou bien pour chacun des vhost Apache. Attention à ne pas mettre le chemin complet /home/data/config/QGIS/ mais bien le répertoire d'avant QGIS: /home/data/config/
FcgidInitialEnv QGIS_OPTIONS_PATH "/home/data/config/"
  • Recharger Apache (ou redémarrer)
service apache2 reload
  • Tester avec un projet l'utilisation des SVG. Avec cette configuration, tous les appels aux SVG doivent normalement fonctionner : tuiles, image de légende, impression.
@nliaudat
Copy link

Hello,
Il y a bien plus simple :

  1. Créer un dossier svg dans le dossier contenant le projet .qgs.
  2. Ajouter une expression pour la source du svg :
CASE WHEN (@qgis_os_name  = 'windows')  THEN
@project_folder  || '\\svg\\NorthArrow_02.svg'
ELSE
@project_folder  || '/svg/NorthArrow_02.svg'
END

;)

@nboisteault
Copy link

Merci @nliaudat pour cette astuce. En l'utilisant, j'arrive à afficher le svg sur la carte mais j'ai un point d'interrogation dans la légende dans le rendu QGIS Desktop et Server 2.18.17. As-tu le même problème ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment