Affichage bivarié sous QGis

Nous avons déjà abordé la création de cartes bivariées avec ArcGis (Affichage bivarié sous ArcGis). Vu le nombre de demandes, voici comment faire la même chose avec QGis.

Il y a deux méthodes de création de cartes bivariées avec QGIS. La première utilise deux couches séparées, chacune représentant l’une des variables classées et colorée en conséquence, avec la méthode « multiplier » pour la fusion des couches,  appliquée à la première couche de fusion. L’avantage de cette méthode est qu’elle est relativement facile.

La deuxième méthode consiste à combiner les deux variables en une seule couche dans laquelle toutes les combinaisons possibles de couleurs sont représentées dans un seul champ. L’avantage de cette méthode est que chacune des couleurs combinée peut être modifiée facilement. Nous allons voir les deux méthodes dans cet article.

L’affichage bivarié nécessite un peu de prétraitement des données : les deux variables doivent être classées dans le nombre de classes prévu en sortie. Si l’on souhaite 9 classes (matrice de 3×3) chaque couche devra être classée en trois classes.
Nous vous recommandons d’utiliser 9 couleurs en sortie pour que la carte soit facile à lire, mais les méthodes présentées ii marchent avec n’importe quel nombre de classes.
Le choix des couleurs est aussi déterminant pour la lecture de la carte. Il faudra que les deux palettes de couleurs choisies pour représenter chaque variable se marient bien, tout en restant visuellement distinctes.

 

Pour notre exemple nous allons utiliser les mêmes couches que  nous avons utilisées dans l’article pour ArcGis (Affichage bivarié sous ArcGis ) et que vous pouvez télécharger ici:

Premier cas: les deux variables sont dans des couches séparées

Nous avons une couche Pente et une couche Occupation du sol.

Pour la couche Occupation du sol, un champ Landuse contient le type d’occupation du sol.

champ occupation du sol dans la couche en entrée

Nous allons classer l’occupation du sol en trois classes, dans un nouveau champ « Classification »:

  • zones boisées : Brush/transitional et Forest auront la valeur 1
  • zones agricoles:Agriculture et Barren land auront la vrontleur 2
  • zones urbaines : Built up auront la valeur 3

Les autres zones (cours d’eau et surface aquatiques) ne participeront pas au résultat et auront une valeur 0.

Après avoir crée le champ Classification, on utilise le calculateur de champ pour le renseigner :

formule de calcul de la classificationavec l’expression:

if(« LANDUSE » IN (‘Brush/transitional’,’Forest’),1,(if(« LANDUSE » IN (‘Agriculture’,’Barren land’),2,(if(« LANDUSE » IN (‘Built up’),3,0)))))

Pour la couche Pente il n’est pas nécessaire d’effectuer une classification car on dispose déjà d’un champ numérique (fzy_pente).

A présent on peut définir les styles des couches dans QGis.

Voici l’échelle de couleurs que nous voulons appliquer:

legende bivariée

Le carre du coin bas gauche correspond à la classe 1 de chaque couche. Nous allons donc appliquer exactement le même code couleur (ici #e8e8e8) à la classe 1 d’occupation du sol et à la classe 1 de la couche Pente.

Les deux autres carrés de la première colonne correspondent aux classes 2 et 3 d’occupation du sol (couleurs #b0d5df et #64acbe) et les deux autres carrés de la première ligne correspondent aux deux autres classes de la couche Pente(couleurs #e4acac et #c85a5a).

Les quatre carrés du coin haut droit sont les couleurs combinées des deux couches.

Nous définissons alors les couleurs de la couche occupation du sol:

définition des couleursAprès avoir cliqué sur la couche->propriétés->styles, vous définissez le style en tant que « catégorisé », colonne « classifica », 3 classes.

Pour affecter les codes couleurs choisis, double cliquez sur le symbole, puis sur couleur,et rentrez le code couleur dans le champ Notation html.

Cliquez aussi sur « remplissage simple » dans la fenêtre « Sélection de symbole » et enlevez la couleur de contour.

Répétez l’opération pour la couche Pente.

Pour que la carte affiche le résultat de la combinaison des deux couches, revenez sur le fenêtre de propriétés de la couche Occupation du sol (assurez-vous qu’elle se trouve en haut de l’affichage) -> Style -> rendu de la couche et affectez la valeur « multiplier » à « Mode de fusion entre couches« .

Le résultat avec les différentes couleurs apparaît

bi5

Deuxième cas: les deux variables sont dans une seule couche.

Nous allons simplement utiliser le résultat de l’intersection des deux couches précédentes (occupation du sol et pente).

Le principe est de générer un champ texte contenant la combinaison des deux variables. Par exemple, pour une occupation du sol =2 et une pente =3, le champ contiendra le texte ’23’.

Vous devez donc procéder à la classification de chaque variable, tel que nous l’avons fait pour l’occupation du sol (Landuse) un peu plus haut.

Nous avons donc le champ « Classifica » avec des valeurs de 1 à 3 pour l’occupation du sol et nous générons un champ « Pente » avec des valeurs de 1 à 3 à partir du champ ‘fzy_pente’.

Avec la calculatrice de champ, nous créons un champ « bivar » de type texte, longueur 2 et nous rentrons l’expression de calcul:

concat(tostring( « Pente » ), tostring(« Classifica » ))

bi6Pour obtenir l’affichage bivarié, maintenant il suffit d’affecter les couleurs de notre légende aux différentes classes de ce champ:

bi7

  • Ouvrez les propriétés de la couche->style
  • Sélectionnez Catégorisé et le champ bivar que nous venons de créer
  • Cliquez sur Classer
  • Sélectionnez les classes qui n’interviennent pas dans la classification (les combinaisons avec 0, etc) et cliquez sur le bouton effacer pour ne garder que les valeurs qui interviennent dans la légende
  • Définissez les couleurs de chaque valeur, ou chargez un fichier de style en cliquant sur le bouton Style.

Avec les données téléchargées pour cet exemple, vous trouverez un fichier de style (legende3x3.qml). Dans la première partie de cet article nous avons rentré les couleurs de base de chaque variable (11, 12,13 et 21,31), puis nous avons demandé à QGis de générer les autres couleurs (22,23,32 et 33) par multiplication. Ici, nous sommes obligés de faire la multiplication des couleurs à la main pour pouvoir les rentrer. Ce qui est assez fastidieux, et qu’il faut savoir faire…

Pour « multiplier » deux couleurs…

Vous devez récupérer les valeurs RGB de chaque couleur. Dans cet exemple la deuxième valeur de pente est (228,172,172) et la deuxième valeur d’occupation (176,213,223).

Pour les multiplier il faut d’abord les convertir en valeurs entre zéro et 1 en divisant chaque valeur par 255, ce qui donne

(228,172,172)->(0.90,0.68,0.68)

(176,213,223)->(0.69,0.84,0.88)

Vous multipliez alors chacune des trois valeurs  pour obtenir la couleur résultante

0.90×0.69=0.62   ,0.68×0.84=0.57    ,0.68×0.88=0.60

Puis par 255 pour avoir les valeurs RGB à rentrer

0.62×255= 158    ,0.57*255=145    , 0.6×255=153  -> (158,145,153)

Pour notre exemple, soit vous faites tous les calculs, soit vous chargez le fichier qml… Et on retrouve le résultat final, identique à la première méthode:

bi8Et la légende de notre carte?

Eh oui, le dernier problème à résoudre est de comment fabriquer une légende bivariée pour notre carte:

légende bivariée

Nous allons la construire directement dans le Composeur d’impression de QGis. La vidéo suivante montre comment construire la légende correspondante à cet exemple.

Avec cette légende le résultat finrésultat finalal est:

 

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *