Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Fri 02 December 2022 11:16

Vincent Vauchey
Participant assidu
Lieu: saint jean de braye
Date d'inscription: 24 Jan 2006
Messages: 287

QGIS: Utilise CASE avec une expression

Bonjour à toutes et  tous

Je cherche à obtenir une liste des éléments d'une COUCHE A avec une COUCHE B dans le composeur d'impression dans une fenêtre de texte.

COUCHE_A - Polygone avec juste un champs ID - qui est aussi la couche de base pour l'atlas
COUCHE_B - Polygone avec les champs - ID / CHAMPS_1 / CHAMPS_2 / CHAMPS_3 / CHAMPS_4

Je veux avoir une liste qui affiche les champs : 1 2 et 3 de COUCHE_B mais dont le CHAMPS_4 = INFO_1
jusque là pas de problème, sauf quand le polygone de la COUCHE_A n’intersecte pas de polygone avec dans le CHAMPS_4 le valeur INFO_1 rien ne s'affiche.
'
J'utilise donc cette formule :

Code:

'INFO_1' || '
' || array_to_string(
(overlay_intersects(layer:= 'COUCHE_B', expression:= "CHAMPS_1" || ' - '  || "CHAMPS_2" || '
' || "CHAMPS_3" , filter:= CHAMPS_4  IS  'INFO_1')),'
')  || '
   
'  ||  
'INFO_2' || '
' || array_to_string(
(overlay_intersects(layer:= 'COUCHE_B', expression:= "CHAMPS_1" || ' - '  || "CHAMPS_2", filter:= CHAMPS_4  IS  'INFO_2')),'
'

j'ai donc cherché pour utilise la fonction CASE pour introduire une condition de façon à ce que si la valeur INFO_1 n'est pas présente, il passe à la suite du code.
Mais je ne trouve pas comment introduire la COUCHE_B dans l’expression du CASE

Par avance merci pour votre aide, Vincent

Hors ligne

 

#2 Fri 02 December 2022 14:41

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3805

Re: QGIS: Utilise CASE avec une expression

Bonjour,
Essayez avec la fonction concat au lieu de || (et lisez la note relative au comportement en cas de valeur nulle)

Hors ligne

 

#3 Fri 02 December 2022 16:01

Vincent Vauchey
Participant assidu
Lieu: saint jean de braye
Date d'inscription: 24 Jan 2006
Messages: 287

Re: QGIS: Utilise CASE avec une expression

Re,

Merci Santanna, avec le Concat cela fonctionne super.

Le code si cela peut servir :

Code:

 concat(('INFO_1' || '
' || array_to_string(
(overlay_intersects(layer:= 'COUCHE_B', expression:= "CHAMPS_1" || ' - '  || "CHAMPS_2" || '
' || "CHAMPS_3" , filter:= CHAMPS_4  IS  'INFO_1')),'
')  || '
   
'  ||  
('INFO_2' || '
' || array_to_string(
(overlay_intersects(layer:= 'COUCHE_B', expression:= "CHAMPS_1" || ' - '  || "CHAMPS_2", filter:= CHAMPS_4  IS  'INFO_2')),'
') || '
   
' ))]

Hors ligne

 

Pied de page des forums

Powered by FluxBB