Объемный теневой объект (3D Analyst)

Краткая информация

Создает закрытые объемы, которые моделируют тени, отбрасываемые каждым объектом, используя солнечный свет для заданной даты и времени.

Использование

  • Все входные объекты должны находиться в одном и том же регионе, так как расчеты относительного положения солнца основаны на положении первого объекта в первом классе объектов.

  • Тени, моделирующие условия восхода и захода солнца, можно создать, указав только дату в параметрах Дата и время начала и Дата и время окончания соответственно. Объемы теней не будут создаваться, если солнце не видно в указанную дату и время, или если относительное положение солнца находится под вертикальным углом 90 градусов от входных объектов.

  • Тени моделируются как закрытые мультипатчи, созданные путем выдавливания входных объектов в направлении солнечного света. Лучи света считаются параллельными и движущимися в направлении, рассчитанном для относительного положения солнца. Каждый теневой объем начинается и заканчивается в вертикальной плоскости, перпендикулярной горизонтальной проекции солнечных лучей.

  • К атрибутам теневого объема будут отнесены следующие поля:

    • SOURCE — Имя класса пространственных объектов, отбрасывающего теневой объем.
    • SOURCE_ID — Уникальный идентификатор объекта, отбрасывающего теневой объем.
    • DATE_TIME — Местная дата и время, используемые для расчета положения солнца.
    • AZIMUTH — Угол в градусах между истинным севером и перпендикулярной проекцией относительного положения солнца на земной горизонт. Значения находятся в диапазоне от 0 до 360.
    • VERT_ANGLE — Угол в градусах между горизонтом земли и относительным положением солнца, где горизонт равен 0 градусов, а 90 градусов находится в зените.
    Примечание:

    Обычно кажется, что каждый теневой объем обнимает или плотно прилегает к своему исходному элементу. Если тень не может быть сгенерирована таким образом, она будет создана от границы внешнего экстента объекта. Когда хотя бы одна тень создается таким образом, включается поле с именем HUGS_FEATR, чтобы указать, какие тени охватывают соответствующие объекты.

Параметры

ПодписьОписаниеТип данных
Входные объекты

Объекты мультипатч, которые будут использоваться для моделирования теней.

Feature Layer
Дата и время начала

Дата и время для расчета траектории солнечного света при моделировании теней.

Date
Выходной класс пространственных объектов

Класс объектов мультипатч, в котором будут храниться результирующие теневые объемы.

Feature Class
Поправки на летнее время
(Дополнительный)

Указывает, корректируется ли значение времени для перехода на летнее время (DST).

  • Не отмечено — летнее время не учитывается. Это значение по умолчанию
  • Отмечено — летнее время учитывается.
Boolean
Часовой пояс
(Дополнительный)

Часовой пояс, в котором находится участвующие входные данные. По умолчанию используется часовой пояс, установленный в операционной системе.

String
Дата и время окончания
(Дополнительный)

Конечная дата и время для расчета положения солнца. Если указана только дата, предполагается, что временем окончания является закат.

Date
Интервал итерации
(Дополнительный)

Значение, используемое для определения итерации времени от начальной даты.

Double
Единица итераций
(Дополнительный)

Единица, определяющая значение итерации, применяемое к Дате и времени начала.

  • ДниЗначение итерации будет представлять дни. Это значение по умолчанию
  • ЧасыЗначение итерации будет представлять один или несколько часов.
  • МинутыЗначение итерации будет представлять одну или несколько минут.
String

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})
ИмяОписаниеТип данных
in_features
[in_features,...]

Объекты мультипатч, которые будут использоваться для моделирования теней.

Feature Layer
start_date_and_time

Дата и время для расчета траектории солнечного света при моделировании теней.

Date
out_feature_class

Класс объектов мультипатч, в котором будут храниться результирующие теневые объемы.

Feature Class
adjusted_for_dst
(Дополнительный)

Указывает, корректируется ли значение времени для перехода на летнее время (DST).

  • ADJUSTED_FOR_DSTЛетнее время учитывается.
  • NOT_ADJUSTED_FOR_DSTЛетнее время не учитывается. Это значение по умолчанию
Boolean
time_zone
(Дополнительный)

Часовой пояс, в котором находится участвующие входные данные. По умолчанию используется часовой пояс, установленный в операционной системе.

String
end_date_and_time
(Дополнительный)

Конечная дата и время для расчета положения солнца. Если указана только дата, предполагается, что временем окончания является закат.

Date
iteration_interval
(Дополнительный)

Значение, используемое для определения итерации времени от начальной даты.

Double
iteration_unit
(Дополнительный)

Единица, определяющая значение итерации, применяемое к Дате и времени начала.

  • DAYSЗначение итерации будет представлять дни. Это значение по умолчанию
  • HOURSЗначение итерации будет представлять один или несколько часов.
  • MINUTESЗначение итерации будет представлять одну или несколько минут.
String

Пример кода

SunShadowVolume пример 1 (окно Python)

В следующем примере показано использование этого инструмента в окне 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)
SunShadowVolume пример 2 (автономный скрипт)

В следующем примере показано использование этого инструмента как автономного скрипта 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')

Информация о лицензиях

  • Basic: Обязательно 3D Analyst
  • Standard: Обязательно 3D Analyst
  • Advanced: Обязательно 3D Analyst

Связанные разделы