Sichtlinien konstruieren (ArcGIS 3D Analyst)
Zusammenfassung
Dient zum Erstellen von Linien-Features, die Sichtlinien von einem oder mehreren Beobachterpunkten auf Features in einer Ziel-Feature-Class darstellen.
Verwendung
-
Der Umfang wird gleichmäßig gemessen, wenn die Ziel-Features Linien oder Polygone sind.
-
Die Eingabe-Feature-Class muss eine Point-Feature-Class sein. Multipoints sind nicht gültig.
-
Es wird eine dreidimensionale Ausgabe generiert, wenn sowohl für Beobachter- als auch Ziel-Features eine Quelle für das Höhenmaß angegeben wird.
Ein Join-Feld wird verwendet, um ein oder mehrere Ziele für einen bestimmten Beobachter anzugeben. Wenn kein Join-Feld verwendet wird, werden alle Punkte mit allen Zielen verbunden.
Als Standard für die Quelle des Höhenmaßes der Beobachter- und Ziel-Features wird der Feldname verwendet, der als erstes in dieser Liste gefunden wird:
- Shape.Z (nur verfügbar für Features, die Z-aktiviert sind)
- Spot
- Z
- Z_Value
- Height
- Elev
- Höhe
- Kontur
Wenn kein geeignetes Höhenfeld vorhanden ist, wird standardmäßig das Schlüsselwort <Keines> verwendet, um anzugeben, dass die Features keine Z-Werte haben.
Wenn das gewünschte Höhenfeld in der Standard-Feldauswahl keine höhere Priorität hat, muss das gewünschte Feld explizit angegeben werden. Auf ähnliche Weise muss, wenn kein Höhenfeld benötigt wird, die Feature-Class jedoch eines der Felder in der Standard-Auswahlliste enthält, das Schlüsselwort <Keines> angegeben werden.
Die Einheiten unter Abtastschrittweite sollten in XY-Einheiten der Ausgabe-Feature-Class angegeben werden.
Der Ausgabe-Feature-Class, die die Sichtlinien enthält, werden die folgenden Felder hinzugefügt:
- OID_OBSERV – Die OID des Beobachterpunktes.
- OID_TARGET – Die OID des Ziel-Features.
- DIST_ALONG – Die Entfernung entlang des Ziel-Features, wenn es sich um eine Linie oder ein Polygon handelt.
Syntax
Parameter | Erläuterung | Datentyp |
in_observer_points |
Die einzelnen Punkt-Features, die Beobachterpunkte darstellen. Multipoint-Features werden nicht unterstützt. | Feature Layer |
in_target_features |
Die Ziel-Features (Punkte, Multipoints, Linien und Polygone). | Feature Layer |
out_line_feature_class |
Die Ausgabe-Feature-Class, die die Sichtlinien enthält. | Feature Class |
observer_height_field (optional) |
Die Quelle der Höhenwerte für die aus der Attributtabelle abgerufenen Beobachterpunkte. Ein Standard-Beobachterhöhenfeld wird aus den unten aufgeführten Optionen nach Priorität ausgewählt. Wenn mehrere Felder vorhanden sind und das gewünschte Feld in der Standard-Feldauswahl keine höhere Priorität hat, muss das gewünschte Feld angegeben werden. Wenn kein geeignetes Höhenfeld vorhanden ist, wird das Schlüsselwort <Keines> verwendet. Auf ähnliche Weise muss, wenn kein Höhenfeld benötigt wird, die Feature-Class jedoch eines der unten aufgeführten Felder enthält, das Schlüsselwort <Keines> angegeben werden.
| String |
target_height_field (optional) |
Das Höhenfeld für das Ziel. Ein Standard-Zielhöhenfeld wird aus den unten aufgeführten Optionen nach Priorität ausgewählt. Wenn mehrere Felder vorhanden sind und das gewünschte Feld in der Standard-Feldauswahl keine höhere Priorität hat, muss das gewünschte Feld angegeben werden. Wenn kein geeignetes Höhenfeld vorhanden ist, wird das Schlüsselwort <Keines> verwendet. Auf ähnliche Weise muss, wenn kein Höhenfeld benötigt wird, die Feature-Class jedoch eines der unten aufgeführten Felder enthält, das Schlüsselwort <Keines> angegeben werden. Wenn kein geeignetes Höhenfeld vorhanden ist, wird standardmäßig das Schlüsselwort <Keines> verwendet.
| String |
join_field (optional) |
Das Join-Feld wird verwendet, um Beobachter mit bestimmten Zielen zu vergleichen. | String |
sample_distance (optional) |
Die Entfernung zwischen Beispielen, wenn das Ziel entweder eine Line- oder Polygon-Feature-Class ist. Die Einheiten für Abtastschrittweite werden in den XY-Einheiten der Ausgabe-Feature-Class interpretiert. | Double |
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.ConstructSightLines_3d('observer_pt.shp', 'target.shp',
'sightlines.shp', 'BASEHEIGHT',
'TOP_HEIGHT', 'NAME')
Im folgenden Beispiel wird die Verwendung dieses Werkzeugs in einem eigenständigen Python-Skript veranschaulicht:
'''*********************************************************************
Name: Sight Line Visibility
Description: This script demonstrates how to calculate visibility
for sight lines against the obstructions presented by
terrain elevation & building models in a multipatch.
*********************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env
try:
arcpy.CheckOutExtension('3D')
# Set Local Variables
env.workspace = 'C:/data'
obs_pts = "Observers.shp"
target = "Observation_Targets.shp"
sight_lines = "in_memory/sightlines"
surface = "sample.gdb/elevation/terrain"
buildings = "city_buildings.shp"
outLOS = arcpy.CreateUniqueName("Line_of_Sight.shp")
obstruction_pts = arcpy.CreateUniqueName("Obstruction_Points.shp")
arcpy.AddMessage("Constructing sight lines...")
arcpy.ddd.ConstructSightLines(obs_pts, target, sight_lines)
arcpy.AddMessage("Calculating line of sight...")
arcpy.ddd.LineOfSight(surface, sight_lines, outLOS, obstruction_pts,
"CURVATURE", "REFRACTION", 0.35, 0, buildings)
arcpy.GetMessages(0)
arcpy.CheckInExtension("3D")
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)