[FOSSGIS-Talk] Filtern der Layer

Ute Heuer ute.heuer at fodilus.de
Fr Jan 27 09:42:10 CET 2023


Guten Morgen,

mittlerweile gibt es eine Lösung (Dank an Jens Thiele). In der letzten 
Klammer wird der Begriff eingetragen, nach dem gefiltert werden soll.

import re
from qgis.PyQt.QtCore import *

def get_toc_layers_2(group):
     r=[]
     for child in group.children():
         if isinstance(child, QgsLayerTreeLayer):
             r.append(child.layer())
         else:
             r=r+get_toc_layers_2(child)
     return r

def get_toc_layers():
     return get_toc_layers_2(QgsProject.instance().layerTreeRoot())

def select_layers_by_regexp(s):
     for l in get_toc_layers():
         matched=bool(re.search(s, l.name()))
         if matched:
             node=QgsProject.instance().layerTreeRoot().findLayer(l.id())
             node.setItemVisibilityChecked(matched)
             print(l.name())

select_layers_by_regexp('Befunde_poly')



Schönes Wochenende allseits

Am 26.01.2023 um 16:23 schrieb Ute Heuer:
> Hallo Christiane,
>
> Danke für den Tip. Das ist aber nicht so ganz das Richtige bzw. ist 
> das zu umständlich. Es geht um ein Projekt mit sehr vielen gruppierten 
> Layern, da wäre es gut, wenn das mit einem Klick quasi geht ohne 
> vorher alles an - oder auszuschalten.
>
> Ich hab versucht, ob mit dem Ausdruck "layer_property" den richtigen 
> Ausdruck zu erstellen. Aber das hat auch noch keinen Erfolg erbracht 
> und ich weiss auch nicht, ob das damit überhaupt funktioniert.
>
> Am 26.01.2023 um 15:31 schrieb Chr. Enderle:
>> Hallo Ute,
>>
>> zumindest kann man in der Layerliste mit dem Button "Kartenthemen 
>> verwalten" (Auge als Icon) so genannte Kartenthemen definieren. Dafür 
>> stellt man einmal alle Layer, die zu einem Thema gehören sollen, 
>> sichtbar und alle anderen unsichtbar und definiert diese Einstellung 
>> mit dem Button als neues Thema und kann es unter diesem Button auch 
>> jederzeit wieder aufrufen. Wenn ein neuer Layer in das Thema 
>> aufgenommen werden soll, muss man "Thema ersetzen" wählen. Vielleicht 
>> ist das praktikabel.
>>
>> Möglicherweise gibt es aber noch elegantere Lösungen.
>>
>> Viele Grüße,
>>
>> Christiane
>>
>> Am 26.01.2023 um 14:59 schrieb Ute Heuer:
>>> Liebe Liste,
>>>
>>> gibt es eine Möglichkeit Layer im Layerfenster nach Namen zu 
>>> filtern? Unsere Ausgrabungen werden nach Schnitten und Plana 
>>> aufgeteilt. DIe Objekte befinden sich daher ebenfalls in Layern, die 
>>> nach Schnitt und Planum variieren, z.B. S1_PL1_Befunde_poly, 
>>> S2_PL1_Befunde_poly usw.
>>>
>>> Kann man diese Layer automatisch bzw. über Filter ("zeige alle Layer 
>>> mit Befunde_poly") gleichzeitig an- und ausschalten? Also 
>>> wahrscheinlich geht das schon aber der Weg dahin scheint etwas 
>>> steinig ;-).
>>>
>>> Viele Grüße
>>>
>>> Ute
>>>
>>>
-- 
________________________
Ute Heuer M.A.
fodilus GmbH

Mail: ute.heuer at fodilus.de

------------------------------------------
ƒodilus GmbH
Büro für Archäologie und Grabungstechnik
Hirschauer Str. 32
D-72108 Rottenburg-Wurmlingen
Tel.: +49(0)7472 - 16 70 541
Fax: +49(0)32 - 22 700 50 19
Mail: mail at fodilus.de

Handelsregister beim Amtsgericht Stuttgart: HRB Nr. 758210
Geschäftsführer: Dr. Ralf Keller, Sascha Schmidt M. A., Dr. Gerd Stegmaier
Umsatzsteuer-ID DE308730820
www.fodilus.de - Forschung · Dienstleistung · fachliche Untersuchung
____________________________________________________________________



Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste