Sichtlinie (ArcGIS 3D Analyst)
Zusammenfassung
Bestimmt die Sichtbarkeit von Sichtlinien über einer von einem Multipatch-, Raster-, TIN-, Terrain- oder LAS-Dataset definierten Oberfläche.
Verwendung
-
Nur die Endpunkte der Eingabelinie werden zum Definieren von Beobachter und Ziel verwendet. Idealerweise sollten Sichtlinien einfache, gerade Linien aus zwei Stützpunkten sein, die den Beobachtungspunkt und die Zielposition, zu der die Sichtbarkeit bestimmt wird, darstellen.
Wird die Beobachtungsposition durch Punkt-Features identifiziert und befinden sich die Zielpositionen in einer anderen Feature-Class, sollten Sie die Eingabe für dieses Werkzeug mit Sichtlinien konstruieren generieren.
Sie können für jede Linie das optionale Punkt-Feature für Hindernisse angeben, um die Position des ersten Hindernisses zu identifizieren, das die Sichtbarkeit des Ziels blockiert.
Die Attributtabelle des Ausgabe-Linien-Features enthält die folgenden Felder:
- SourceOID – Die eindeutige ID des Linien-Features, das bei der Berechnung der Sichtbarkeit verwendet wurde.
- VisCode – Die Sichtbarkeit entlang der Linie. Der Wert 1 gibt an, dass das Ziel sichtbar ist. Der Wert 2 gibt an, dass das Ziel nicht sichtbar ist. Dieses Feld ist nur vorhanden, wenn es sich bei der Ausgabegeometrie um eine Linie handelt.
- TarIsVis – Die Sichtbarkeit des Ziels entlang der Linie. Der Wert 1 gibt an, dass das Ziel sichtbar ist. Der Wert 0 gibt an, dass das Ziel nicht sichtbar ist. Dieses Feld ist nur vorhanden, wenn es sich bei der Ausgabegeometrie um eine Linie handelt.
- OBSTR_MPID – Die eindeutige ID des Multipatch, das die Sichtlinie verdeckt. Wenn kein Multipatch die Sichtlinie verdeckt, enthält das Feld den Wert -1 oder -9999. Wenn das Ziel von der Oberfläche verdeckt wird, beträgt der Wert -1. Wenn das Ziel sichtbar ist, beträgt der Wert -9999.
Syntax
Parameter | Erläuterung | Datentyp |
in_surface |
Das Raster-, TIN-, Terrain- oder LAS-Dataset, das die Oberfläche definiert, die bei der Bestimmung der Sichtbarkeit verwendet wurde. | Raster Layer; Terrain Layer; TIN Layer |
in_line_feature_class |
Die Linien-Features, deren erster Stützpunkt den Beobachtungspunkt definiert und deren letzter Stützpunkt das Beobachtungsziel identifiziert. Die Höhenwerte der Beobachtungs- und Zielpunktpositionen werden den Z-Werten von 3D-Features entnommen und für 2D-Features von der Oberfläche interpoliert. Zur Höhe von 2D-Linien wird zudem ein Standardversatz von 1 addiert, um die Punkte über die Oberfläche zu heben. Wenn das Feature ein OffsetA-Feld aufweist, wird der Wert zur Höhe des Beobachtungspunktes addiert. Wenn das Feld OffsetB vorhanden ist, wird der Wert zur Höhe der Zielposition addiert. | Feature Layer |
out_los_feature_class |
Die Ausgabe-Line-Feature-Class, entlang der die Sichtbarkeit bestimmt wurde. Zwei Attributfelder werden erstellt. "VisCode" gibt die Sichtbarkeit entlang der Linie an, wobei 1 für "sichtbar" und 2 für "nicht sichtbar" steht. "TarIsVis" gibt die Sichtbarkeit des Zieles an. Dabei steht 0 für "nicht sichtbar" und 1 für "sichtbar". | Feature Class |
out_obstruction_feature_class (optional) |
Eine optionale Point-Feature-Class, die die Position des ersten Hindernisses in der Sichtlinie des Beobachters auf das Ziel angibt. | Feature Class |
use_curvature (optional) |
Gibt an, ob die Erdkrümmung in der Sichtlinienanalyse berücksichtigt werden soll. Damit diese Option aktiviert werden kann, muss die Oberfläche über einen definierten Raumbezug in projizierten Koordinaten sowie definierte Z-Einheiten verfügen.
| Boolean |
use_refraction (optional) |
Gibt an, ob die atmosphärische Lichtbrechung berücksichtigt werden soll, wenn eine Sichtlinie aus einer Oberflächenfunktion generiert wird.
| Boolean |
refraction_factor (optional) |
Gibt den Wert für den Brechungsfaktor an. Der Standardbrechungsfaktor ist 0,13. | Double |
pyramid_level_resolution (optional) |
Die Auflösung der Pyramidenebene des Terrain-Datasets, die für die Geoverarbeitung verwendet werden soll. Der Standardwert ist 0, also volle Auflösung. | Double |
in_features (optional) |
Eine optionale Multipatch-Feature-Class, die möglicherweise zusätzliche blockierende Elemente definiert, z. B. Gebäude. | Feature Layer |
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.LineOfSight_3d("tin", "line.shp", "los.shp", "buldings_multipatch.shp",
"obstruction.shp")
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)