Layer lagebezogen auswählen (Data Management)

Zusammenfassung

Wählt Features auf Grundlage einer räumlichen Beziehung zu Features in einem anderen Dataset aus.

Die einzelnen Features im Parameter Eingabe-Features werden anhand der Features im Parameter Auswahl-Features ausgewertet. Wenn der festgelegte Parameter Beziehung erfüllt ist, wird das Eingabe-Feature ausgewählt.

Weitere Informationen zu "Lagebezogen auswählen" und Beispielabbildungen von Beziehungen

Verwendung

  • Wenn es sich bei der Eingabe um eine Feature-Class oder einen Dataset-Pfad handelt, wird von diesem Werkzeug mit dem Ergebnis des angewendeten Werkzeugs automatisch ein neuer Layer erstellt und zurückgegeben.

  • Das Koordinatensystem, in dem die räumliche Beziehung ausgewertet wird, kann sich auf das Ergebnis auswirken. Features, die sich in einem Koordinatensystem überschneiden, überschneiden sich in einem anderen möglicherweise nicht.

    • Dieses Werkzeug wertet die räumliche Beziehung im Koordinatensystem der Datenquelle der Eingabe-Features aus. Legen Sie die Umgebungseinstellung Ausgabe-Koordinatensystem auf Aktuelle Karte [Layer] fest, um dasselbe Koordinatensystem wie die aktuelle Anzeige zu verwenden.

  • Mit diesem Werkzeug können Sie Features auf Grundlage der räumlichen Beziehungen zu anderen Features im selben Layer auswählen. Ein Beispiel finden Sie unter Auswählen anhand einer räumlichen Beziehung im Layer

  • Die Anzahl der ausgewählten Datensätze wird im Geoverarbeitungsverlauf unter Parameter > Anzahl aufgeführt. Zusätzlich kann die Anzahl der ausgewählten Datensätze mit dem Werkzeug Anzahl erhalten bestimmt werden. In Python kann auch über das Objekt Result des Werkzeugs auf die Anzahl der ausgewählten Datensätze zugegriffen werden.

  • Weitere Informationen zu den dreidimensionalen räumlichen Beziehungen Überschneiden 3D und In einer Entfernung (3D) (INTERSECT_3D und WITHIN_A_DISTANCE_3D in Python) finden Sie unter 3D-Beziehungen lagebezogen auswählen.

  • Die räumliche Beziehung Überschneiden (DBMS) (INTERSECT_DBMS in Python) bietet bei Verwendung von Enterprise-Geodatabase-Daten möglicherweise eine bessere Performance als die Beziehung Überschneiden (Intersect) (INTERSECT in Python). Sie wird jedoch nur unter bestimmten Umständen unterstützt. Wenn alle Bedingungen erfüllt sind, wird die räumliche Operation im Enterprise-Geodatabase-Datenbankmanagementsystem (DBMS) und nicht auf dem Client durchgeführt. Berücksichtigen Sie bei Verwendung dieser räumlichen Beziehung Folgendes:

    • Zum Ausführen der Operation innerhalb des DBMS müssen die folgenden Voraussetzungen erfüllt sein:
      • Die Parameterwerte für Eingabe-Features und Auswahl-Features stammen aus demselben Enterprise-Geodatabase-Workspace und müssen denselben Raumbezug sowie Geometriespeichertyp aufweisen.
      • Das zugrunde liegende DBMS ist IBM Db2, Oracle, PostgreSQL, SAP HANA oder Microsoft SQL Server.
      • Die unterstützten Geometriespeichertypen für diese Option sind ST_GEOMETRY (Db2, Oracle, PostgreSQL und SAP HANA), PostGIS (PostgreSQL), SDO_GEOMETRY (Oracle) und MSSQLGeometry und MSSQLGeography (SQL Server). Unter Geodatabase-Verwaltung finden Sie Informationen zum Installieren und Konfigurieren Ihres DBMS sowie zum Konfigurieren des Geometriespeichertyps Ihrer Wahl, damit Sie ihn verwenden können.
      • Wenn Sie Oracle ST_GEOMETRY verwenden, müssen Sie Oracle extproc für den Zugriff auf ST_Geometry konfigurieren. Weitere Informationen finden Sie unter Konfigurieren von "extproc" für den Zugriff auf "ST_Geometry" in Oracle.
      • Der Parameter Suchentfernung ist nicht festgelegt.
      • Der Parameterwert für Auswahltyp ist Neue Auswahl.
      • Die vor der Werkzeugausführung vorgenommene Auswahl wurde mit einer Layer-Definitionsabfrage erstellt, nicht mit einem Auswahlsatz.
    • Die räumliche Operation wird ohne Anwendung einer XY-Toleranz bei der Verarbeitung durchgeführt. Die Verwendung einer XY-Toleranz wird im DBMS nicht unterstützt. Dies kann dazu führen, dass im Vergleich zur Durchführung der Analyse auf dem Client unter Anwendung einer XY-Toleranz geringfügig andere Auswahlen zurückgegeben werden. Weitere Informationen dazu, wie bei clientseitigen Operationen eine XY-Toleranz angewendet wird, finden Sie unter Grundlagen zu Feature-Classes.
    • Enterprise-Geodatabase in Db2, Oracle, PostgreSQL, SAP HANA und SQL Server werden unterstützt. Sie verfügen jeweils über einen eigenen Geometriespeichertyp, der durch diese Beziehung unterstützt wird. Nähere Informationen zum jeweiligen Geometriespeichertyp finden Sie in der Dokumentation des Anbieters Ihres DBMS. Beim Durchführen räumlicher Operationen kann es durch Speicherbeschränkungen zu Beeinträchtigungen der Performance und Skalierbarkeit kommen.

Syntax

arcpy.management.SelectLayerByLocation(in_layer, {overlap_type}, {select_features}, {search_distance}, {selection_type}, {invert_spatial_relationship})
ParameterErklärungDatentyp
in_layer
[in_layer,...]

Die Features, die anhand der Werte des Parameters select_features ausgewertet werden. Die Auswahl wird auf diese Features angewendet.

Feature Layer; Raster Layer; Mosaic Layer
overlap_type
(optional)

Gibt die räumliche Beziehung an, die ausgewertet werden soll.

  • INTERSECTDie Features im Eingabe-Layer werden ausgewählt, wenn sie ein Auswahl-Feature schneiden. Dies ist die Standardeinstellung.
  • INTERSECT_3DDie Features im Eingabe-Layer werden ausgewählt, wenn sie sich mit einem Auswahl-Feature im dreidimensionalen Raum (x, y und z) überschneiden.
  • INTERSECT_DBMSDie Features im Eingabe-Layer werden ausgewählt, wenn sie ein Auswahl-Feature schneiden. Diese Option gilt nur für Enterprise-Geodatabases. Wenn alle Anforderungen erfüllt sind (siehe die Verwendungshinweise), wird die Auswahl im Enterprise-Geodatabase-DBMS und nicht auf dem Client verarbeitet. Diese Option bietet möglicherweise eine bessere Performance als die Durchführung der Auswahl auf dem Client.
  • WITHIN_A_DISTANCEDie Features im Eingabe-Layer werden ausgewählt, wenn sie sich innerhalb der (mittels Euklidischen Abstands) angegebenen Entfernung zum Auswahl-Feature befinden. Geben Sie die Entfernung mithilfe des Parameters search_distance an.
  • WITHIN_A_DISTANCE_3DDie Features im Eingabe-Layer werden ausgewählt, wenn sie sich in einem bestimmten Abstand zu einem Auswahl-Feature im dreidimensionalen Raum befinden. Geben Sie die Entfernung mithilfe des Parameters search_distance an.
  • WITHIN_A_DISTANCE_GEODESICDie Features im Eingabe-Layer werden ausgewählt, wenn sie sich innerhalb einer bestimmten Entfernung zum Auswahl-Feature befinden. Die Entfernung zwischen Features wird mit einer geodätischen Formel berechnet, bei der die Krümmung des Sphäroiden berücksichtigt und die Daten in der Nähe der Datumsgrenze und der Pole richtig verarbeitet werden. Geben Sie die Entfernung mithilfe des Parameters search_distance an.
  • CONTAINSDie Features im Eingabe-Layer werden ausgewählt, wenn sie ein Auswahl-Feature enthalten.
  • COMPLETELY_CONTAINSDie Features im Eingabe-Layer werden ausgewählt, wenn sie ein Auswahl-Feature vollständig enthalten.
  • CONTAINS_CLEMENTINIDiese räumliche Beziehung liefert die gleichen Ergebnisse wie COMPLETELY_CONTAINS. Eine Ausnahme ist, wenn sich das Auswahl-Feature vollständig auf der Grenze des Eingabe-Features befindet (kein Teil liegt inner- oder außerhalb). In diesem Fall wird das Feature nicht ausgewählt. CLEMENTINI legt das Grenzpolygon als Linie zwischen innen und außen fest. Die Grenze einer Linie ist als ihr Endpunkt definiert, und die Grenze eines Punktes ist immer leer.
  • WITHINDie Features im Eingabe-Layer werden ausgewählt, wenn sie innerhalb eines Auswahl-Features liegen.
  • COMPLETELY_WITHINDie Features im Eingabe-Layer werden ausgewählt, wenn sie vollständig innerhalb eines Auswahl-Features liegen bzw. in diesem enthalten sind.
  • WITHIN_CLEMENTINIDie Ergebnisse stimmen mit denen für WITHIN überein, es sei denn, das gesamte Feature im Eingabe-Layer befindet sich auf der Grenze des Features im Auswahl-Layer. In diesem Fall wird das Feature nicht ausgewählt. CLEMENTINI legt das Grenzpolygon als Linie zwischen innen und außen fest. Die Grenze einer Linie ist als ihr Endpunkt definiert, und die Grenze eines Punktes ist immer leer.
  • ARE_IDENTICAL_TODie Features im Eingabe-Layer werden ausgewählt, wenn ihre geometrische Form mit der eines Auswahl-Features übereinstimmt.
  • BOUNDARY_TOUCHESDie Features im Eingabe-Layer werden ausgewählt, wenn ihre Grenze ein Auswahl-Feature berührt. Wenn es sich bei den Eingabe-Features um Linien oder Polygone handelt, kann die Grenze des Eingabe-Features die Grenze des Auswahl-Features nur berühren. Kein Teil des Eingabe-Features kann die Grenze des Auswahl-Features kreuzen.
  • SHARE_A_LINE_SEGMENT_WITHDie Features im Eingabe-Layer werden ausgewählt, wenn sie mit einem Auswahl-Feature ein gemeinsames Liniensegment teilen. Die Eingabe- und Auswahl-Features müssen Linien oder Polygone sein.
  • CROSSED_BY_THE_OUTLINE_OFDie Features im Eingabe-Layer werden ausgewählt, wenn sie vom Umriss eines Auswahl-Features geschnitten werden. Die Eingabe- und Auswahl-Features müssen Linien oder Polygone sein. Wenn für den Eingabe- oder Auswahl-Layer Polygone verwendet werden, wird die Grenze (Linie) des Polygons verwendet. Linien, die sich in einem Punkt schneiden, werden ausgewählt. Dies gilt jedoch nicht für Linien, die ein Liniensegment gemeinsam haben.
  • HAVE_THEIR_CENTER_INDie Features im Eingabe-Layer werden ausgewählt, wenn ihr Mittelpunkt innerhalb eines Auswahl-Features liegt. Der Mittelpunkt des Features wird wie folgt berechnet: Bei Polygonen und Multipoints wird der Schwerpunkt der Geometrie verwendet, bei Linien die geometrische Mitte.
String
select_features
(optional)

Die Features im Parameter Eingabe-Features werden auf Grundlage ihrer Beziehung zu den Features des betreffenden Layers oder der betreffenden Feature-Class ausgewählt.

Feature Layer
search_distance
(optional)

Die angegebene Entfernung, in der gesucht wird. Dieser Parameter ist nur gültig, wenn der Parameter overlap_type auf WITHIN_A_DISTANCE, WITHIN_A_DISTANCE_GEODESIC, WITHIN_A_DISTANCE_3D, INTERSECT, INTERSECT_3D, HAVE_THEIR_CENTER_IN oder CONTAINS festgelegt wurde.

Wenn die Option WITHIN_A_DISTANCE_GEODESIC ausgewählt ist, verwenden Sie eine lineare Einheit wie Kilometer oder Meilen.

Linear Unit
selection_type
(optional)

Gibt an, wie die Auswahl auf die Eingabe angewendet und mit einer vorhandenen Auswahl kombiniert wird. Dieses Werkzeug bietet keine Option, eine vorhandene Auswahl aufzuheben. Verwenden Sie im Werkzeug Layer nach Attributen auswählen die Option CLEAR_SELECTION.

  • NEW_SELECTIONDie getätigte Auswahl ersetzt eine bestehende Auswahl. Dies ist die Standardeinstellung.
  • ADD_TO_SELECTIONDie resultierende Auswahl wird einer bestehenden Auswahl hinzugefügt. Wenn keine Auswahl vorhanden ist, entspricht diese Option der Option NEW_SELECTION.
  • REMOVE_FROM_SELECTIONDie getätigte Auswahl wird aus einer bestehenden Auswahl entfernt. Wenn keine Auswahl vorhanden ist, hat der Vorgang keine Auswirkungen.
  • SUBSET_SELECTIONDie getätigte Auswahl wird mit der bestehenden Auswahl kombiniert. Nur Datensätze, die in beiden Auswahlen vorhanden sind, werden ausgewählt.
  • SWITCH_SELECTIONDie Auswahl wird umgekehrt. Alle bisher ausgewählten Datensätze werden von der Auswahl entfernt und alle bisher nicht ausgewählten Datensätze werden der Auswahl hinzugefügt. Die Parameter select_features und overlap_type werden bei Auswahl dieser Option ignoriert.
String
invert_spatial_relationship
(optional)

Gibt an, ob das Ergebnis der Auswertung der räumlichen Beziehung verwendet wird oder das gegenteilige Ergebnis. Dieser Parameter kann beispielsweise verwendet werden, um eine Liste von Features abzurufen, die sich nicht überschneiden oder nicht innerhalb einer angegebenen Entfernung von Features in einem anderen Dataset liegen.

  • NOT_INVERTDas Abfrageergebnis wird verwendet. Dies ist die Standardeinstellung.
  • INVERTDas Gegenteil des Abfrageergebnisses wird verwendet. Wenn der Parameter selection_type verwendet wird, erfolgt die Umkehrung der Auswahl vor dem Kombinieren mit einer vorhandenen Auswahl.
Boolean

Abgeleitete Ausgabe

NameErklärungDatentyp
out_layer_or_view

Die aktualisierten Eingaben mit angewendeter Auswahl.

Feature-Layer; Mosaik-Layer
out_layers_or_views

Die Namen der aktualisierten Eingaben.

Feature-Layer; Mosaik-Layer
count

Die Anzahl der ausgewählten Datensätze.

Long

Codebeispiel

SelectLayerByLocation - Beispiel 1 (Python-Fenster)

Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion SelectLayerByLocation im unmittelbaren Modus verwendet wird.

import arcpy
arcpy.SelectLayerByLocation_management("parcel_lyr", "have_their_center_in", 
                                       "c:/kamsack.gdb/city_limits")
SelectLayerByLocation - Beispiel 2 (eigenständiges Skript)

Das folgende eigenständige Skript zeigt, wie mit der Funktion SelectLayerByLocation Features auf Grundlage von Position und einer Attributabfrage in eine neue Feature-Class extrahiert werden.

# Description: Extract features to a new feature class based on a 
#              location and an attribute query
# Import arcpy and set path to data
import arcpy
arcpy.env.workspace = "c:/data/mexico.gdb"
# Make a layer and select cities that overlap the chihuahua polygon
chihuahua_cities = arcpy.SelectLayerByLocation_management('cities', 'INTERSECT', 
                                                          'chihuahua')
# From the previous selection, select a subset of cities that have 
# population > 10,000
arcpy.SelectLayerByAttribute_management(chihuahua_cities, 
                                        'SUBSET_SELECTION', 
                                        '"population" > 10000')
# If features matched criteria, write them to a new feature class
matchcount = int(arcpy.GetCount_management(chihuahua_cities)[0]) 
if matchcount == 0:
    print('no features matched spatial and attribute criteria')
else:
    arcpy.CopyFeatures_management(chihuahua_cities, 'chihuahua_10000plus')
    print('{0} cities that matched criteria written to {0}'.format(
        matchcount, chihuahua_10000plus))
SelectLayerByLocation - Beispiel 3 (eigenständiges Skript)

Das folgende eigenständige Skript zeigt eine Vielzahl von Verwendungsmöglichkeiten für die Optionen overlap_type und WITHIN_A_DISTANCE des Parameters WITHIN_A_DISTANCE_GEODESIC mit dem Parameter search_distance.

# Description: Select features within a distance
# Import arcpy and set path to data
import arcpy
arcpy.env.workspace = r"c:\data\mexico.gdb"
arcpy.SelectLayerByLocation_management('cities', 'WITHIN_A_DISTANCE', 
                                       'chihuahua', '1.5 Miles')
arcpy.SelectLayerByLocation_management('cities', 'WITHIN_A_DISTANCE_GEODESIC', 
                                       'chihuahua', '200 Kilometers')
# When using WITHIN_A_DISTANCE, if distance units are not specified, the 
# distance value is assumed to be in the units of the input dataset's coordinate 
# system
arcpy.SelectLayerByLocation_management('cities', 'WITHIN_A_DISTANCE', 
                                       'chihuahua', '200')
# When using WITHIN_A_DISTANCE_GEODESIC, if distance units are not specified, 
# the distance value is assumed to be in meters
arcpy.SelectLayerByLocation_management('cities', 'WITHIN_A_DISTANCE_GEODESIC', 
                                       'chihuahua', '200')

Lizenzinformationen

  • Basic: Ja
  • Standard: Ja
  • Advanced: Ja

Verwandte Themen