Near 3D (ArcGIS 3D Analyst)
Zusammenfassung
Berechnet die dreidimensionale Entfernung von jedem Eingabe-Feature zum nächstgelegenen Feature, das sich in einer oder mehreren nahen Feature-Classes befindet.
Verwendung
Alle Geometrietypen werden unterstützt und alle Eingabe-Feature-Classes müssen Z-Werte haben.
Die Near-Features können eine oder mehrere Feature-Classes mit unterschiedlichen Shape-Typen umfassen.
Die Near-Features können aus demselben Dataset wie die Eingabe-Features stammen. Wenn das nächstgelegene Near-Feature eines Eingabe-Features das Feature selbst ist (Entfernung ist 0), wird dieses Feature ignoriert, und es wird nach dem nächsten nächstgelegenen Feature gesucht.
Der grundlegende Unterschied zwischen den Werkzeugen Near und Near 3D liegt darin, dass das Werkzeug Near 3D mit 3D-Features statt mit 2D-Features verwendet wird. Zudem sind die vom Werkzeug Near 3D verglichenen Entfernungen eher 3D-Entfernungen (Schrägstrecken) als horizontale Entfernungen. Außerdem können einige zusätzliche Felder ausgegeben werden.
Die Winkelfelder werden nur erstellt und enthalten nur Werte, wenn die Option Winkel aktiviert ist.
Die folgenden Felder werden an die Attributtabelle des Eingabe-Features angefügt:
- NEAR_FID – Die FID des nächstgelegenen Near-Features.
- NEAR_DIST – Die 2D-Entfernung (horizontale Entfernung) zwischen dem nächstgelegenen Punkt in einem Eingabe-Feature und dem nächstgelegenen Punkt im nächstgelegenen Near-Feature.
- NEAR_DIST3 – Die 3D-Entfernung (Schrägstrecke) zwischen dem nächstgelegenen Punkt in einem Eingabe-Feature und dem nächstgelegenen Punkt im nächstgelegenen Near-Feature.
- NEAR_DELTX – Die Entfernung auf der X-Achse vom nächstgelegenen Punkt im Eingabe-Feature zum nächstgelegenen Punkt im nächstgelegenen Near-Feature.
- NEAR_DELTY – Die Entfernung auf der Y-Achse vom nächstgelegenen Punkt im Eingabe-Feature zum nächstgelegenen Punkt im nächstgelegenen Near-Feature.
- NEAR_DELTZ – Die Entfernung auf der Z-Achse vom nächstgelegenen Punkt im Eingabe-Feature zum nächstgelegenen Punkt im nächstgelegenen Near-Feature.
- NEAR_FROMX – Die X-Koordinate des nächstgelegenen Punktes im Eingabe-Feature, das dem nächstgelegenen Punkt im nächstgelegenen Near-Feature am nächsten liegt.
- NEAR_FROMY – Die Y-Koordinate des nächstgelegenen Punktes im Eingabe-Feature, das dem nächstgelegenen Punkt im nächstgelegenen Near-Feature am nächsten liegt.
- NEAR_FROMZ – Die Z-Koordinate des nächstgelegenen Punktes im Eingabe-Feature, das dem nächstgelegenen Punkt im nächstgelegenen Near-Feature am nächsten liegt.
- NEAR_X – Die X-Koordinate des nächstgelegenen Punktes im nächstgelegenen Near-Feature oder der nächstgelegene imaginäre Punkt im nächstgelegenen Near-Feature.
- NEAR_Y – Die Y-Koordinate des nächstgelegenen Punktes im nächstgelegenen Near-Feature oder der nächstgelegene imaginäre Punkt im nächstgelegenen Near-Feature.
- NEAR_Z – Die Z-Koordinate des nächstgelegenen Punktes im nächstgelegenen Near-Feature oder der nächstgelegene imaginäre Punkt im nächstgelegenen Near-Feature.
- NEAR_ANG_H – Der horizontale geographische Winkel (Nordazimut) in Grad zwischen dem nächstgelegenen Punkt im Eingabe-Feature und dem nächstgelegenen Punkt im nächstgelegenen Near-Feature. Das ist das gleiche System, das vom älteren Werkzeug "Near" verwendet wird; es handelt sich nicht um einen Azimut oder eine Peilung. Osten ist 0, Nordosten ist 45, Norden ist 90, Süden ist -90 und Westen ist 180 oder -180. Bei diesem Wert wird die Höhe nicht berücksichtigt.
- NEAR_ANG_V – Der vertikale Winkel (alias der Höhenwinkel oder Winkel der Höhe) in Grad, vom nächsten Punkt auf dem Eingabe-Feature zum nächsten Punkt im nächsten Near-Feature. Horizontal ist 0, gerade nach oben ist 90, gerade nach unten ist -90, 10° über der Horizontalen nach oben ist 10.
- NEAR_FC – Der Pfad der Feature-Class, die das nächste Near-Feature enthält. Dieses Feld wird nur hinzugefügt, wenn mehrere Near-Features angegeben wurden.
Wenn die obigen Felder bereits vorhanden sind, werden ihre Werte aktualisiert.
Der Wert für "NEAR_FID", "NEAR_DIST" und "NEAR_DIST3" ist -1, falls innerhalb des angegebenen Suchradius keine Entsprechung gefunden wird.
Die Felder "NEAR_DELTX", "NEAR_DELTY" und "NEAR_DELTZ" werden nur erstellt und enthalten nur Werte, wenn die Option Delta aktiviert ist.
Die Felder "NEAR_FROMX", "NEAR_FROMY", "NEAR_FROMZ", "NEAR_X", "NEAR_Y" und "NEAR_Z" werden nur erstellt und enthalten nur Werte, wenn das Kontrollkästchen Position aktiviert ist.
Dieses Werkzeug ist ein 3D-Gruppenoperator, der analytische Funktionen für 3D-Features bereitstellt. Weitere Informationen zu Gruppenoperatoren und ihrer Verwendung finden Sie unter Arbeiten mit 3D-Gruppenoperatoren.
Syntax
Parameter | Erläuterung | Datentyp |
in_features |
Die Eingabe-Feature-Class, deren Features die Informationen zum nächsten Feature zugeordnet werden. | Feature Layer |
near_features |
Die Features, deren Nähe zu den Eingabe-Features berechnet wird. Falls mehrere Feature-Classes angegeben sind, wird der Eingabe-Feature-Class ein Zusatzfeld mit dem Namen "NEAR_FC" hinzugefügt, in dem angegeben wird, welche Near-Feature-Class das nächstgelegene Feature enthält. | Feature Layer |
search_radius (optional) |
Die maximale Entfernung zwischen den Eingabe-Features und den Near-Features, für die die Entfernung und die FID ermittelt werden. Falls kein Suchradius angegeben wurde, werden alle Near-Features verwendet. | Linear Unit |
location (optional) |
Bestimmt, ob jedem Eingabe-Feature (zwei Sätze von XYZ-Werten) sechs Koordinatenfelder hinzugefügt werden. Bei den Werten handelt es sich um die drei Koordinaten des Eingabe-Features (NEAR_FROMX, NEAR_FROMY, NEAR_FROMZ) und die drei Koordinaten des nächstgelegenen Features (NEAR_X, NEAR_Y, NEAR_Z). Die Felder "NEAR_FID" und "NEAR_DIST" werden immer hinzugefügt – unabhängig von der Option "Position".
| Boolean |
angle (optional) |
Legt fest, ob die Winkel zwischen dem Eingabe-Feature und dem nächstgelegenen Near-Feature berechnet und in den Feldern "NEAR_ANG_H" und "NEAR_ANG_V" gespeichert werden. Die Werte für die beiden Winkel werden in Grad angegeben, wobei ein Grad 1/360 eines Kreises darstellt. Die Bruchteile eines Grades werden als Dezimalwerte angegeben. Horizontale Winkel werden von 180° bis -180° gemessen, wobei 0° Osten, 90° Norden, 180° (-180°) Westen und -90° Süden ist. Vertikale Winkel sind 0° (waagerecht), 90° (senkrecht nach oben) und -90° (senkrecht nach unten).
| Boolean |
delta (optional) |
Legt fest, ob die Entfernungen an den Primärachsen zwischen dem Eingabe-Feature und dem nächstgelegenen Near-Feature berechnet und in den Feldern "NEAR_DELTX", "NEAR_DELTY" und "NEAR_DELTZ" gespeichert werden.
| Boolean |
Codebeispiel
Anhand des folgenden Beispiels wird die Verwendung dieses Werkzeugs im Python-Fenster veranschaulicht:
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.Near3D_3d("points_3D.shp", "buildings_multipatch.shp", "30", "LOCATION", "ANGLE", "DELTA")
Im folgenden Beispiel wird die Verwendung dieses Werkzeugs in einem eigenständigen Python-Skript veranschaulicht:
'''****************************************************************************
Name: Near 3D Example
Description: This script demonstrates how to use
the Near 3D tool to identify the nearest z-aware features
that satisfy the results from a queried feature.
****************************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env
try:
# Obtain a license for the ArcGIS 3D Analyst extension
arcpy.CheckOutExtension('3D')
# Set environment settings
env.workspace = 'C:/data'
# Set Local Variables
inFC = 'homes.shp'
nearFC = 'radiotowers.shp'
# See the 'Building an SQL expression' topic for more information
# Query the field 'MATERIAL' for the string 'Reinforced Concrete'
SQL_Expression = "'"'MATERIAL'"' = 'Reinforced Concrete'"
#Execute Make Feature Layer
arcpy.MakeFeatureLayer_management(nearFC, 'Near Layer', SQL_Expression)
result = arcpy.GetCount_management('Near Layer')
if int(result.getOutput(0)) == 0:
arcpy.AddMessage('{0} has no features that satisfy the query: {1}'\
.format(nearFC, SQL_Expression))
else:
#Execute Near3D
arcpy.Near3D_3d(inFC, 'nearLayer', '', 'LOCATION', 'ANGLE')
except arcpy.ExecuteError:
print arcpy.GetMessages()
except:
# Get the traceback object
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
# Concatenate error information into message string
pymsg = 'PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:\n{1}'\
.format(tbinfo, str(sys.exc_info()[1]))
msgs = 'ArcPy ERRORS:\n {0}\n'.format(arcpy.GetMessages(2))
# Return python error messages for script tool or Python Window
arcpy.AddError(pymsg)
arcpy.AddError(msgs)