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 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 big_smile

Tixi a écrit:

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')...

Tixi a écrit:

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%]
Tixi a écrit:

pour " 'La couche n\'est pas visible' ", au lieu de \', ne faut il pas une double apostrophe ''  ?


Les deux fonctionnent chez moi wink

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 smile

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 big_smile

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)

nyalldawson (sur Github traduit par DeepL) a écrit:

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

SANTANNA a écrit:

La fonction item_variables est faite pour contourner ce genre de limitation


Merci beaucoup Santanna : testé et approuvé ! big_smile
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 big_smile. 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).

Santanna a écrit:

J'ai juste passé un peu plus de temps [...]


Tout comme Santana a dû passer un peu plus de temps sur sa guitare wink

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 wink


Sylvain M.

Hors ligne

 

Pied de page des forums

Powered by FluxBB