Wie mache ich eine Ebene oder Gruppe im Ebenenbedienfeld unsichtbar?

13

Ich habe eine Reihe von Ebenen im Ebenenbedienfeld innerhalb einer Gruppe, aber ich möchte nicht, dass sie angezeigt werden (es gibt ziemlich viele, daher sieht es unordentlich aus). Diese Schichten sind auch mit mehreren anderen verbunden.

Ist es möglich, diese Ebenen für den Benutzer unsichtbar zu machen ( dh, sie werden nicht im Ebenenbedienfeld angezeigt, es geht nicht darum, die Sichtbarkeit der Ebene festzulegen ), sie können jedoch mit anderen Ebenen verbunden werden? Oder vielleicht die Gruppe unsichtbar machen?

Am nächsten kam mir dieser Beitrag, aber ich hoffe, dass es einen direkteren Ansatz gibt:

Nur einige Ebenen in der QGIS-Legende anzeigen?

Joseph
quelle

Antworten:

15

Ich finde es hilfreich, Ebenen / Gruppen unsichtbar zu machen, um das Anzeigen von Nachschlagetabellen zu vermeiden, die für Wertebeziehungen erforderlich sind, aber das Ebenenbedienfeld möglicherweise etwas überladen wirken lassen.

Zur Verdeutlichung werden unsichtbare Ebenen / Gruppen nicht im Ebenenbedienfeld angezeigt, sie können jedoch weiterhin auf der Leinwand angezeigt oder in Verknüpfungen / Beziehungen mit anderen Ebenen verwendet werden.


ANTWORTEN:

Verwenden Sie das Plugin Invisible Layers and Groups , mit dem Sie:

  • Ausgewählte Ebenen / Gruppen unsichtbar machen (Plugin-Schaltfläche).
  • Machen Sie unsichtbare Ebenen / Gruppen wieder sichtbar (Plugin-Button).
  • Speichern Sie die Sichtbarkeit von Ebenen / Gruppen in Ihrem QGIS-Projekt.
  • Stellen Sie die Sichtbarkeit von Ebenen / Gruppen wieder her, wenn Sie Ihr QGIS-Projekt öffnen.
  • Machen Sie eine bestimmte Ebene unsichtbar (durch Code).
  • Machen Sie eine bestimmte Gruppe unsichtbar (durch Code).

Eine Ebene unsichtbar machen (per Code):

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

Eine Gruppe unsichtbar machen (per 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

Hinweis: Es gibt ein Problem, das Sie kennen sollten. Wenn Sie eine Ebene unsichtbar machen und dann ihre übergeordnete Gruppe verschieben, wird die unsichtbare Ebene wieder sichtbar (ich weiß nicht warum!). Daher empfehle ich, nur die obersten Ebenen / Gruppen unsichtbar zu machen (schließlich können Sie die Wurzel nicht verschieben).

Germán Carrillo
quelle
Genau das, wonach ich gesucht habe, vielen Dank dafür! In der Tat habe ich mehrere Ebenen, die für Berechnungen verwendet werden (die alle mit einer anderen Ebene verbunden sind), sodass der Benutzer diese Ebenen nicht sehen oder bearbeiten soll. Ihre Lösung löst dies also sehr gut. Eine Frage, haben Sie dies erst kürzlich als Plugin implementiert?
Joseph
Richtig, es wurde vor Tagen veröffentlicht. Ich hatte mich schon einmal gefragt, wie ich Ebenen verstecken sollte, aber erst nach dieser Frage übernahm ich die Aufgabe (ich brauche sie früher oder später bei der Arbeit). Ich dachte daran, mit Code-Schnipsel zu antworten, aber die Antwort war lang genug, um komplex zu werden. Deshalb habe ich es vorgezogen, sie in einem Plugin zu kapseln, das viel einfacher zu verwenden ist.
Germán Carrillo
Nun, es ist ein großartiges Plugin, also habe ich dafür gestimmt :)
Joseph
+1 Ein sehr nützliches Plugin. Speziell für meine Arbeit, um Daten im Feld mit einem Tough Book + QGIS zu kartieren, um ein überladenes Ebenenfenster zu vermeiden (Scrollen braucht Zeit im Feld). Ich habe einen Vorschlag (vielleicht, um Ihr Plugin zu verbessern (oder nicht)): Könnten Sie implementieren, dass das Plugin sich die Ebenen merkt, die Sie einmal markiert haben, und sie wieder unsichtbar macht, wenn der Plugin-Button erneut gedrückt wird (um sie unsichtbar zu machen)? Um eine andere Auswahl (Ebenen / Gruppen) unsichtbar zu machen, müssen Sie diese erneut auswählen.
Stefan
Schön, dass Sie das Plugin nützlich finden! Vielen Dank für Ihren Vorschlag. Würde es Ihnen etwas ausmachen, einen neuen Feature Request (Problem) in GitHub hinzuzufügen ?
Germán Carrillo