Wenn einer Karte oder Szene ein Dataset als Layer hinzugefügt wird, soll manchmal nur eine Teilmenge der Features im Dataset verwendet und dargestellt werden. Hier einige Beispiele:
- Aus einem Dataset mit Städten nur diejenigen herausfiltern, die über eine Bevölkerungszahl von über einer Million Menschen verfügen
- Aus einem Dataset mit Wasserläufen nur solche extrahieren, die ganzjährig Wasser führen
- Aus einem Dataset mit Flurstücken nur die gewerblich nutzbaren Flächen betrachten
Mit Definitionsabfragen können Sie eine Teilmenge von Features definieren und in einem Layer damit arbeiten, indem Sie nach den Features filtern, die vom Layer aus dem Dataset abgerufen werden sollen. Das bedeutet, dass sich eine Definitionsabfrage nicht nur auf die Darstellung auswirkt, sondern auch darauf, welche Features in der Attributtabelle des Layers angezeigt und von Geoverarbeitungswerkzeugen ausgewählt, beschriftet, identifiziert und verarbeitet werden können.
Wenn Sie Einschränkungen dafür festlegen möchten, welche Features dargestellt werden, aber dennoch alle Features abgefragt und verarbeitet werden sollen, verwenden Sie stattdessen Anzeigefilter. Definitionsabfragen und Anzeigefilter können gemeinsam für einen Layer verwendet werden. Mit Definitionsabfragen werden jedoch die verfügbaren Features im Layer eingeschränkt, während Anzeigefilter nur die angezeigten Features einschränken.
Definitionsabfragen bestehen aus mindestens einer Klausel. Sie werden mit dem Abfrage-Manager mithilfe von SQL-Syntax erstellt. Informationen zur Verwendung von Klauseln und Abfragen sowie zum Speichern und Laden von Abfragen aus Dateien finden Sie unter Einführung in Abfrageausdrücke.
Es können mehrere Definitionsabfragen mit einem Layer verknüpft werden, wobei jedoch immer nur jeweils eine Definitionsabfrage aktiv sein kann. Selbst wenn mehrere Definitionsabfragen für einen Layer definiert sind, können alle inaktiv sein, sodass keine Definitionsabfrage angewendet wird.
Hinweis:
In diesem Thema werden Definitionsabfragen für einen Feature-Layer beschrieben, Definitionsabfragen können jedoch auf die gleiche Weise für Standalone-Tabellen verwendet werden.
Erstellen einer Definitionsabfrage für einen Layer
Zum Erstellen einer Definitionsabfrage für einen Layer führen Sie die folgenden Schritte aus:
- Stellen Sie sicher, dass ein Layer im Bereich Inhalt ausgewählt wurde.
- Klicken Sie in der Registerkartengruppe Feature-Layer auf die Registerkarte Daten.
- Klicken Sie auf der Registerkarte Daten in der Gruppe Definitionsabfrage auf die Schaltfläche Definitionsabfrage erstellen , um das Dialogfeld Layer-Eigenschaften mit der geöffneten Registerkarte Definitionsabfrage zu öffnen.
- Klicken Sie auf das Dropdown-Menü Neue Definitionsabfrage, um eine neue Abfrage im Klausel-Modus, SQL-Modus oder aus einer Abfrageausdrucksdatei (.exp) zu erstellen.
- Wählen Sie im Abfrage-Manager die Werte in den Menüs aus, um die Klausel zu erstellen. Diese Menüs mit ihren Werten hängen von den Quelldaten ab.
- Sie können auch auf Klausel hinzufügen klicken, um der Abfrage eine weitere Klausel hinzuzufügen. Wählen Sie die erforderlichen Werte aus den Menüs in der neuen Klausel aus. Wiederholen Sie diesen Schritt, um ggf. weitere Klauseln hinzuzufügen.
- Zusätzlich können Sie auf Feldeinstellungen klicken, um die Anzeige der Feldwerte zu ändern. Diese Einstellungen gelten für alle Klauseln.
- Feld-Aliasnamen anzeigen ist standardmäßig aktiviert. Klicken Sie auf Feldnamen anzeigen, um den Namen der Tabelle in das Dropdown-Menü mit den Feldern der Klausel aufzunehmen. Besonders hilfreich ist dies, wenn Ihr Layer an einer Verbindung mit gemeinsamen Feldnamen beteiligt ist.
- Klicken Sie auf Aufsteigend sortieren oder Absteigend sortieren, damit die Namen der Felder im Dropdown-Menü in alphabetischer Reihenfolge angezeigt werden. Klicken Sie auf Originalreihenfolge, um die Standardreihenfolge der Felder wiederherzustellen.
- Sichtbare Felder anzeigen ist standardmäßig aktiviert. Klicken Sie auf Alle Felder anzeigen, damit auch die ausgeblendeten Felder im Dropdown-Menü mit den Feldern der Klausel angezeigt werden.
- Nur Werte für Domäne und Subtype anzeigen ist standardmäßig ausgewählt. Klicken Sie auf Alle Werte anzeigen, um ungültige oder falsche Werte in das Feld-Dropdown-Menü mit eindeutigen Werte aufzunehmen.
- Optional können Sie mit der Maus auf einen Abfragenamen zeigen und klicken, um die Abfrage umzubenennen.
- Klicken Sie optional auf Die Gültigkeit des SQL-Ausdrucks überprüfen , um die Abfrage zu überprüfen.
- Um die Abfrage zu überprüfen und abzuschließen, klicken Sie im Abfrage-Manager auf Übernehmen.
- Wenn es sich hierbei um die einzige Definitionsabfrage für den Layer handelt, wird diese damit zur aktiven Definitionsabfrage und sofort angewendet. Gibt es andere Definitionsabfragen für den Layer, klicken Sie auf Als aktiv festlegen , um eine Definitionsabfrage auf den Layer anzuwenden.
Festlegen der aktiven Definitionsabfrage
Sie können für einen Layer oder eine Tabelle mehrere Definitionsabfragen definieren und zwischen diesen hin und her wechseln. Es ist immer jeweils nur eine oder keine Abfrage aktiv. Die Definitionsabfragen werden als Eigenschaft des Layers gespeichert.
Gehen Sie wie folgt vor, um zwischen aktiven Definitionsabfragen hin und her zu wechseln:
- Stellen Sie sicher, dass im Bereich Inhalt ein Layer ausgewählt ist.
- Klicken Sie in der Registerkartengruppe Feature-Layer auf die Registerkarte Daten.
- Wählen Sie auf der Registerkarte Daten in der Gruppe Definitionsabfrage im Menü Definitionsabfrage eine Abfrage aus, die auf den Layer angewendet werden soll.
- Alternativ können Sie die aktive Abfrage auch über die Registerkarte Definitionsabfrage des Dialogfeldes Layer-Eigenschaften festlegen.
- Klicken Sie auf Als aktiv festlegen , und klicken Sie auf Übernehmen, um diese Abfrage auf den Layer anzuwenden. Daraufhin werden alle anderen Abfragen inaktiv. Der Name der aktiven Abfrage wird am unteren Rand des Dialogfeldes Eigenschaften angegeben. Wenn viele Abfragen angezeigt werden und die aktive Abfrage fehlt, klicken Sie auf Aktive Definitionsabfrage anzeigen , um per Bildlauf zu der Abfrage zu gelangen.
- Klicken Sie auf Aktive Abfrage löschen , und klicken Sie auf Übernehmen, wenn auf den Layer bzw. die Tabelle keine Abfrage angewendet werden soll. Die Abfragen werden für den Layer bzw. die Tabelle beibehalten, aber derzeit nicht angewendet.
Tipp:
Im Bereich Inhalt können Sie die Liste der Layer filtern, damit ausschließlich die Layer mit einer aktiven Definitionsabfrage angezeigt werden.
Ändern von vorhandenen Abfragen
Klicken Sie bei ausgewähltem Layer im Bereich Inhalt in der Registerkartengruppe Feature-Layer auf der Registerkarte Daten in der Gruppe Definitionsabfrage auf die Schaltfläche Definitionsabfrage erstellen , um das Dialogfeld Layer-Eigenschaften mit der geöffneten Registerkarte Definitionsabfrage zu öffnen. Wenn Sie eine Definitionsabfrage ändern möchten, zeigen Sie mit der Maus auf die Abfrage, und führen Sie eine der folgenden Aktionen aus:
- Wenn Sie Klauseln ändern, hinzufügen oder aus der Definitionsabfrage entfernen möchten, klicken Sie in der Abfragezelle auf Bearbeiten.
- Um eine Klausel in einer Abfrage zu bearbeiten, passen Sie die Werte ggf. an.
- Um eine Klausel aus der Abfrage zu entfernen, klicken Sie auf Klausel entfernen .
- Um eine Klausel in der Abfrage einzufügen, klicken Sie auf Klausel hinzufügen .
Klicken Sie auf Übernehmen, um die Änderungen in die Definitionsabfrage zu übernehmen.
- Wenn Sie die Definitionsabfrage aus dem Layer oder der Tabelle entfernen möchten, während Sie sich nicht im Bearbeitungsmodus befinden, zeigen Sie mit der Maus auf die Zelle der Definitionsabfrage, und klicken Sie auf Definitionsabfrage entfernen .
- Um eine Definitionsabfrage umzubenennen, klicken Sie auf den Namen einer Definitionsabfrage, und geben Sie einen neuen Namen ein.
- Um die Abfragesyntax in eine Abfrageausdrucksdatei (.exp) zu exportieren, zeigen Sie, während Sie sich nicht im Bearbeitungsmodus befinden, mit der Maus auf die Zelle der Definitionsabfrage, und klicken Sie auf Definitionsabfrage speichern .
- Um die aktuelle Abfrage durch eine andere Abfrage aus einer Abfrageausdrucksdatei (.exp) zu ersetzen, zeigen Sie, während Sie sich nicht im Bearbeitungsmodus befinden, mit der Maus auf die Zelle der Definitionsabfrage, und klicken Sie auf Definitionsabfrage laden .
Festlegen von Definitionsabfragen für mehrere Layer gleichzeitig
Wenn Definitionsabfragen mit demselben Namen für mehrere Layer verwendet werden, können die Abfragen für die Layer gleichzeitig aktiviert werden, auch wenn der Inhalt der Abfragen nicht identisch ist. Das bedeutet, dass Sie für ein bestimmtes Szenario zusammengehörige Abfragen erstellen und gleichzeitig anwenden können. Für ein anderes Szenario können Sie ggf. zu einer anderen Gruppe von Abfragen wechseln.
Gehen Sie wie folgt vor, um Definitionsabfragen mit einem gemeinsamen Namen auf mehrere Layer gleichzeitig anzuwenden:
- Stellen Sie sicher, dass die Layer im Bereich Inhalt ausgewählt wurden.
- Klicken Sie in der Registerkartengruppe Feature-Layer auf die Registerkarte Daten.
- Wählen Sie auf der Registerkarte Daten in der Gruppe Definitionsabfrage im Menü Definitionsabfrage eine Abfrage aus, die auf den Layer angewendet werden soll.
Nur Definitionsabfragen mit einem in allen ausgewählten Layern identischen Namen werden angezeigt.
Automatisieren der Erstellung von Definitionsabfragen
Sie können die Erstellung und Durchführung von Definitionsabfragen mit Python automatisieren, indem Sie eine Kombination von ArcPy-Funktionen verwenden. Weitere Informationen zu diesem Thema sowie Codebeispiele finden Sie in der Dokumentation der Layer-Klasse.
Mit dem Werkzeug Definitionsabfrage aus Auswahl generieren können Sie eine Definitionsabfrage auch aus der Auswahl für einen Feature-Layer erstellen.
Freigeben von Layern mit Definitionsdateien
Wenn ein Layer als Feature-Layer oder in einem Kartenbild-Layer freigegeben wird, wird nur die aktive Definitionsabfrage beibehalten und berücksichtigt. Alle anderen inaktiven Definitionsabfragen werden entfernt.