Skip to Content

Nous adressons toutes nos pensées à la famille de notre ami Jérôme !

http://www.forumsig.org/showthread.php/43488-Disparition-de-Phoenix

Ajouter et personnaliser des symboles SVG depuis QGIS

Niveau Débutant
Logiciels utilisés QGIS
Plateforme Windows | Mac | Linux | FreeBSD

La bilbiothèque de symboles SVG de QGIS est assez complète mais comment ajouter d'autres symboles et surtout comment pouvoir changer la couleur et l'épaisseur des contours directement depuis QGIS ? C'est ce que nous allons voir dans cet article.

Avant d'aller plus loin, pour ceux qui auraient manqué cet article, lisez design cartographique : une liste de ressources en ligne indispensables, vous y trouverez une sélection de sites proposant des symboles SVG (en particulier FlatIcon - www.flaticon.com/ )

Ajouter de nouveaux symboles dans QGIS

Pour ajouter des symboles SVG, vous avez plusieurs méthodes possibles : 

  • Une fois que vous êtes dans QGIS, dans le menu Symbole SVG vous pouvez parcourir vers le fichier SVG de votre choix via le bouton parcourir en bas de la partie Groupes SVG

  • Vous pouvez copier les nouveaux symboles dans le répertoire où sont déjà présents les bibliothèques SVG par défaut (indiqué également sous la fenêtre Groupes SVG)
     
  • Vous pouvez regrouper l'ensemble de vos symboles dans un répertoire sur votre machine ou votre serveur et l'ajouter dans les chemins vers les symboles SVG. Pour cela aller dans les options de QGIS > Système et ajoutez vos nouveaux chemins.

Ils apparaitront dans l'arborescence des fichiers SVG et dans les aperçus des symboles.

Modifier le SVG pour autoriser sa personnalisation sous QGIS

Principe :

Editer le fichier SVG avec n'importe quel éditeur de texte (gedit, notepadd ++, etc.)

Remplacez les paramètres de style dans le fichier SVG par :

  • fill="param(fill) #FFF" --> modifie le remplissage
  • stroke="param(outline) #000" --> modifie la couleur de bordure
  • stroke-width="param(outline-width) 1" --> modifie l'épaisseur du contour

Cas simple

J'ai une étoile en SVG (oui je sais qu'il y en a déjà dans QGIS mais c'est pour l'exemple ... :-) ) --> 

J'ouvre le fichier : 

Il suffit de remplacer 

style="fill:#010101;"

par :

fill="param(fill) #FFF"

Ca fonctionne !

Cas intermédiaire

Avec un symbole en plusieurs partie sans les paramètres "fill" comme celui-ci --> 

Avec un éditeur de texte :

Vous aurez le cas de figure avec beaucoup de symboles du site FlatIcon...

Pour permettre l'édition de l'objet dans QGIS, il faut tout simplement ajouter les paramètres avant la balise <path pour chaque objet du dessin (ici en 2 parties) :

<path fill="param(fill) #FFF" stroke="param(outline) #000" stroke-width="param(outline-width) 1" d="M57.851,40.752V25.2...

Dans QGIS, il est maintenant possible d'éditer la couleur, le contour et même l'épaisseur (pour faire une sorte de halo)

Cas difficile

Et si mon SVG utilise des dégradés ?

Je créé sous Inkscape un cercle avec un dégradé radial pour une impression de volume.

Je veux ensuite l'utiliser dans QGIS ? C'est la même logique, à la place de la couleur noire, je vais remplacer par les paramètres vu au dessus :

<linearGradient

       id="linearGradient3761"

       osb:paint="gradient">

      <stop

         style="stop-color:#f7f7f7;stop-opacity:1;"

         offset="0"

         id="stop3763" />

      <stop

         style="stop-color:param(fill) #FFF;stop-opacity:1;"

         offset="1"

         id="stop3765" />

    </linearGradient> 

Dans ce cas, je ne personnalise qu'une couleur de mon dégradé (la partie noire, la blanche restera figée). Si on y ajoute un contour, alors il faut aussi modifier les lignes suivantes du code : 

<path

       sodipodi:type="arc"

       style="fill:url(#radialGradient3781);fill-opacity:1;fill-rule:evenodd;stroke:param(outline) #000;stroke-width:param(outline-width) 1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"

       id="path2991"

       sodipodi:cx="302"

       sodipodi:cy="427.36218"

       sodipodi:rx="54"

       sodipodi:ry="54"

       d="m 356,427.36218 a 54,54 0 1 1 -108,0 54,54 0 1 1 108,0 z"

       transform="matrix(0.46296296,0,0,0.46296296,-113.81481,828.50934)" />


Voici le résultat sur une carte QGIS (sans utiliser de contours): 

Site officiel : Tutoriel anglais sur Sourcepole
Autres Liens : Question sur GIS-Stack-Exchange

Commentaires

Symbol layer

Bonjour,

Je ne suis pas capable d'acceder a l'option "symbol layer type" quand je suis dans les proprietes d'une couche (afin d'utiliser des icones SVG). Savez vous d'ou cela peut venir?

Merci,
T.

Bonjour, merci pour cet

Bonjour,

merci pour cet article très instructif. Je rencontre cependant un souci avec ce fichier SVG : http://www.sjjb.co.uk/mapicons/svg/tourist/view_point.svg
J'arrive bien à modifier le premier objet (premier bloc path) mais pas le second. Est-ce que vous y arrivez ?

Seconde question, est-il possible de réaliser un dégradé via la palette de couleurs en choisissant un symbole SVG dans QGIS avec le mode "catégorisé" ?

Cordialement,

Pierre

Désolé pour le temps de réponse

QGIS ne peut modifier qu'une couleur de fond donc soit la "fleur" soit le bloc noir à moins de jouer sur les paramètres et affecter sur l'un la couleur de remplissage et l'autre la couleur de bordure mais pas sur que cela fonctionne.

Pour la seconde question, il est tout à fait possible d'affecter une couleur par rapport à une classe mais pas de réaliser un dégradé au sein d'un même symbole.

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.