Etiqueta | Explicación | Tipo de datos |
Entidades multiparche de entrada
| Las entidades multiparche que se utilizarán para construir los multiparches cerrados. | Feature Layer |
Clase de entidad multiparche de salida
| Las entidades multiparche cerradas de salida. | Feature Class |
Tamaño de cuadrícula
(Opcional) | La resolución que se utilizará para construir las entidades multiparche cerradas. Este valor se define utilizando las unidades lineales de la referencia espacial de la entidad de entrada. | Double |
Resumen
Crea entidades multiparche cerradas a partir de entidades multiparche abiertas.
Uso
Esta herramienta se ha diseñado para entidades multiparche que tienen una abertura en la parte inferior de la geometría. La salida cerrada se desplegará a lo largo de la entidad de entrada y oscurecerá cualquier saliente que pueda estar presente en la entidad de entrada.
Todas las entidades multiparche se evaluarán para determinar cuáles están cerradas. Las entidades que ya están cerradas se copiarán en el multiparche de salida sin ninguna modificación. La herramienta Es 3D cerrado se puede utilizar para determinar rápidamente si existe cualquier entidad multiparche sin cerrar en la clase de entidad de entrada.
Parámetros
arcpy.ddd.EncloseMultiPatch(in_features, out_feature_class, {grid_size})
Nombre | Explicación | Tipo de datos |
in_features | Las entidades multiparche que se utilizarán para construir los multiparches cerrados. | Feature Layer |
out_feature_class | Las entidades multiparche cerradas de salida. | Feature Class |
grid_size (Opcional) | La resolución que se utilizará para construir las entidades multiparche cerradas. Este valor se define utilizando las unidades lineales de la referencia espacial de la entidad de entrada. | Double |
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.EncloseMultiPatch_3d('unclosed_features.shp',
'enclosed_features.shp', 0.5)
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
Casos especiales
Información de licenciamiento
- Basic: Requiere 3D Analyst
- Standard: Requiere 3D Analyst
- Advanced: Requiere 3D Analyst