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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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: 402

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 smile, 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: 402

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: 3940

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: 3940

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

 

Pied de page des forums

Powered by FluxBB