Horizonte (3D Analyst)
Resumen
Genera una clase de entidad de línea o multiparche que contiene los resultados de un análisis de horizonte o silueta.
Ilustración
Uso
El análisis se lleva a cabo desde puntos de observador por encima de una superficie funcional o virtual y también considera las entidades que se encuentren durante el análisis. Cuando se utiliza junto con otras herramientas, en especial la herramienta Barrera de horizonte, se pueden crear volúmenes de sombra y otras entidades semejantes.
La herramienta Horizonte muchas veces se utiliza junto con la herramienta Barrera de horizonte y, a veces, con la herramienta Gráfico de horizonte. Se describen otras aplicaciones de la herramienta Horizonte en Analizar amenazas a corredores y rutas de vuelo 3D.
La herramienta Horizonte se puede utilizar para crear siluetas de entidades, y estas siluetas se pueden extrudir en volúmenes de sombra con la herramienta Barrera de horizonte. Ver más información en Cómo funciona Horizonte.
Si se generan siluetas de entidades en lugar de un horizonte, entonces el uso y la descripción de algunos de los parámetros será diferente.
Si no se especifican las entidades, entonces el horizonte constará solamente de un cordón montañoso (línea del horizonte).
Si no se especifica una superficie funcional, entonces se utilizará una superficie virtual, generada a partir del radio y la elevación proporcionados.
-
Los únicos parámetros requeridos son los puntos de observador de entrada y la clase de entidad de salida (el horizonte).
-
Si se selecciona una entidad o más, entonces solo se considerarán las entidades seleccionadas; de lo contrario, se considerarán todas.
Se realiza un análisis de horizonte separado para cada punto de observador. Se genera una o más líneas para representar el horizonte tal como se ve desde cada punto de observador.
El valor de incremento de acimut afecta solo la granularidad de cualquier parte del cordón montañoso del horizonte, no la parte del horizonte que pasa a lo largo de las entidades.
Cada línea de salida tiene un valor que indica el FID de la entidad de puntos de observador utilizado para crear el horizonte que representa la línea.
Para crear un volumen de sombra de una entidad o más, por lo general se recomienda marcar la casilla de verificación Segmentar horizonte de modo que cada entidad que participe en el horizonte tenga su propia polilínea.
Para crear un volumen de sombra, por lo general se ejecuta la herramienta Horizonte con solo una entidad seleccionada por ejecución, y luego se ejecuta la herramienta Barrera de horizonte sobre la polilínea específica que representa la entidad.
La geometría de salida es una polilínea 3D.
Los siguientes campos se agregarán a la clase de entidad de salida que contiene los horizontes:
- OID: el FID del horizonte.
- Forma: la geometría del horizonte.
- OBSV_PT_ID: el FID del punto de observador que se utilizó para crear este horizonte.
- ORIGFTR_ID: FID de la entidad, como un edificio.
Los siguientes campos se agregarán a la clase de entidad de salida que contiene las siluetas:
- FID: el ID de entidad de la silueta.
- Forma: la geometría de la silueta.
- OBSV_PT_ID: el FID del punto del observador que se utilizó para crear esta silueta.
- ORIGFTR_ID: el FID de la entidad original, como un edificio, representada por esta silueta.
- DIR_VECT_X: el componente X del vector unitario que representa la dirección de los rayos de luz desde el observador.
- DIR_VECT_Y: el componente Y del vector unitario que representa la dirección de los rayos de luz desde el observador.
- DIR_VECT_Z: el componente Z del vector unitario que representa la dirección de los rayos de luz desde el observador.
- FEAT_CTR_X: el componente X del centro del sobre de la entidad original (por ejemplo, edificio).
- FEAT_CTR_Y: el componente Y del centro del sobre de la entidad.
- FEAT_CTR_Z: el componente Z del centro del sobre de la entidad.
- BHND_CTR_X: el componente X del centro del sobre de la entidad, que se movió detrás de la entidad.
- BHND_CTR_Y: el componente Y del centro del sobre de la entidad, que se movió detrás de la entidad.
- BHND_CTR_Z: el componente Z del centro del sobre de la entidad, que se movió detrás de la entidad.
- USED_PARLL: si la silueta se creó o no usando rayos de luz paralelos (1 para sí, 0 para no).
- MADE_VERT: si la silueta se hizo vertical, en lugar de perpendicular a los rayos de luz (1 para sí, 0 para no).
- MOVED_BHND: si la silueta se movió detrás de la entidad, en lugar de mantenerse en el centro (1 para sí, 0 para no).
Sintaxis
Parámetro | Explicación | Tipo de datos |
in_observer_point_features |
Los puntos 3D que representan a los observadores; se genera un horizonte separado para cada uno. | Feature Layer |
out_feature_class |
La clase de entidad de línea en la que se ubicarán los horizontes. Como alternativa, podría ser una clase de entidad multiparche para contener siluetas de entidad. | Feature Class |
in_surface (Opcional) |
La superficie funcional para determinar el horizonte. | LAS Dataset Layer; Raster Layer; TIN Layer; Terrain Layer |
virtual_surface_radius (Opcional) |
El radio de la superficie virtual para definir el horizonte en lugar de una superficie real. Debe ser un valor positivo. Se ignora si se proporciona una superficie real. El valor predeterminado es 1.000. | Linear Unit |
virtual_surface_elevation (Opcional) |
La elevación de la superficie virtual para definir el horizonte en lugar de una superficie real. Se ignora si se proporciona una superficie real. El valor predeterminado es 0. | Linear Unit |
in_features (Opcional) |
La clase de entidad para utilizar en el análisis del horizonte. Por lo común, las entidades representan obstrucciones como los edificios en la ciudad. | Feature Layer |
feature_lod (Opcional) |
El nivel de detalle en el que se debe examinar cada entidad en el análisis de horizonte.
| String |
from_azimuth_value_or_field (Opcional) |
El acimut, en grados, desde el cual debe comenzar el análisis del horizonte. El análisis comienza en el punto del observador y se mueve a la derecha, desde el valor de Acimut de origen hasta que llega al valor de Acimut de destino. Debe ser mayor que menos 360 y menor que 360. El valor predeterminado es 0. | Double; Field |
to_azimuth_value_or_field (Opcional) |
La dirección, en grados, en la que debe completarse el análisis del horizonte. El análisis comienza en el punto del observador y se mueve a la derecha, desde el valor de Acimut de origen hasta que llega al valor de Acimut de destino. No debe ser más de 360 mayor que el Acimut de origen. El valor predeterminado es 360. | Double; Field |
azimuth_increment_value_or_field (Opcional) |
El intervalo angular, en grados, en el que se debe evaluar el horizonte mientras se realiza el análisis del horizonte entre el Acimut de origen y el Acimut de destino. No debe ser mayor que el resultado del Acimut de destino menos el Acimut de origen. El valor predeterminado es 1. | Double; Field |
max_horizon_radius (Opcional) |
La distancia máxima a la cual se debe buscar un horizonte desde la ubicación de observador. Un valor de cero indica que no debe haber límite impuesto. El valor predeterminado es 0. | Double |
segment_skyline (Opcional) |
En lugar de que solo se genere una línea para representar el horizonte desde cada punto de observador, la salida se divide en varias líneas. Cada una de estas líneas representa una entidad diferente, o una extensión de horizonte entre las entidades. Si se generan siluetas, este parámetro indicará si deben usarse rayos divergentes; para las sombras del sol, por lo general, este valor debe ser no o debe estar desmarcado.
| Boolean |
scale_to_percent (Opcional) |
Indica a qué porcentaje del ángulo vertical (ángulo por encima del horizonte o ángulo de elevación) o la elevación original debe ubicarse cada vértice del horizonte. Si se escribe 0 o 100, no se realizará ningún ajuste. El valor predeterminado es 100. | Double |
scale_according_to (Opcional) |
Los valores según los cuales deben determinarse las escalas.
| String |
scale_method (Opcional) |
El vértice contra el que se realizará el cálculo.
| String |
use_curvature (Opcional) |
Indica si se debe tener en cuenta la curvatura de la tierra al generar el cordón montañoso a partir de una superficie funcional.
| Boolean |
use_refraction (Opcional) |
Indica si se debe tener en cuenta la refracción atmosférica al generar el cordón montañoso a partir de una superficie funcional. Si no se especifica ninguna superficie real, al marcar esta casilla de verificación (o al introducir REFRACTION en Python) se crearán siluetas en lugar de horizontes.
| Boolean |
refraction_factor (Opcional) |
Si se considera la refracción atmosférica, entonces aplique un valor escalar. El valor predeterminado es 0.13. | Double |
pyramid_level_resolution (Opcional) |
Si se especifica un terreno para una superficie funcional, entonces este parámetro se completa con las resoluciones residentes en el terreno. Se puede elegir una de las resoluciones con el propósito de generar la línea del horizonte. El valor predeterminado es 0, o resolución completa. | Double |
create_silhouettes (Opcional) |
Especifique si las entidades de salida representan siluetas que son visibles desde el punto del observador.
| Boolean |
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.Skyline_3d("observers.shp", "skyline_output.shp", "sample.gdb/featuredataset/terrain")
El siguiente ejemplo muestra cómo usar esta herramienta en una secuencia de comandos independiente de Python:
'''****************************************************************************
Name: Skyline Example
Description: This script demonstrates how to use the
Skyline tool.
****************************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env
try:
# Obtain a license for the ArcGIS 3D Analyst extension
arcpy.CheckOutExtension('3D')
# Set environment settings
env.workspace = 'C:/data'
# Set Local Variables
inPts = "observers.shp"
# Make sure output has a unique name
outFC = arcpy.CreateUniqueName("skyline_output.shp")
inSurface = "sample.gdb/featuredataset/terrain"
obstructionFCs = "buildings.shp; billboards.shp"
surfRad = "1000 meters"
surfElev = "100 meters"
LOD = "FULL_DETAIL"
fromAzim = 0
toAzim = 360
incAzim = 1
maxHorizRad = 0
segSky = "SEGMENT_SKYLINE"
scale = 100
scaleAcc = "ELEVATION"
scaleMethod = "SKYLINE_MAXIMUM"
# Execute Skyline
arcpy.Skyline_3d(inPts, outFC, inSurface, surfRad, surfElev,
obstructionFCs, LOD, fromAzim, toAzim, incAzim,
maxHorizRad, segSky, scale, scaleAcc, scaleMethod)
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)