Suite

Gérer les valeurs NULL dans l'étiquetage ?

Gérer les valeurs NULL dans l'étiquetage ?


Dans QGIS (2.10.1 sur un Mac), j'essaie de créer des étiquettes multilignes sur une carte que j'ai avec un tas d'arbres. Dans la table attributaire j'ai des colonnes avec le nom scientifique latin, le nom anglais (quand il existe), l'année où l'arbre a été planté etc.

J'étiquette les arbres de ma carte avec une expression comme celle-ci :

genus_species + '
' + cas où "english_species" n'est pas nul alors "english_species" + '
' end + to_string( "planted_year")

Cela fonctionne bien pour les lignes où english_species n'est pas null, mais chaque fois que j'ai une ligne sans nom anglais, l'expression entière semble juste se briser et rien n'est imprimé, pas même le nom scientifique ou l'année (qui existe toujours).

j'ai essayé d'ajouter un

quand "english_species" est nul alors"

Mais ça ne marche pas non plus. L'expression s'interrompt uniquement pour les lignes sans valeur dans le champ english_species.


Ainsi, la façon dont QGIS gère NULL lorsque vous joignez des chaînes est qu'il convertira le résultat en NULL si une partie est NULL (oui je sais que c'est en cours de débat sur si cela devrait ou non)

Voici comment gérer cela en utilisant leconcaténerune fonction:

concat( "genus_species", '
', "english_species", '
', to_string("planted_year")

LeconcaténerLa fonction convertira NULL en chaîne vide et se joindra de toute façon.


Vous devez utiliser la concaténation de chaînes au lieu de plus ( symbole ||). Cela devrait plutôt ressembler à ceci :

CASE WHEN "english_species" EST NULL ALORS "genus_species" || '
' || to_string("planted_year") ELSE "genus_species" || '
' || "espèce_anglaise" || '
' || to_string("planted_year") FIN

Mise à jour, dans la version 2.10, il n'est pas nécessaire d'utiliser || pour les chaînes, il s'agit donc d'utiliser ELSE, sinon l'expression n'est pas valide car vous vous retrouvez avec + + si ce n'est pas le cas. Donc autre option possible :

"genus_species" + '
' + CASE WHEN "english_species" N'EST PAS NULL ALORS "english_species" + '
' ELSE"END + to_string("planted_year")

Ce qui dans d'autres cas fait +"+ et bien est valide.


Voir la vidéo: COMO ENTENDER LAS ETIQUETAS E INFORMACION NUTRICIONAL