Sichtlinie (3D Analyst)
Zusammenfassung
Dieses Werkzeug verwendet als Eingabe eine 2D- oder 3D-Polyline-Feature-Class zusammen mit einer Raster-, TIN- (Triangulated Irregular Network, Unregelmäßiges Dreiecksnetz) oder Terrain-Dataset-Oberfläche, um die Sichtbarkeit zwischen der Beobachter- und Zielposition festzulegen. Eine Multipatch-Feature-Class kann optional als Teil der Sichtbarkeitsanalyse angegeben werden.
Weitere Informationen zur Funktionsweise von "Sichtlinie" (3D Analyst)
Verwendung
-
Der "Beobachter" ist die Stelle, von der aus die Sichtbarkeit bestimmt wird. Das "Ziel" ist das andere Ende der Linie, dessen Sichtbarkeit bestimmt werden soll.
-
Nur die Endpunkte der Eingabelinie werden zum Definieren von Beobachter und Ziel verwendet.
Falls ein Ziel nicht sichtbar ist, wird mit dem Werkzeug Sichtlinie eine optionale Ausgabe-Point-Feature-Class generiert. Dies umfasst die Position des ersten Hindernisses, das für jede Linie, deren Ziel nicht sichtbar ist, gefunden wird.
Eine Ausgabe-Line-Feature-Class mit Informationen zur Linien- und Zielsichtbarkeit wird erstellt.
Der Ausgabe-Feature-Class, die die Sichtlinienanalyse enthält, werden die folgenden Felder hinzugefügt:
- SourceOID: Die Feature-ID der Sichtlinie, aus der diese Ausgabe stammt.
- 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 OID des Multipatches, 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 |
Die Eingabe-Raster-, Eingabe-TIN- oder Eingabe-Terrain-Oberfläche, auf der die Berechnungen basieren. | TIN Layer; Raster Layer; Terrain Layer |
in_line_feature_class |
Die Eingabe-Polyline-Feature-Class, entlang der die Sichtbarkeit berechnet wird. Dabei kann es sich um eine 2D- oder 3D-Feature-Class handeln. | 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) |
Die Ausgabe-Point-Feature-Class, die das erste Sichthindernis entlang der Sichtlinie angibt, wenn das Ziel nicht sichtbar ist. | 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, die volle Auflösung. | Double |
in_features (optional) |
Eine Feature-Class mit Multipatches, die möglicherweise die Sichtlinie(n) blockieren. Dieses Feld ist standardmäßig leer. | Feature Layer |
Codebeispiel
Das folgende Skript im Python-Fenster veranschaulicht, wie Sie die Funktion Sichtlinie im unmittelbaren Modus verwenden.
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")
Das folgende Python-Skript veranschaulicht, wie Sie die Funktion Sichtlinie in einem eigenständigen Skript verwenden.
'''********************************************************************* 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)