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 del objetivo.
Uso
-
El perímetro se muestrea uniformemente si las entidades de destino son líneas o polígonos.
-
La clase de entidad de entrada debe ser una clase de entidad de puntos. Los multipuntos no son válidos.
-
Se generará una salida tridimensional si se especifica un origen de altura para las entidades de destino y observador.
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.
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:
- Forma.Z (sólo está disponible para las entidades habilitadas en Z)
- Punto
- Z
- Z_Value
- Altura
- Elev
- elevación
- Curva de nivel
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 mayor prioridad 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>.
Las unidades de Distancia de muestra se deben expresar en las unidades x, y de la clase de entidad de salida.
Se agregarán los siguientes campos a la clase de entidad de salida que contiene las líneas de visión:
- OID_OBSERV: el OID del punto de observador
- OID_TARGET: el 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
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 del observador 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>.
| String |
target_height_field (Opcional) |
El campo de altura del destino. Se selecciona un campo Campo de altura 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 |
Ejemplo de código
El siguiente ejemplo muestra cómo usar de esta herramienta en la ventana Python:
import arcpy
from arcpy import env
arcpy.CheckOutExtension('3D')
env.workspace = 'C:/data'
arcpy.ConstructSightLines_3d('observer_pt.shp', 'target.shp',
'sightlines.shp', 'BASEHEIGHT',
'TOP_HEIGHT', 'NAME')
El siguiente ejemplo muestra cómo usar esta herramienta en una secuencia de comandos independiente de Python:
'''*********************************************************************
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)