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 del objetivo.
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 horario
- VERT_ANGLE: ángulo vertical en grados desde el horizonte, donde 90° está situado directamente encima y -90° directamente debajo. El ángulo vertical solo tiene importancia cuando se especifica un campo de altura.
Sintaxis
arcpy.ddd.ConstructSightLines(in_observer_points, in_target_features, out_line_feature_class, {observer_height_field}, {target_height_field}, {join_field}, {sample_distance}, {output_the_direction})
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 predeterminado Campo de altura del observador de las opciones que se enumeran a continuación por orden de prioridad. Si hay varios campos y el campo que desea no tiene una prioridad más alta en la selección predeterminada de campos, será necesario especificar ese campo.
| String |
target_height_field (Opcional) | El campo de altura del destino. Se selecciona un campo predeterminado Campo de altura del objetivo 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.
| 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 muestreo 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 agregarán y rellenarán dos campos adicionales para indicar la dirección: AZIMUTH y VERT_ANGLE (ángulo vertical).
| Boolean |
Muestra de código
Ejemplo 1 de ConstructSightLines (ventana de Python)
En el siguiente ejemplo se muestra cómo usar esta herramienta en la ventana de Python.
arcpy.CheckOutExtension('3D')
arcpy.env.workspace = 'C:/data'
arcpy.ConstructSightLines_3d('observer_pt.shp', 'target.shp', 'sightlines.shp',
'BASEHEIGHT', 'TOP_HEIGHT', 'NAME', 1)
Ejemplo 2 de ConstructSightLines (script independiente)
En el siguiente ejemplo se muestra cómo usar esta herramienta en un script 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)
Entornos
Información de licenciamiento
- Basic: Requiere 3D Analyst
- Standard: Requiere 3D Analyst
- Advanced: Requiere 3D Analyst