#1 Tue 06 August 2024 15:58
- Ironhands
- Participant occasionnel
- Date d'inscription: 10 Jan 2013
- Messages: 36
QGIS: expression dans le champ etiquette - valeur NULL
Bonjour,
Je suis face à quelques difficultés sur le champ de renseignement de l'étiquette. La couche est simple (points) avec chaque point légendé avec des informations qui correspondent à sa ligne dans la table attributaire. Dans mon cas, la couche d'origine est une vue PostGIS mais je pense que ça ne change pas grand chose au problème.
Je souhaite avoir de grande étiquettes avec de nombreuses informations qui sont toujours des champs (ou des concaténation de champs de la couche légendée).
Code:
'texte 1 '||"champ1" ||'\n' || 'texte 2: '||"champ2" ||'\n' ||'('|| "champ3" ||')'||'\n' ||"champ4"
etc
Bien qu'ayant été jeter un coup d’œil à https://docs.qgis.org/3.34/fr/docs/user … pressions, je constate que dès qu'un champ n'est pas renseigné pour l'objet légendé (NULL), la totalité de l'étiquette n'est pas générée.
Est-ce que ce comportement est logique et souhaité ? Est-ce qu'il faut un autre opérateur de concaténation pour éviter que le moindre champ NULL empêche la génération de la totalité de l'étiquette ?
Merci par avance.
Chargé de mission DREAL
QGIS 3.28.7
Hors ligne
#2 Tue 06 August 2024 16:20
- laurent00
- Participant assidu
- Date d'inscription: 6 Aug 2007
- Messages: 404
Re: QGIS: expression dans le champ etiquette - valeur NULL
bonjour
en attente d'une solution plus jolie tu peux ajouter un if sur chaque champ
Code:
if("champ1" is not NULL, "champ1", '')
Hors ligne
#3 Tue 06 August 2024 16:32
- chanteclair
- Participant assidu
- Lieu: Pau
- Date d'inscription: 3 Jan 2007
- Messages: 726
Re: QGIS: expression dans le champ etiquette - valeur NULL
Bonjour,
Peut-être une solution ici : https://georezo.net/forum/viewtopic.php … uette+null
Cordialement.
Hors ligne
#4 Tue 06 August 2024 16:47
- Ironhands
- Participant occasionnel
- Date d'inscription: 10 Jan 2013
- Messages: 36
Re: QGIS: expression dans le champ etiquette - valeur NULL
Merci pour vos retours!
Pour la condition, est-ce que if fonctionne ? Il ne faut pas plutôt une syntaxe
Code:
case ...when... (else)... end
?
Pour la solution avec la fonction COALESCE, c'est quelle remplace les valeurs NULL d'un champ par ce que l'on veut (https://learnsql.fr/blog/comment-utilis … ce-en-sql/) Merci beaucoup car je me demandais bien à quoi servait cette fonction.
Dans mon cas, je ne cherche pas à avoir de chaine vide quand le champ est vide, mais juste la génération de mon étiquette pour les autres champs. La solution par étiquette conditionnelle me convient pas mal in fine, mais elle génère des difficultés sur d'autres points, notamment la coloration en fonction du symbole (@symbol_color). Je vais peut-être donc opter pour l'utilisation de COALESCE dans une étiquette unique sans condition , ou alors un autre codeur de concaténation. Je teste et je passe le sujet en résolu.
Merci encore.
Chargé de mission DREAL
QGIS 3.28.7
Hors ligne
#5 Tue 06 August 2024 17:34
- laurent00
- Participant assidu
- Date d'inscription: 6 Aug 2007
- Messages: 404
Re: QGIS: expression dans le champ etiquette - valeur NULL
ceci marche très bien
Code:
'texte 1 : ' || if("champ1" is not NULL, "champ1", '') ||'\n' ||
si champ1 est pas nul , alors écrire champ1 , sinon '' signifie ne rien écrire
et l'étiquette s'affiche
mais fastidieux si tu dois le refaire pour tous tes champs
Dernière modification par laurent00 (Tue 06 August 2024 17:35)
Hors ligne
#6 Tue 06 August 2024 18:25
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS: expression dans le champ etiquette - valeur NULL
Bonjour,
Bien qu'ayant été jeter un coup d’œil à https://docs.qgis.org/3.34/fr/docs/user … pressions, je constate que dès qu'un champ n'est pas renseigné pour l'objet légendé (NULL), la totalité de l'étiquette n'est pas générée.
Comme indiqué dans les exemples du lien ci-dessus et également dans son aide, la fonction concat permet justement de contourner les soucis avec les valeurs Null.
Hors ligne
#7 Wed 07 August 2024 11:11
- Ironhands
- Participant occasionnel
- Date d'inscription: 10 Jan 2013
- Messages: 36
Re: QGIS: expression dans le champ etiquette - valeur NULL
Bonjour.
Comme indiqué dans les exemples du lien ci-dessus et également dans son aide,
Merci Santanna, c'est plus clair dans ce lien que dans [le premier->https://docs.qgis.org/3.34/fr/docs/user … pressions,]
J'ai donc bien réussi à générer mes étiquettes quelques soit la complétude des champs avec cette fonction, qui dans mon cas est plus simple que COALESCE (rédaction plus courte)
Code:
concat ('texte 1 ',"champ1" ,'\n', 'texte 2: ',"champ2" ,'\n','(',"champ3",')','\n' ,"champ4")
Mais maintenant que ce problème est résolu, je voudrais faire varier la couleur de la police de l'étiquette en fonction du résultat que prend un champ ("champ4" VARCHAR) avec un nombre réduits de valeurs possible. Et là, je ne sais pas assez bien coder pour ne pas passer par des étiquettes conditionnelles...mais c'est un autre sujet.
Merci encore.
Dernière modification par Ironhands (Wed 07 August 2024 11:12)
Chargé de mission DREAL
QGIS 3.28.7
Hors ligne
#8 Wed 07 August 2024 11:19
- Ironhands
- Participant occasionnel
- Date d'inscription: 10 Jan 2013
- Messages: 36
Re: QGIS: expression dans le champ etiquette - valeur NULL
Heu, je n'ai pas trouvé la manière de passer le sujet en "résolu". Merci par avance aux modérateurs...
Sincères salutations.
Chargé de mission DREAL
QGIS 3.28.7
Hors ligne
#9 Wed 07 August 2024 14:50
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS: expression dans le champ etiquette - valeur NULL
Hello
Heu, je n'ai pas trouvé la manière de passer le sujet en "résolu".
Tout simplement parce qu'il n'y en a pas.
Hors ligne