Construir líneas de visión (3D Analyst)
Resumen
Crea entidades de línea que representan líneas de visión de uno o más puntos de observador para entidades de una clase de entidad de destino.
Ilustración
Uso
-
Las líneas de visión se muestrean del perímetro de las líneas de destino y los polígonos basados en el valor especificado en el parámetro Distancia de muestra. Las unidades de Distancia de muestra se deben expresar en las unidades x-y de la clase de entidad de salida.
Se utiliza un campo de unión para especificar uno o más objetivos para un observador dado. Si no se utiliza ningún campo de unión, todos los puntos estarán conectados a todos los destinos.
Se generará una salida tridimensional si se especifica un origen de altura para las entidades de destino y observador. El origen de altura del observador y las entidades de destino se predeterminan según el primer nombre de campo que se encuentra en la lista:
- Shape.Z (solo está disponible para las entidades con los valores Z habilitados)
- Spot
- Z
- Z_Value
- Height
- Elev
- Elevation
- Contour
Si no existe ningún campo de altura adecuado, se utilizará de manera predeterminada la palabra clave <Ninguno> para indicar que las entidades no tienen valores en Z.
Si el campo de altura deseado no tiene una prioridad mayor en la selección del campo predeterminado, será necesario especificar explícitamente el campo deseado. Del mismo modo, si no se desea un campo de altura pero la clase de entidad contiene uno de los campos en la lista de selección predeterminada, será necesario especificar la palabra clave <Ninguno>.
Se agregarán los siguientes campos a la clase de entidad de salida que contiene las líneas de visión:
- OID_OBSERV: OID del punto de observador
- OID_TARGET: OID de la entidad de destino
- DIST_ALONG: distancia a lo largo de la entidad de destino si es una línea o polígono
Cuando el parámetro Salida de dirección está habilitado, las líneas de visión de salida tendrán dos campos de atributos adicionales:
- AZIMUTH: grados desde el norte donde los valores aumentan en el sentido de las agujas del reloj
- VERT_ANGLE: ángulo vertical en grados desde el horizonte, donde 90° está situado directamente encima y -90° justo debajo. El ángulo vertical solo tiene importancia cuando se especifica un campo de altura.
Sintaxis
Parámetro | Explicación | Tipo de datos |
in_observer_points |
Las entidades de punto único que representan puntos de observador. Las entidades multipunto no son compatibles. | Feature Layer |
in_target_features |
Las entidades de destino (puntos, multipuntos, líneas y polígonos). | Feature Layer |
out_line_feature_class |
La clase de entidad de salida que contiene las líneas de visión. | Feature Class |
observer_height_field (Opcional) |
El origen de los valores de altura para los puntos de observador obtenidos desde la tabla de atributos. Se selecciona un campo Campo de altura de observación predeterminado entre las opciones que se enumeran a continuación por orden de prioridad. Si hay varios campos y el campo deseado no tiene prioridad alta en la selección predeterminada de campos, dicho campo deseado deberá ser especificado. Si no existe ningún campo de altura adecuado, se utilizará la palabra clave <Ninguno>. De modo similar, si no desea un campo de altura pero la clase de entidad tiene uno de los campos enumerados más abajo, se deberá especificar la palabra clave <Ninguno>.
| String |
target_height_field (Opcional) |
El campo de altura del destino. Se selecciona un campo Campo de altura del objetivo predeterminado de las opciones que se enumeran a continuación por orden de prioridad. Si hay varios campos y el campo deseado no tiene prioridad alta en la selección predeterminada de campos, dicho campo deseado deberá ser especificado. Si no existe ningún campo de altura adecuado, se utilizará la palabra clave <Ninguno>. De modo similar, si no desea un campo de altura pero la clase de entidad tiene uno de los campos enumerados más abajo, se deberá especificar la palabra clave <Ninguno>. Si no existe ningún campo de altura adecuado, se utilizará de manera predeterminada la palabra clave <Ninguno>.
| String |
join_field (Opcional) |
El campo de unión se utiliza para hacer coincidir los observadores con los destinos específicos. | String |
sample_distance (Opcional) |
La distancia entre las muestras cuando el destino es una clase de entidad de línea o poligonal. Las unidades de Distancia de muestra se interpretan en las unidades XY de la clase de entidad de salida. | Double |
output_the_direction (Opcional) |
Añade atributos de dirección a las líneas de visión de salida. Se añadirán y llenarán dos campos adicionales para indicar la dirección: AZIMUTH y VERT_ANGLE (ángulo vertical).
| Boolean |
Ejemplo de código
El siguiente ejemplo muestra cómo usar de esta herramienta en la ventana Python:
$desktopversion\cmsfiles\py\3d\constructsightlines.py
El siguiente ejemplo muestra cómo usar esta herramienta en una secuencia de comandos independiente de Python:
'''*********************************************************************
Name: Sight Line Visibility of Parade Path
Description: This script demonstrates how to create a sight line feature class
from a pair of observer and target points.
*********************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env
try:
# Checking out 3D Analyst Extension:
arcpy.CheckOutExtension('3D')
# Set Local Variables:
env.workspace = 'C:/data'
# Setting up input and output variables:
obs = "observer_pts.shp"
tar = "parade_path.shp"
sightlines = "output_sightlines.shp"
height = "<None>"
join_field = "#"
sampling = 0.5
direction = "OUTPUT_THE_DIRECTION"
surface = 'elevation.tif'
bldgs = 'buildings.shp'
arcpy.AddMessage("Building sightlines...")
arcpy.ddd.ConstructSightLines(obs, tar, sightlines, height, height,
join_field, sampling, direction)
arcpy.ddd.LineOfSight(surface, sightlines, "Parade_LOS.shp",
"Obstructions.shp", in_features=bldgs)
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)