Etiqueta | Explicación | Tipo de datos |
Entidades de entrada | Las entidades multiparche que se utilizarán para modelar las sombras. | Feature Layer |
Fecha y hora de inicio | La fecha y la hora a partir de las cuales se determinarán las posiciones del sol. Deben proporcionarse tanto una fecha como una hora, y solo las horas en las que el sol esté por encima del horizonte producirán un volumen de sombra de salida. | Date |
Clase de entidad de salida | La clase de entidad multiparche que almacenará los volúmenes de sombra resultantes. | Feature Class |
Ajustada para el horario de verano (Opcional) | Especifica si el valor de tiempo se ajustará al horario de verano (DST).
| Boolean |
Zona horaria (Opcional) | La zona horaria en la que se encuentra la entrada participante. La configuración predeterminada es la zona horaria en la cual se establece el sistema operativo.
| String |
Fecha y hora de finalización (Opcional) | La fecha y hora finales que se utilizarán para calcular la posición del sol. Se puede especificar una hora sin fecha, en cuyo caso la fecha final será la misma que la de inicio. Si se indica una fecha, también debe indicarse una hora. Solo las horas en las que el sol esté por encima del horizonte producirán un volumen de sombra de salida. | Date |
Intervalo de iteración (Opcional) | El valor que se utilizará para definir la iteración de tiempo desde la fecha de inicio. | Double |
Unidad de iteración (Opcional) | Especifica la unidad que definirá el valor de iteración que se aplica al valor del parámetro Fecha y hora de inicio.
| String |
Resumen
Crea volúmenes cerrados que modelan las sombras proyectadas por cada entidad mediante la luz solar para una fecha y hora determinadas.
Uso
Todas las entidades de entrada deben residir en la misma ubicación, ya que los cálculos de la posición relativa del sol se basan en la posición de la primera entidad de la primera clase de entidad.
Los volúmenes de sombras no se generarán si el sol no es visible en una fecha y hora dadas, o bien si la posición relativa del sol está en un ángulo vertical de 90 grados desde las entidades de entrada.
Las sombras se modelan como multiparches cerrados creados mediante la extrusión de las entidades de entrada en la dirección de la luz solar. Se considera que los rayos de luz son paralelos y viajan en la dirección calculada para la posición relativa del sol. Cada volumen de sombra comienza y termina en un plano vertical que es perpendicular a la proyección horizontal de los rayos del sol.
Los siguientes campos se atribuirán a las entidades de volumen de sombra:
- SOURCE: el nombre de la clase de entidad que proyecta el volumen de sombra.
- SOURCE_ID: el Id. único de la entidad que proyecta el volumen de sombra.
- DATE_TIME: la fecha y hora locales utilizadas para calcular la posición del sol.
- AZIMUTH: el ángulo en grados entre el norte verdadero y la proyección perpendicular de la posición relativa del sol hasta el horizonte de la Tierra. Los valores varían de 0 a 360.
- VERT_ANGLE: el ángulo en grados entre el horizonte de la Tierra y la posición relativa del sol donde el horizonte define 0 grados y 90 grados está justo encima.
Nota:
Por lo general, cada volumen de sombra parecerá que abraza o se proyecta estrechamente sobre su entidad original. Si no se puede generar ninguna sombra de esta manera, se creará a partir del límite de la extensión exterior de la entidad. Cuando se crea al menos una sombra de este modo, se incluye un campo HUGS_FEATR para indicar qué sombras abrazan a sus entidades correspondientes.
Parámetros
arcpy.ddd.SunShadowVolume(in_features, start_date_and_time, out_feature_class, {adjusted_for_dst}, {time_zone}, {end_date_and_time}, {iteration_interval}, {iteration_unit})
Nombre | Explicación | Tipo de datos |
in_features [in_features,...] | Las entidades multiparche que se utilizarán para modelar las sombras. | Feature Layer |
start_date_and_time | La fecha y la hora a partir de las cuales se determinarán las posiciones del sol. Deben proporcionarse tanto una fecha como una hora, y solo las horas en las que el sol esté por encima del horizonte producirán un volumen de sombra de salida. | Date |
out_feature_class | La clase de entidad multiparche que almacenará los volúmenes de sombra resultantes. | Feature Class |
adjusted_for_dst (Opcional) | Especifica si el valor de tiempo se ajustará al horario de verano (DST).
| Boolean |
time_zone (Opcional) | La zona horaria en la que se encuentra la entrada participante. La configuración predeterminada es la zona horaria en la cual se establece el sistema operativo.
| String |
end_date_and_time (Opcional) | La fecha y hora finales que se utilizarán para calcular la posición del sol. Se puede especificar una hora sin fecha, en cuyo caso la fecha final será la misma que la de inicio. Si se indica una fecha, también debe indicarse una hora. Solo las horas en las que el sol esté por encima del horizonte producirán un volumen de sombra de salida. | Date |
iteration_interval (Opcional) | El valor que se utilizará para definir la iteración de tiempo desde la fecha de inicio. | Double |
iteration_unit (Opcional) | Especifica la unidad que definirá el valor de iteración que se aplica al valor del parámetro start_date_and_time.
| String |
Muestra de código
En el siguiente ejemplo se muestra cómo usar esta herramienta en la ventana de Python.
arcpy.env.workspace = 'C:/data'
arcpy.ddd.SunShadowVolume('sample.fgdb/buildings',
start_date_and_time='12/25/2011 10:00 AM',
out_feature_class='shadows_dec25.shp',
adjusted_for_dst='ADJUSTED_FOR_DST',
time_zone='Eastern_Standard_Time',
end_date_and_time='12/25/2011 3:00 PM',
iteration_interval='HOURS', iteration_unit=1)
En el siguiente ejemplo se muestra cómo usar esta herramienta en un script independiente de Python.
'''*********************************************************************
Name: Model Shadows For GeoVRML Models
Description: Creates a model of the shadows cast by GeoVRML models
imported to a multipatch feature class for a range of dates
and times. A range of times from the start time and end
time can also be specified by setting the EnforceTimes
Boolean to True. This sample is designed to be used in a
script tool.
*********************************************************************'''
# Import system modules
import arcpy
from datetime import datetime, time, timedelta
#************************* Script Variables **************************
inFiles = arcpy.GetParameterAsText(0) # list of input features
spatialRef = arcpy.GetParameterAsText(1) # list of GeoVRML files
outFC = arcpy.GetParameterAsText(2) # multipatch from 3D files
inTimeZone = arcpy.GetParameterAsText(3) # time zone
startDate = arcpy.GetParameter(4) # starting date as datetime
endDate = arcpy.GetParameter(5) # ending date as datetime
dayInterval = arcpy.GetParameter(6) # day interval as long (0-365)
minInterval = arcpy.GetParameter(7) # minute interval as long (0-60)
enforceTime = arcpy.GetParameter(8) # minute interval as Boolean
outShadows = arcpy.GetParameterAsText(9) # output shadow models
outIntersection = arcpy.GetParameterAsText(10) # shadow & bldg intersection
# Function to find all possible date/time intervals for shadow modelling
def time_list():
dt_result = [startDate]
if dayInterval:
if endDate: #Defines behavior when end date is supplied
while startDate < endDate:
startDate += timedelta(days=dayInterval)
dt_result.append(startDate)
dt_result.append(endDate)
else: # Behavior when end date is not given
daymonthyear = datetime.date(startDate)
while startDate <= datetime(daymonthyear.year, 12, 31, 23, 59):
startDate += timedelta(days=dayInterval)
dt_result.append(startDate)
return dt_result
importFC = arcpy.CreateUniqueName('geovrml_import', 'in_memory')
# Import GeoVRML files to in-memory feature
arcpy.ddd.Import3DFiles(inFiles, importFC, 'ONE_FILE_ONE_FEATURE',
spatialRef, 'Z_IS_UP', 'wrl')
# Ensure that building models are closed
arcpy.ddd.EncloseMultiPatch(importFC, outFC, 0.05)
# Discard in-memory feature
arcpy.management.Delete(importFC)
dt_result = time_list()
for dt in dt_result:
if dt == dt_result[0]:
shadows = outShadows
else:
shadows = arcpy.CreateUniqueName('shadow', 'in_memory')
arcpy.ddd.SunShadowVolume(outFC, dt, shadows, 'ADJUST_FOR_DST',
inTimeZone, '', minInterval, 'MINUTES')
if dt is not dt_result[0]:
arcpy.management.Append(shadows, outShadows)
arcpy.management.Delete(shadows)
arcpy.ddd.Intersect3D(outFC, outIntersection, outShadows, 'SOLID')
Entornos
Información de licenciamiento
- Basic: Requiere 3D Analyst
- Standard: Requiere 3D Analyst
- Advanced: Requiere 3D Analyst