Línea de visión (3D Analyst)
Resumen
Esta herramienta utiliza una clase de entidad de polilínea 2D o 3D de entrada junto con una superficie de ráster, de red irregular de triángulos (TIN) o de dataset del terreno para determinar la visibilidad entre los puntos de observador y de destino. Una clase de entidad multiparche puede suministrarse, opcionalmente, para participar en el análisis de visibilidad.
Más información sobre cómo funciona Línea de visión (3D Analyst)
Uso
-
El observador es el punto desde el cual se determina la visibilidad. El destino es el final opuesto de la línea, hacia el cual se determina la visibilidad.
-
Sólo los extremos de la línea de entrada se utilizan para definir el observador y el destino.
Si un destino o más no son visibles, la herramienta Línea de visión produce una clase de entidad de punto de salida opcional. Ésta contiene la ubicación de la primera obstrucción encontrada para cada línea cuyo destino no es visible.
Produce una clase de entidad de línea de salida que contiene la información de la línea y de la visibilidad de destino.
Los siguientes campos se agregarán a la clase de entidad de salida que contiene el análisis de la línea de visión:
- SourceOID: el Id. de entidad de la línea de visión a partir de la cual se origina esta salida.
- VisCode: la visibilidad a lo largo de la línea. Un valor de 1 indica visible y un valor de 2 indica no visible. El campo sólo existirá si la geometría de salida es una línea.
- TarIsVis: la visibilidad del objetivo a lo largo de la línea. Un valor de 1 indica visible y un valor de 0 indica no visible. El campo sólo existirá si la geometría de salida es una línea.
- OBSTR_MPID: el OID del multiparche que obstruye la línea de visión. Si no hay ningún multiparche que obstruya la línea de visión, el campo contendrá el valor -1 o bien -9999. Si la superficie obstaculiza el objetivo, el valor de este campo será -1. Si el objetivo es visible, el valor será -9999.
Sintaxis
Parámetro | Explicación | Tipo de datos |
in_surface |
El ráster de entrada, el TIN o la superficie de terreno en los que se basan los cálculos. | TIN Layer; Raster Layer; Terrain Layer |
in_line_feature_class |
La clase de entidad de polilínea de entrada a lo largo de la cual se calcula la visibilidad. Esta clase de entidad puede ser 2D o 3D. | Feature Layer |
out_los_feature_class |
La clase de entidad de línea de salida a lo largo de la cual se ha determinado la visibilidad. Se crean dos atributos de campo. VisCode indica la visibilidad a lo largo de la línea, 1 para visible y 2 para no visible. TarIsVis indica la visibilidad del destino, 0 para no visible y 1 para visible. | Feature Class |
out_obstruction_feature_class (Opcional) |
La clase de entidad del punto de salida que indica el primer punto de obstrucción a lo largo de la línea de visión si el destino no es visible. | Feature Class |
use_curvature (Opcional) |
Indica si se debe tener en cuenta la curvatura de la tierra para el análisis de la línea de visión. Para habilitar esta opción, la superficie debe tener una referencia espacial definida en las coordenadas proyectadas con unidades z definidas.
| Boolean |
use_refraction (Opcional) |
Indica si se debe tener en cuenta la refracción atmosférica al generar una línea de visión a partir de una superficie funcional.
| Boolean |
refraction_factor (Opcional) |
Proporciona un valor que se utilizará en el factor de refracción. El factor de refracción predeterminado es 0,13. | Double |
pyramid_level_resolution (Opcional) |
La resolución del nivel de pirámide del dataset de terreno a utilizar para el geoprocesamiento. El valor predeterminado es 0, resolución completa. | Double |
in_features (Opcional) |
Una clase de entidad de multiparches que puede obstruir las líneas de visión. El valor predeterminado es en blanco. | Feature Layer |
Ejemplo de código
La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la función Línea de visión en el modo inmediato.
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")
La siguiente secuencia de comandos de Python demuestra cómo utilizar la función Línea de visión en una secuencia de comandos independiente.
'''********************************************************************* 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)