====== Suchen, Filtern und Wählen in QGIS ====== GIS-Projekte sind oft komplex und unübersichtlich. Sie bestehen häufig aus mehreren Layern und vielen bis sehr vielen Objekten. Wir müssen also in der Lage sein, die **angezeigte Objekte zu reduzieren** (zu filtern), **konkrete Daten zu suchen** und ggf. die Ergebnisse der Suche oder des Filters **in die Auswahl zu bringen** um damit weitere Operationen durchführen zu können. Um nach einem konkreten Wert suchen zu können, müssen wir den **Layer wählen, in welchem wir den Wert vermuten**. Eine **layerübergreifende Suche** gibt es bislang noch nicht an Bord von QGIS. Dafür aber eine nette Erweiterung mit vielen zusätzlichen Funktionen: **[[https://github.com/NationalSecurityAgency/qgis-searchlayers-plugin#search-layers-plugin|SearchLayers]]** ===== Abfragen und Filtern mit der Attributtabelle ===== [{{ :qgis:basic:images:feldfilter_ausdrucksfilter_attributtabelle_qgis322.png?direct&420| Filterfunktionen der Attributtabelle (QGIS 3.22) }}] Arbeiten wir mit Vektor-Geodaten, so arbeiten wir immer auch mit **Tabellen** ([[qgis:basic:d_layer_und_daten:cl04_attributtabelle|Attributtabellen]]). Und wie in einer herkömmlichen Excel-Tabelle können wir auch in Attributtabellen **nach Werten sortieren, filtern und abfragen**. In QGIS gibt es dabei gleich **mehrere Wege**. Von //einfach mit der Maus zurecht geklickt// bis hin zu komplexen Abfragen mittels Scriptsprache ([[qgis:basic:d_layer_und_daten:cl06_qgis_ausdruecke_expression|QGIS Ausdrücke]]). Die Filter- und Suchfunktionen finden wir am untern linken Rand der Attributtabelle {{:qgis:mactionfiltermap.png?16&nolink}} Hier haben wir u.A. die Wahl zwischen: * **Feldfilter** und * **Fortgeschrittener Filter (Ausdruck)** Das Filtern der Attributtabelle führt dazu, dass die Inhalte der Tabelle auf die Zeilen reduziert wird, welche dem gesetzten Filter entsprechen. Setzen wir beispielsweise für das Attribut "Vogelart" den Filter auf "Mäusebussard" so werden auch nur die Zeilen der Tabelle angezeigt, in welchem der Begriff "Mäusebussard" im Attribut "Vogelart" vorkommt. Die **Gesamtzahl der Tabellenzeilen** (sprich die Anzahl der Objekte) finden wir im **Tabellenkopf** an erster Stelle. Es folgt die **Anzahl der gefilterten Objekte** und danach die der **gewählten Objekte**. ==== Feldfilter in der Attributtabelle ==== {{ :qgis:basic:video:feldfilter_attributtabelle_qgis322.mp4?440x320}} Der Feldfilter **ermöglicht uns das Filtern bzw. die Suche nach den Werten eines Attributs** (auch "Feld" genannt). Wir wählen dazu das entsprechende Attribut und tippen den Wert oder einen Teil des Wertes ein, welchen wir suchen: {{:qgis:basic:images:filtereingabe.png?150&nolink}} QGIS wird bereits während der Eingabe treffenden Begriffe vorschlagen, welche wir auswählen oder mit Enter bestätigen können. Die Attributtabelle wird nun nur die Zeilen anzeigen, welche den Wert "Bussard" in der Attributspalte "Vogelart" stehen haben. Auch ähnliche Begriffe wie "Graubussard" oder "Bergbussard" werden beim Filtern berücksichtigt. Ein Linksklick in den Bereich der Attributtabelle, der weder Zeile noch Spalte ist (oben links), bringt die **gefilterten Objekte in die Auswahl**, mit welcher sich nun weitere Möglichkeiten ergeben. (im nebenstehenden Video ab 0:22 Min) Mit diesem Filter lassen sich nur Werte einer **einzelnen Attributtspalte** filtern. Möchte man komplexere Abfragen an **mehreren Attributen** oder mit Geometrieeigenschaften durchführen, so muss man sich mit den **QGIS Ausdrücken** auseinandersetzen ==== Fortgeschrittener Filter in der Attributtabelle (Ausdruck) ==== {{ :qgis:basic:video:fortgeschrittener_filter_attributtabelle_qgis322.mp4?440x320}} Deutlich **umfangreicher und flexibler** im Vergleich zum Attributfilter fällt der **fortgeschrittene Filter mit Hilfe von QGIS Ausdrücken** aus. Allerdings begeben wir uns hier auch in ein neues Level: QGIS Ausdrücke sind komplex und mächtig und nicht immer leicht zu verstehen. Gehen wir es also langsam an. Mit Hilfe von QGIS Ausdrücken und dem fortgeschrittenen Filter, können wir sämtliche erdenklich Filter- und Suchfunktionen erzeugen und verschachteln. Dabei stehen uns nicht nur die Attribute und Werte der Attributtabellen zur Verfügung, sondern auch geometrische und räumliche Eigenschaften - hierzu gibt es eine Lektion in QGIS Advanced: [[qgis:advanced:b_fortgeschrittene_vektorverarbeitung:lektion-2]] Bei der Verwendung des fortgeschrittenen Filters verwenden wir den Ausdrucksdialog, welcher uns hilft und immer wieder in QGIS begegnen wird. Mehr zum Ausdrucksdialog und Ausdrücken kommt in der folgenden Lektion: [[qgis:basic:d_layer_und_daten:cl05_abfragen_und_regeln_qgis_ausdruck#Ausdrücke und Ausdrucksdialog]] Hat man einmal einen Ausdruck erzeugt, lässt sich dieser nicht nur zum Filtern verwenden! Wir können damit z.B. auch auf **direktem Wege Objekte auswählen** mit dem "Objekt nach Ausdruck wählen"-Werkzeug {{https://docs.qgis.org/3.16/de/_images/mIconExpressionSelect.png}}. Oder wir können den Ausdruck auch direkt als sog. **Vorfilter** an unserem Layer setzen: ''Rechtsklick auf den Layer -> Filter...'' === Einige einfache und doch schon recht vielseitige Beispiele: === ^ Ausdruck ^ Ergebnis ^ Erläuterung ^ | "Vogelart" = 'Mäusebussard' OR "Vogelart" = 'Rotmilan' | Alle Mäusebussarde und alle Rotmilane | Abfrage an **einem Attribut mit zwei Möglichkeiten** | | "Vogelart" IN ('Mäusebussard', 'Rotmilan') | Alle Mäusebussarde und alle Rotmilane | Elegantere Alternative zu oben | | "Vogelart" = 'Mäusebussard' AND "Verhalten" = 'kreisend' | Alle kreisenden Mäusebussarde | Abfrage an **zwei Attributen**. Zwei Bedingungen müssen erfüllt sein | |"Vogelart" = 'Mäusebussard' AND "Verhalten" != 'kreisend' | Alle nicht-kreisenden Mäusebussarde | Abfrage an **zwei Attributen**. Zwei Bedingungen müssen erfüllt sein | ===== Auswählen ohne Attributtabelle ===== Die Attributtabelle bietet uns eine Übersicht aller Objekte - zur Auswahl von Objekten benötigen wir sie aber nicht. Wir können sie sozusagen "umgehen" und sparen uns damit den Zwischenschritt des Filterns und gelangen damit auf direktestem Weg zu einer Auswahl. Im Folgenden werden zwei mögliche Wege beschrieben, ohne Attributtabelle mit dem Formular oder einem Ausdruck direkt zu wählen. Für ganz schnelles Arbeiten: Im Suchfeld unten links genügt es, die Begriffe **"Wählen"** oder **"Select"** einzutippen. Es werden so direkt Möglichkeiten verschiedene Möglichkeiten der Objekt-Auswahl vorgeschlagen. ==== Auswählen mit dem Auswahlformular ==== [{{ :qgis:basic:images:auswahl_mit_formular_qgis322.png?direct&420|Formular-Auswahl aus der Auswahlwerkzeugleiste (QGIS 3.22)}}] {{:qgis:basic:images:auswahlwerkzeugleiste_a_qgis322.png?120&nolink }} Nutzer:innenfreundlich, aber keineswegs so vielseitig wie der oben beschriebene Ausdrucks-Filter, ist die Auswahl von Objekten mit Hilfe eines **Auswahl-Formulars** welches wir in der ''Auswahlwerkzeugleiste'' mit diesem Symbol finden: {{https://docs.qgis.org/3.16/de/_images/mIconFormSelect.png?20px&nolink}} oder mit der Taste F3 aufrufen. Hier können die gesuchten Werte in den jeweiligen Attributen (Feldern) eintragen und mit gewünschten Operatoren versehen werden. Dazu müssen wir nicht viel tippen, die wichtigsten Regeln und Operatoren sind über Formularfelder mit der Maus zu erreichen. Es bestehen neben der Möglichkeit konkrete Objekte zu wählen, auch die Möglichkeit Objekte **aus einer bereits bestehenden Auswahl zu entfernen** oder weitere hinzu zu fügen. Zum Auswahl-Ergebnis kann **gezoomt** werden und die Objekte kann man **aufleuchten** lassen, um sie in der Karte leichter zu finden. ==== Direktes Wählen mit Hilfe von Ausdrücken==== {{:qgis:basic:images:auswahlwerkzeugleiste_b_qgis322.png?120&nolink }} [{{ :qgis:basic:images:auswahl_mit_ausdruck_qgis324.png?direct&420|Ausdruck-Auswahl aus der Auswahlwerkzeugleiste (QGIS 3.24)}}] Direktes Wählen von Objekten ohne Umwege über die Attributtabelle ermöglicht das Werkzeug **Objekte nach Ausdruck wählen**. Es ist zu finden in der ''Auswahlwerkzeugleiste'' mit diesem Symbol: {{https://docs.qgis.org/3.16/de/_images/mIconExpressionSelect.png?20px&nolink}} Hier kann nun mit Hilfe von QGIS-Ausdrücken jede denkbare Abfrage durchgeführt werden. Das Resultat kann direkt gewählt bzw. aus einer vorhanden Auswahl entfernt oder hinzugefügt werden. Die Möglichkeiten von Ausdrucken sind unerschöpflich. Hier ein Überblick: [[qgis:basic:d_layer_und_daten:cl06_qgis_ausdruecke_expression|]] ---- * Die jew. Symbole der Werkzeugleiste einkreisen * vervollständigen und ggf. Strukturierung der Lektionen überdenken: Attributtabelle/Ohne Attributtabelle? ~~DISCUSSION|Fragen, Hinweise und Fehler kommen hier hin:~~