Comment rendre un calque ou un groupe invisible dans le panneau Calques?

13

J'ai un certain nombre de calques dans le panneau Calques à l' intérieur d'un groupe, mais je ne veux pas qu'ils soient affichés (il y en a beaucoup, donc ça a l'air désordonné). Ces couches sont également jointes à plusieurs autres.

Est-il possible de rendre ces calques invisibles pour l'utilisateur ( c'est-à-dire non affichés dans le panneau Calques, il ne s'agit pas de définir la visibilité du calque ) mais peuvent-ils être joints à d'autres calques? Ou peut-être rendre le groupe invisible?

Le plus proche que j'ai trouvé était ce post mais en espérant qu'il y ait une approche plus directe:

Afficher uniquement certaines couches dans la légende QGIS?

Joseph
la source

Réponses:

15

Je trouve que rendre les couches / groupes «invisibles» est utile pour éviter d'afficher les tables de recherche, qui sont nécessaires pour les relations de valeur, mais peuvent donner un aspect un peu surchargé au panneau des couches.

Juste pour clarifier, les calques / groupes invisibles n'apparaîtront pas dans le panneau Calques, mais ils peuvent toujours être vus dans le canevas ou utilisés dans les jointures / relations avec d'autres calques.


RÉPONDRE:

Utilisez le plugin couches et groupes invisibles , qui vous permet de:

  • Rendre les calques / groupes sélectionnés invisibles (bouton plugin).
  • Rendre les calques / groupes (invisibles) à nouveau visibles (bouton plugin).
  • Stockez la visibilité des couches / groupes dans votre projet QGIS.
  • Recréez la visibilité des couches / groupes lors de l'ouverture de votre projet QGIS.
  • Rendre un calque particulier invisible (par code).
  • Rendre un groupe particulier invisible (par code).

Rendre un calque invisible (par code):

if 'InvisibleLayersAndGroups' in qgis.utils.plugins:
    ilg = qgis.utils.plugins['InvisibleLayersAndGroups']
    ilg.hideLayer( layer )    # layer is a QgsMapLayer

Rendre un groupe invisible (par code):

if 'InvisibleLayersAndGroups' in qgis.utils.plugins:
    ilg = qgis.utils.plugins['InvisibleLayersAndGroups']
    ilg.hideGroup( group )    # group is a QgsLayerTreeGroup
    ilg.hideGroup( 'group2' ) # You can also pass a group name

Remarque: vous devez être conscient d'un problème. Si vous rendez un calque invisible puis déplacez son groupe parent, le calque invisible sera à nouveau visible (je ne sais pas pourquoi!). Donc, ma recommandation est de ne rendre que les couches / groupes supérieurs invisibles (après tout, vous ne pouvez pas déplacer la racine).

Germán Carrillo
la source
Exactement ce que je cherchais, merci beaucoup pour cela! En effet, j'ai plusieurs couches qui sont utilisées pour les calculs (qui sont toutes jointes à une autre couche), donc je ne veux pas que l'utilisateur voie ou modifie ces couches. Votre solution résout donc grandement ce problème. Une question, avez-vous implémenté cela uniquement en tant que plugin récemment?
Joseph
Bon, il a été publié il y a quelques jours. Je m'étais demandé comment masquer les calques avant, mais ce n'est qu'après cette question que j'ai entrepris la tâche (j'en aurai besoin tôt ou tard au travail). J'ai pensé à répondre avec des extraits de code mais la réponse était suffisamment longue pour devenir complexe, j'ai donc préféré l'encapsuler dans un plugin, ce qui est beaucoup plus facile à utiliser.
Germán Carrillo
Et bien c'est un super plugin donc voté pour ça :)
Joseph
+1 Un plugin très utile. Surtout pour mon travail, pour être précis dans la cartographie des données sur le terrain avec un Tough Book + QGIS, pour éviter un panneau de couche surchargé (le défilement prend du temps sur le terrain). J'ai une suggestion (peut-être pour améliorer votre plugin (ou pas)): Pourriez-vous implémenter que le plugin se souvienne des couches que vous avez marquées une fois et les rendre invisibles lorsque le bouton du plugin (les rendre invisibles) est poussé à nouveau? Pour rendre invisible une autre sélection (calques / groupes), vous devez les sélectionner à nouveau.
Stefan
Super que vous trouviez le plugin utile! Merci pour votre suggestion, cela vous dérangerait-il d'ajouter une nouvelle demande de fonctionnalité (problème) dans GitHub ?
Germán Carrillo