Near (Analyse)

Lizenzstufe:BasicStandardAdvanced

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

Bild

Suchen von Near-Features nach Geometrietyp

Verwendung

Syntax

Near_analysis (in_features, near_features, {search_radius}, {location}, {angle}, {method})
ParameterErläuterungDatentyp
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 ein Feld mit dem Namen NEAR_FC zur Eingabetabelle hinzugefügt, um die Pfade der Quell-Feature-Class mit dem nächstgelegenen Feature zu speichern. 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 GEODESIC-Option muss eine lineare Einheit wie Kilometer oder Meilen verwendet werden.

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.

  • NO_LOCATION Positionsinformationen werden nicht in die Ausgabetabelle geschrieben. Dies ist die Standardeinstellung.
  • LOCATION Positionsinformationen werden in die Ausgabetabelle geschrieben.
Boolean
angle
(optional)

Gibt an, ob der nächstgelegene Winkel berechnet und in ein NEAR_ANGLE-Feld in 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 PLANAR-Methode 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.

  • NO_ANGLEDie Werte der nächstgelegenen Winkel werden nicht geschrieben. Dies ist die Standardeinstellung.
  • ANGLEDie Werte der nächstgelegenen Winkel werden in das Feld NEAR_ANGLE geschrieben.
Boolean
method
(optional)

Bestimmt, 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 beliebige geographische Koordinatensysteme) gespeichert sind, und für Analysen, die einen geographischen Bereich umfassen, die GEODESIC-Methode zu verwenden.

  • PLANARVerwendet planare Entfernungen zwischen den Features. Dies ist die Standardeinstellung.
  • GEODESICVerwendet geodätische Entfernungen zwischen den Features. Bei dieser Methode wird die Krümmung des Sphäroiden berücksichtigt und die Daten in der Nähe der Datumsgrenze und der Pole werden richtig verarbeitet.
String

Codebeispiel

Near – Beispiel 1 (Python-Fenster)

Das folgende Skript für das interaktive Python-Fenster veranschaulicht, wie Sie die Funktion "Near" im unmittelbaren Modus verwenden.

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 Python-Skript)

Das folgende Skript im Python-Fenster veranschaulicht, wie Sie die Funktion "Near" in einem eigenständigen Skript verwenden.

# Name: Near.py
# Description: Finds nearest features from input feature class to near feature class.

import arcpy
from arcpy import env

# Set workspace environment
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 ex:
    print ex.args[0]
Near – Beispiel 3 (eigenständiges Python-Skript)

Das folgende Python-Skript veranschaulicht, wie der nächstgelegene Winkel in Azimuth 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 Python-Skript)

Zeigt die Nachbearbeitung mit der abgeleiteten Ausgabe des Werkzeugs "Near". Das Skript ermittelt für jedes nächstgelegene Feature, welchem Eingabe-Feature es am nächsten ist.

# 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]}

Umgebung

Verwandte Themen

Lizenzierungsinformationen

ArcGIS for Desktop Basic: Nein
ArcGIS for Desktop Standard: Nein
ArcGIS for Desktop Advanced: Ja
5/9/2014