Zusammenfassung
Berechnet die Entfernung und weitere Nachbarschaftsinformationen zwischen den Eingabe-Features und dem nächstgelegenen Feature in einem anderen Layer oder einer anderen Feature-Class.
Weitere Informationen zum Berechnen der Nähe mit Geoverarbeitungswerkzeugen
Abbildung
![Suchen von Near-Features nach Geometrietyp Suchen von Near-Features nach Geometrietyp](GUID-C68F745B-C3AD-4B77-9869-10F87630F485-web.png)
Verwendung
Die folgenden Felder werden zur Eingabe hinzugefügt. Wenn die Felder bereits vorhanden sind, werden die Feldwerte aktualisiert.
- NEAR_FID: Die ObjectID des nächstgelegenen Near-Features. Wenn kein Near-Feature gefunden wird, ist der Wert -1.
- NEAR_DIST: Der Abstand zwischen dem Eingabe- und Near-Feature. Der Wert wird in der linearen Einheit des Koordinatensystems des Eingabe-Features angegeben. Wenn für den Parameter Methode der Wert Geodätisch festgelegt wurde und die Eingabe in einem geographischen Koordinatensystem vorliegt, werden Meter verwendet. Wenn kein Near-Feature gefunden wird, ist der Wert -1.
- NEAR_FC: Der Katalogpfad zur Feature-Class mit dem Near-Feature. Dieses Feld wird nur dann der Ausgabetabelle hinzugefügt, wenn mehrere Near-Features angegeben wurden. Wenn kein Near-Feature gefunden wird, ist der Wert eine leere Zeichenfolge oder NULL.
Die folgenden Felder werden den Eingabe-Features hinzugefügt, wenn der Parameter Position aktiviert ist (bzw. In Python der Parameter location auf LOCATION festgelegt wurde). Die Feldwerte werden aktualisiert, wenn die Felder bereits vorhanden sind. Die Einheiten der Feldwerte hängen von der im Parameter Methode ausgewählten Methode ab. Wenn der Wert auf Planar festgelegt ist, wird er in der linearen Einheit des Koordinatensystems des Eingabe-Features angegeben. Bei Festlegung des Wertes auf Geodätisch wird er im geographischen Koordinatensystem angegeben, das mit dem Koordinatensystem des Eingabe-Features verknüpft ist.
- NEAR_X: Die X-Koordinate der Position im Near-Feature, das dem Eingabe-Feature am nächsten liegt. Wenn kein Near-Feature gefunden wird, ist der Wert -1.
- NEAR_Y: Die Y-Koordinate der Position im Near-Feature, das dem Eingabe-Feature am nächsten liegt. Wenn kein Near-Feature gefunden wird, ist der Wert -1.
Das folgende Feld wird den Eingabe-Features hinzugefügt, wenn der Parameter Winkel aktiviert ist (bzw. in Python der Parameter angle auf ANGLE festgelegt wurde). Die Feldwerte werden aktualisiert, wenn die Felder bereits vorhanden sind.
- NEAR_ANGLEDer Winkel der Linie an der FROM_X- und FROM_Y-Position, die die Eingabe-Features mit dem Near-Feature verbindet. Wenn kein Near-Feature gefunden wird oder das Near-Feature sich mit dem Eingabe-Feature überschneidet, ist der Wert 0.
Der Wert für NEAR_FID und NEAR_DIST ist -1, falls innerhalb des Suchradius kein Feature gefunden wird.
Eingabe-Features und Near-Features können vom Typ "Punkt", "Multipunkt", "Linie" oder "Polygon" sein.
Die Near-Features können eine oder mehrere Feature-Classes mit unterschiedlichen Shape-Typen (Punkt, Multipoint, Linie oder Polygon) umfassen.
Eine Feature-Class oder ein Layer kann sowohl als Eingabe-Feature als auch als Near-Feature verwendet werden. In diesem Fall wird das ausgewertete Eingabe-Feature aus den Near-Feature-Kandidaten ausgeschlossen, um zu vermeiden, dass die Features jeweils das nächstgelegene Feature für sich selbst darstellen.
-
Die Eingabe-Features können ein Layer sein, auf dem Sie eine Auswahl durchgeführt haben. Die selektierten Features werden beim Ausführen des Werkzeugs verwendet und aktualisiert. Die verbleibenden Features haben die Werte der auf -1 festgelegten neu erstellten Felder (z. B. NEAR_FID und NEAR_DIST).
Wenn mehr als ein Near-Feature die gleiche kürzeste Entfernung vom Eingabe-Feature aufweist, wird eines davon nach dem Zufallsprinzip als nächstgelegenes Feature ausgewählt.
Bei Verwendung der Option Planar für den Parameter Methode müssen sich die Eingabe-Features in einer Projektion befinden, die für den Entfernungsmesswert geeignet ist, z. B. einer äquidistanten Projektion.
Weitere Informationen zu geographischen und projizierten Koordinatensystemen
Um die Positionen FROM_X, FROM_Y, NEAR_X und NEAR_Y zu visualisieren, kann die Ausgabetabelle als Eingabe für das Werkzeug XY-Ereignis-Layer erstellen oder XY in Linie verwendet werden.
Syntax
arcpy.analysis.Near(in_features, near_features, {search_radius}, {location}, {angle}, {method})
Parameter | Erklärung | Datentyp |
in_features | Die Eingabe-Features können vom Typ "Punkt", "Polylinie, "Polygon" oder "Multipoint" sein. | Feature Layer |
near_features [near_features,...] | Ein oder mehrere Feature-Layer oder Feature-Classes mit Near-Feature-Kandidaten. Die Near-Features können vom Typ "Punkt", "Polylinie", "Polygon" oder "Multipoint" sein. Wenn mehrere Layer oder Feature-Classes angegeben werden, wird der Eingabetabelle das Feld NEAR_FC hinzugefügt. Darin werden die Pfade der Quell-Feature-Class mit dem nächstgelegenen Feature gespeichert. Eine Feature-Class oder ein Layer kann sowohl als Eingabe-Feature als auch als Near-Feature verwendet werden. | Feature Layer |
search_radius (optional) | Der zum Suchen nach Near-Features verwendete Radius. Wenn kein Wert angegeben wurde, werden alle Near-Features berücksichtigt. Wenn eine Entfernung eingegeben, jedoch keine Einheit oder "Unbekannt" angegeben wurde, werden die Einheiten des Koordinatensystems der Eingabe-Features verwendet. Bei Verwendung der Option GEODESIC für den Parameter method in Python ist eine lineare Einheit wie Kilometer oder Meilen zu verwenden. | Linear Unit |
location (optional) | Gibt an, ob X- und Y-Koordinaten der nächstgelegenen Position des nächsten Near-Features in die Felder NEAR_X und NEAR_Y geschrieben werden.
| Boolean |
angle (optional) | Gibt an, ob der nächstgelegene Winkel berechnet und in das Feld NEAR_ANGLE der Ausgabetabelle geschrieben wird. Der nächstgelegene Winkel misst die Richtung der Linie, die ein Eingabe-Feature mit dem diesem zunächst liegenden Feature an der nächstgelegenen Position verbindet. Bei Verwendung der Methode PLANAR im Parameter method liegt der Winkel im Bereich -180° bis 180°, wobei 0° Osten, 90° Norden, 180° (oder -180°) Westen und -90° Süden bedeutet. Bei Verwendung der GEODESIC-Methode liegt der Winkel im Bereich -180° bis 180°, wobei 0° Norden, 90° Osten, 180° (oder -180°) Süden und -90° Westen bedeutet.
| Boolean |
method (optional) | Gibt an, ob der kürzeste Pfad für einen Sphäroiden (geodätisch) oder eine Ebene (planar) verwendet werden soll. Es wird dringend empfohlen, für Daten, die in einem nicht für Entfernungsmesswerte geeigneten Koordinatensystem (z. B. Web Mercator und geographische Koordinatensysteme) gespeichert sind, sowie für Analysen, die einen großen geographischen Bereich umfassen, die Methode GEODESIC zu verwenden.
| String |
Abgeleitete Ausgabe
Name | Erklärung | Datentyp |
out_feature_class | Die aktualisierten Eingabe-Features. | Feature Layer |
Codebeispiel
Near – Beispiel 1 (Python-Fenster)
Das folgende interaktive Skript für das Python-Fenster veranschaulicht, wie die Funktion Near im unmittelbaren Modus verwendet wird.
import arcpy
arcpy.env.workspace = "C:/data/city.gdb"
## find the nearest road from each house
arcpy.Near_analysis('houses', 'roads')
Near – Beispiel 2 (eigenständiges Skript)
Das folgende Python-Skript veranschaulicht, wie die Funktion Near in einem eigenständigen Skript verwendet wird.
# Name: Near.py
# Description: Finds nearest features from input feature class to near feature class.
import arcpy
# Set workspace environment
arcpy.env.workspace = "C:/data/city.gdb"
try:
# set local variables
in_features = "houses"
near_features = "parks"
# find features only within search radius
search_radius = "5000 Meters"
# find location nearest features
location = "LOCATION"
# avoid getting angle of neares features
angle = "NO_ANGLE"
# execute the function
arcpy.Near_analysis(in_features, near_features, search_radius, location, angle)
# get geoprocessing messages
print(arcpy.GetMessages())
except arcpy.ExecuteError:
print(arcpy.GetMessages(2))
except Exception as err:
print(err.args[0])
Near – Beispiel 3 (eigenständiges Skript)
Das folgende Python-Skript veranschaulicht, wie der nächstgelegene Winkel in Azimut konvertiert wird.
# Name: near_angle_to_azimuth.py
import arcpy
# Near tool does not calculate angle in azimuths
# This script, using the output of the tool, converts the angles
# to azimuth angles.
in_table = r"C:/data/city.gdb/near_table"
angles = arcpy.da.SearchCursor(in_table, ["NEAR_ANGLE"])
azimuth_angles = []
with angles as rows:
for row in rows:
angle = row[0]
if angle <= 180 and angle > 90:
azimuth_angles.append(360.0 - (angle - 90))
else:
azimuth_angles.append(abs(angle - 90))
# Use these azimuth angles as necessary.
Near – Beispiel 4 (eigenständiges Skript)
Im folgenden Python-Skript wird die Nachbearbeitung mit der abgeleiteten Ausgabe des Werkzeugs Near gezeigt. Das Skript ermittelt für jedes Near-Feature das nächstgelegene Eingabe-Feature.
# Name: features_closest_to_input.py
"""
This script finds, for each input feature, a list of near feature it is closest to.
If near features 6, 7, 10 are closest to input feature 3 then the
resulting dictionary will have a list [6, 7, 10] as value for key 3
"""
import os
import arcpy
in_fc = r"C:\data\cities.gdb\cities_many"
# create a dictionary to hold the list of near ids for each input id
nearest_dict = dict()
with arcpy.da.SearchCursor(in_fc, ["OID@", "NEAR_FID"]) as rows:
for row in rows:
nearest_id = row[0] # get OID value for that row
input_id = row[1] # get NEAR_FID value
if input_id in nearest_dict:
# if a dict key already exists, append near id to value list for that key
nearest_dict[input_id].append(nearest_id)
else:
# if the key does not exist then create a new list with near id
# and add it to the dictionary
nearest_dict[input_id] = [nearest_id]
print(nearest_dict)
# output will look like:
# {1: [13, 28], 2: [2, 9, 14, 20, 22], 3: [11, 12, 24, 25]}
Umgebungen
Lizenzinformationen
- Basic: Nein
- Standard: Nein
- Advanced: Ja