Jak uczynić warstwę lub grupę niewidoczną w panelu Warstwy?

13

Mam kilka warstw w panelu Warstwy w grupie, ale nie chcę ich pokazywać (jest ich całkiem sporo, więc wygląda nieporządnie). Te warstwy są również połączone z kilkoma innymi.

Czy jest możliwe, aby te warstwy były niewidoczne dla użytkownika ( tzn. Nie są wyświetlane w panelu Warstwy, nie chodzi o ustawienie widoczności warstwy ), ale nadal można je połączyć z innymi warstwami? A może sprawi, że grupa będzie niewidoczna?

Najbliżej znalazłem ten post, ale mam nadzieję, że istnieje bardziej bezpośrednie podejście:

Pokazuje tylko niektóre warstwy w legendzie QGIS?

Joseph
źródło

Odpowiedzi:

15

Uważam, że uczynienie warstw / grup „niewidocznymi” jest przydatne, aby uniknąć wyświetlania tabel odnośników, które są wymagane do relacji wartości, ale mogą sprawić, że panel warstw będzie wyglądał na nieco przeciążony.

Aby wyjaśnić, niewidoczne warstwy / grupy nie pojawią się w panelu Warstwy, ale nadal można je zobaczyć w obszarze roboczym lub użyć w połączeniach / relacjach z innymi warstwami.


ODPOWIEDŹ:

Użyj wtyczki Niewidoczne warstwy i grupy , które pozwalają:

  • Spraw, aby wybrane warstwy / grupy były niewidoczne (przycisk wtyczki).
  • Spraw, by warstwy / grupy (które są niewidoczne) były ponownie widoczne (przycisk wtyczki).
  • Przechowuj widoczność warstw / grup w swoim projekcie QGIS.
  • Odtwórz widoczność warstw / grup podczas otwierania projektu QGIS.
  • Uczyń określoną warstwę niewidoczną (kodem).
  • Spraw, aby dana grupa była niewidoczna (kodem).

Niewidoczność warstwy (kodem):

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

Uczynienie grupy niewidoczną (kodem):

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

Uwaga: należy pamiętać o problemie. Jeśli uczynisz warstwę niewidoczną, a następnie przeniesiesz jej grupę nadrzędną, warstwa niewidoczna będzie ponownie widoczna (nie wiem dlaczego!). Zatem moim zaleceniem jest, aby tylko górne warstwy / grupy były niewidoczne (w końcu nie można przenieść katalogu głównego).

Germán Carrillo
źródło
Właśnie tego szukałem, wielkie dzięki za to! Rzeczywiście mam kilka warstw, które są używane do obliczeń (wszystkie są połączone z inną warstwą), więc nie chcę, aby użytkownik widział lub edytować te warstwy. Twoje rozwiązanie bardzo to rozwiązuje. Jedno pytanie, czy implementowałeś to dopiero jako wtyczkę?
Joseph
Racja, został opublikowany kilka dni temu. Zastanawiałem się kiedyś, jak ukryć warstwy, ale dopiero po tym pytaniu podjąłem się zadania (będę potrzebował tego wcześniej lub później w pracy). Myślałem o odpowiedzi za pomocą fragmentów kodu, ale odpowiedź była wystarczająco długa, aby stać się złożona, więc wolałem enkapsulować ją we wtyczce, która jest znacznie łatwiejsza w użyciu.
Germán Carrillo
To świetna wtyczka, więc zagłosowałem na nią :)
Joseph
+1 Bardzo przydatna wtyczka. Specjalnie dla mojej pracy, aby być konkretnym w mapowaniu danych w terenie za pomocą Tough Book + QGIS, aby uniknąć przeciążenia panelu warstw (przewijanie zajmuje trochę czasu w terenie). Mam sugestię (może w celu ulepszenia wtyczki (lub nie)): Czy możesz wdrożyć, że wtyczka pamięta warstwy, które zaznaczyłeś raz, i uczynić je niewidocznymi, gdy przycisk wtyczki (sprawi, że będą niewidoczne) zostanie ponownie wciśnięty? Aby ustawić niewidoczny kolejny wybór (warstwy / grupy), musisz wybrać je od nowa.
Stefan
Świetnie, że wtyczka jest dla Ciebie przydatna! Dziękujemy za sugestię, czy mógłbyś dodać nowe żądanie funkcji (problem) w GitHub ?
Germán Carrillo