Pages: 1
- Sujet précédent - QGIS 3.34.4: Expression texte selon visibilite d une couche - Sujet suivant
#1 Wed 10 July 2024 11:20
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
QGIS 3.34.4: Expression texte selon visibilite d une couche
Salut à tous,
Je souhaite afficher, dans une mise en page, un texte différent selon la visibilité ou non de certaines couches.
En théorie, il me semble que ce genre d'expression devrait fonctionner :
Code:
CASE WHEN layer_property('ma_couche', 'visible') THEN 'La couche est visible' ELSE 'La couche n\'est pas visible' END
Mais ça ne fonctionne pas : layer_property('ma_couche', 'visible') renvoie NULL
J'ai aussi essayé is_layer_visible('ma couche') mais cela renvoie false que la couche soit visible ou non...
Est-ce que ça fonctionne chez vous ? (je suis sur QGis 3.34.4)
Auriez-vous une piste / alternative ?
Merci à vous !
Sylvain M.
Hors ligne
#2 Wed 10 July 2024 21:54
- Tixi
- Participant actif
- Date d'inscription: 6 Jun 2022
- Messages: 126
Re: QGIS 3.34.4: Expression texte selon visibilite d une couche
Bonjour,
Le layer_property('ma_couche', 'visible') n existe pas. L'option 'visibilite' n existe pas.
Chez moi, is_layer_visible('ma couche') fonctionne bien, je suppose qu il n y a pas d'erreur sur l ecriture du nom de la couche quand vous l'ecrivez.
Du coup, ce serait
CASE
WHEN is_layer_visible('ma couche') = 'true' THEN 'La couche est visible'
ELSE 'La couche n\'est pas visible'
END
pour " 'La couche n\'est pas visible' ", au lieu de \', ne faut il pas une double apostrophe '' ?
Dernière modification par Tixi (Wed 10 July 2024 21:56)
Hors ligne
#3 Wed 10 July 2024 22:32
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: QGIS 3.34.4: Expression texte selon visibilite d une couche
Merci Tixi de te pencher sur ma question
je suppose qu il n y a pas d'erreur sur l ecriture du nom de la couche quand vous l'ecrivez
J'ai justement un petit doute à ce sujet.
J'ai d'abord essayé avec l'ID de la couche.
Dans mon cas, pour la couche nommée 'ma couche', j'ai donc ceci : 'ma_couche_d061d939_65c1_496a_ae9e_93df62d26d14'.
Ce qui donne :
Code:
CASE WHEN is_layer_visible('ma_couche_d061d939_65c1_496a_ae9e_93df62d26d14') = 'true' THEN 'La couche est visible' ELSE 'La couche n''est pas visible' END
Mais ça ne marche pas, la couche n'est jamais visible selon la fonction (j'ai essayé aussi avec 'ma_couche', ou 'ma couche')...
Chez moi, is_layer_visible('ma couche') fonctionne bien
On est d'accord que tu as inséré ton expression dans un bloc texte (étiquette) d'une mise en page ?
Et donc que l'expression est ainsi écrite :
Code:
[%CASE WHEN is_layer_visible('ma_couche_d061d939_65c1_496a_ae9e_93df62d26d14') = 'true' THEN 'La couche est visible' ELSE 'La couche n''est pas visible' END%]
pour " 'La couche n\'est pas visible' ", au lieu de \', ne faut il pas une double apostrophe '' ?
Les deux fonctionnent chez moi
Dernière modification par Sylvain M. (Wed 10 July 2024 22:33)
Sylvain M.
Hors ligne
#4 Thu 11 July 2024 14:44
- eliseo
- Juste Inscrit !
- Date d'inscription: 2 May 2024
- Messages: 8
Re: QGIS 3.34.4: Expression texte selon visibilite d une couche
Bonjour Sylvain !
Je ne pense pas que la fonction is_layer_visible marche dans une étiquette. Voici un lien vers un problème similaire
https://gis.stackexchange.com/questions … -qgis-3-28
Tu peux l'utiliser dans une légende par exemple.
Bonne journée !
Hors ligne
#5 Thu 11 July 2024 15:10
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: QGIS 3.34.4: Expression texte selon visibilite d une couche
Merci @eliseo
Oui, j'avais lu cet échange en diagonale, mais je n'avais pas compris le contexte dans lequel la fonction était utilisable ou non.
Je traduis - merci DeepL - le texte en Français pour y voir plus clair (et que l'indexation francophone puisse aider d'autres utilisateurs)
Pour plus d'explications : la fonction n'est disponible que dans les contextes où l'expression est directement associée à une carte particulière (ou à un canevas de carte). Elle est donc disponible dans les cartes de mise en page et dans la symbologie, mais pas dans les outils qui ne sont pas associés à une carte individuelle, comme l'outil "sélectionner par expression". Le problème est que si l'utilisateur a plusieurs cartes ouvertes, "is_layer_visible" n'a plus de signification claire.
Il écrit quand même : "Elle est donc disponible dans les cartes de mise en page".
Du coup, je ne vois pas dans quel contexte/objet je pourrais l'utiliser.
J'ai réussi à faire fonctionner l'expression dans une légende de carte, au niveau du texte d'un "Groupe".
Mais ce n'est pas très fonctionnel dans ma situation car, pour qu'il soit visible, il faut qu'il y ait une couche dans ce groupe.
Or je voudrais afficher un texte indépendant des couches de la légende.
Verriez-vous d'autres objets qui accepteraient cette fonctionnalité ?
Sylvain M.
Hors ligne
#6 Thu 11 July 2024 16:22
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3940
Re: QGIS 3.34.4: Expression texte selon visibilite d une couche
Bonjour,
La fonction item_variables est faite pour contourner ce genre de limitation dans la mise en page. Et la variable/propriété map_layer_ids renvoie la liste des couches visibles de l'objet carte, ce qui donnerait quelque chose de ce genre pour savoir si oui ou non la couche est visible dans la carte 'Map 1'.
Code:
array_contains(map_get(item_variables('Map 1'), 'map_layer_ids'), 'iddelacoucheàvérifier')
Hors ligne
#7 Mon 15 July 2024 10:10
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: QGIS 3.34.4: Expression texte selon visibilite d une couche
La fonction item_variables est faite pour contourner ce genre de limitation
Merci beaucoup Santanna : testé et approuvé !
Bravo ! (Santana est un dieu de la guitare, Santanna est un dieu du SIG)
Sylvain M.
Hors ligne
#8 Mon 15 July 2024 10:30
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3940
Re: QGIS 3.34.4: Expression texte selon visibilite d une couche
Salut,
Bravo ! (Santana est un dieu de la guitare, Santanna est un dieu du SIG)
Merci du compliment mais n'exagérons pas non plus . J'ai juste passé un peu plus de temps que le commun des mortels dans les méandres de la doc et le code de QGIS. Et accessoirement, je kiffe le défi des expressions. Et ça se limite à cela, là où le SIG est bcp plus vaste.
Hors ligne
#9 Mon 15 July 2024 10:35
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: QGIS 3.34.4: Expression texte selon visibilite d une couche
C'était une boutade (mais qui n'atténue pas le compliment).
J'ai juste passé un peu plus de temps [...]
Tout comme Santana a dû passer un peu plus de temps sur sa guitare
D'ailleurs, je n'avais encore jamais remarqué le "N" en plus de ton pseudo que le nom du guitariste.
D'où vient ton pseudo ? (si ce n'est pas indiscret !)
Sylvain M.
Hors ligne
#10 Mon 15 July 2024 10:57
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3940
Re: QGIS 3.34.4: Expression texte selon visibilite d une couche
C'est peut-être pas un pseudo...?
Hors ligne
#11 Mon 15 July 2024 11:34
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: QGIS 3.34.4: Expression texte selon visibilite d une couche
C'est peut-être pas un pseudo...?
je ne serai pas plus indiscret alors
Sylvain M.
Hors ligne
Pages: 1
- Sujet précédent - QGIS 3.34.4: Expression texte selon visibilite d une couche - Sujet suivant