Near (Analyse)

Lizenzstufe:BasicStandardAdvanced

Zusammenfassung

Hiermit wird innerhalb des Suchradius die Entfernung jedes einzelnen Features in den Eingabe-Features zum nächstgelegenen Feature in den Near-Features berechnet.

Weitere Informationen zum Berechnen der Nähe mit Geoverarbeitungswerkzeugen

Bild

Suchen von Near-Feature nach Geometrietyp.

Verwendung

Syntax

Near_analysis (in_features, near_features, {search_radius}, {location}, {angle})
ParameterErläuterungDatentyp
in_features

Die Eingabe-Features können vom Typ "Punkt", "Polylinie, "Polygon" oder "Multipoint" sein.

Feature Layer
near_features
[near_features,...]

Wert, der verwendet wurde, um die nächsten Features von Eingabe-Features zu suchen. Es können einer oder mehrere Near-Features-Einträge vorhanden sein. Jeder Eintrag kann vom Typ "Punkt", "Polylinie", "Polygon" oder "Multipoint" sein. Falls mehrere Near-Features-Einträge angegeben werden, wird der Eingabetabelle ein neues Feld NEAR_FC hinzugefügt, um die Pfade der Quell-Feature-Class mit den nächstgelegenen Features zu speichern.

Feature Layer
search_radius
(optional)

Gibt den Radius an, der zum Suchen nach Near-Feature-Kandidaten verwendet wird. Die Near-Features innerhalb dieses Radius werden in die Berechnung des nächstgelegenen Features einbezogen. Wenn kein Wert angegeben wird, also der Standardradius (leer) verwendet wird, werden alle Near-Features in die Berechnung einbezogen. Als Suchradiuseinheit werden standardmäßig die Einheiten des Koordinatensystems der Eingabe-Features verwendet. Die Einheiten können in jede beliebige Einheit geändert werden. Dies hat jedoch keine Auswirkungen auf die Einheiten des Ausgabefeldes NEAR_DIST, die von den Einheiten des Koordinatensystems der Eingabe-Features abhängen.

Linear unit
location
(optional)

Gibt an, ob X- und Y-Koordinaten der nächstgelegenen Position des Near-Features in die neuen Felder NEAR_X und NEAR_Y geschrieben werden.

  • NO_LOCATIONGibt an, dass die X- und Y-Koordinaten der nächstgelegenen Position nicht geschrieben werden. Dies ist die Standardeinstellung.
  • LOCATIONGibt an, dass die X- und Y-Koordinaten der nächstgelegenen Position in die Felder NEAR_X und NEAR_Y geschrieben werden.
Boolean
angle
(optional)

Gibt an, ob die Werte der nächstgelegenen Winkel in Dezimalgrad berechnet und in ein neues Feld (NEAR_ANGLE) geschrieben werden. Ein nächstgelegener Winkel wird von der X-Achse (horizontale Achse) in Richtung der Linie gemessen, die ein Eingabe-Feature mit dem nächsten Feature an den nächstgelegenen Positionen verbindet. Der Dezimalgradbereich beträgt 0 bis 180 bzw. 0 bis -180: 0 nach Osten, 90 nach Norden, 180 (-180°) nach Westen und -90 nach Süden.

  • NO_ANGLEGibt an, dass die Werte der nächstgelegenen Winkel nicht geschrieben werden. Dies ist die Standardeinstellung.
  • ANGLEGibt an, dass die Werte der nächstgelegenen Winkel in das Feld NEAR_ANGLE geschrieben werden.
Boolean

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
9/11/2013