banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !

10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …

Faire un don 

Retrouver nos membres bienfaiteurs

#1 Wed 29 January 2020 13:00

OhCheat
Participant actif
Lieu: Toulouse
Date d'inscription: 11 Apr 2014
Messages: 58

QGIS: Symbologie conditionnelle

Bonjour,

J'essaye de mettre en place des symboles pour une couche dont la couleur serait liée à deux variables de ma table attributaire. Pour résumer, pour chaque entité, j'ai des effectifs et deux capacités (une haute et une basse). Je veux que la couleur soit verte si les effectifs sont inférieurs à la capacité basse, orange si ils sont entre la capacité basse et la haute et rouge si ils sont supérieurs à la capacité haute. Voici donc la formule que j'ai écrit :

CASE
WHEN "sc2_Haut25" <=  "cap_27/div" THEN color_rgb( 51, 160, 44 )
WHEN "cap_27/div" < "sc2_Haut25" < "cap_30/div" THEN color_rgb( 255, 127, 0 )
WHEN "cap_30/div"  <=  "sc2_Haut25"  THEN  color_rgb( 235, 0, 0 )
END

Sauf que la formule ne fonctionne pas complètement et la couleur rouge ne s'affiche jamais, même quand les effectifs sont de loin supérieurs à la capacité haute.
Je voulais donc savoir ce qui clochait dans ma formule, car malgré un moment à tester plusieurs correction, rien n'y fait et je n'ai toujours que deux couleurs.

Merci d'avance, Corentin

Hors ligne

 

#2 Wed 29 January 2020 18:22

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 427

Re: QGIS: Symbologie conditionnelle

Bonjour,

Je pense qu'il faut simplifier tes tests en partant toujours de la valeur sur laquelle tu te bases pour choisir la couleur.
Si j'ai bien compris ça ferait le test suivant :

Code:

CASE
WHEN "sc2_Haut25" <=  "cap_27/div" THEN color_rgb( 51, 160, 44 )
WHEN "sc2_Haut25" > "cap_27/div" and "sc2_Haut25" < "cap_30/div" THEN color_rgb( 255, 127, 0 )
WHEN "sc2_Haut25" >= "cap_30/div"  THEN  color_rgb( 235, 0, 0 )
END

Par contre je me questionne, tu entres cette fonction dans le choix de couleur de remplissage du symbole directement ?

Ça me semble plus logique de le faire avec un ensemble de règles (rule-based).

Ci-joint un projet Qgis et un gpkg avec des données tests. J'ai enregistré les deux styles dans le geopackage pour que tu vois la différence.

En espérant avoir bien compris ta problématique.

Dernière modification par p.jeremie (Wed 29 January 2020 18:23)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#3 Thu 30 January 2020 09:13

OhCheat
Participant actif
Lieu: Toulouse
Date d'inscription: 11 Apr 2014
Messages: 58

Re: QGIS: Symbologie conditionnelle

En effet je fait ça directement dans le choix de couleur de remplissage, j'ai 3 symboles superposés pour chaque entité et chacun doit contenir cette formule pour sélectionner la couleur adaptée et ça me semblait plus simple de cette manière.

En tout cas ta formule fonctionne parfaitement, merci beaucoup !

Hors ligne

 

Pied de page des forums

Powered by FluxBB