LayerTime (arcpy.mapping)

Резюме

Объект LayerTime предоставляет доступ к операциям управления временем для слоев с поддержкой времени.

Обсуждение

Объект LayerTime предоставляет информацию о хранении и настройке времени в слое с поддержкой времени. Свойства времени в слое можно задать на закладке Время (Time) диалогового окна Свойства слоя (Layer Properties) в ArcMap, ArcScene или ArcGlobe.

Более подробно о настройке временных свойств слоя

Свойства времени слоя доступны только для чтения. Функция UpdateLayerTime позволяет вам заменить все свойства слоя, доступные на закладке Время (Time) диалогового окна Layer Properties, с помощью файла слоя (.lyr) или другого слоя в документе карты, содержащем информацию о времени.

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

Кроме того, можно использовать несколько свойств Время слоя (LayerTime) вместе, чтобы связать данные в слое с поддержкой времени на основе времени. В третьем примере показано, как можно проходить по данным на основе времени с помощью свойства timeStepInterval и создавать поверхности на основе допустимых объектов с различными временными шагами. Учтите, что свойство timeStepInterval возвращает объект EsriTimeDelta.

Свойства

СвойствоОбъяснениеТип данных
daylightSavings
(только чтение)

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

Boolean
displayDataCumulatively
(только чтение)

Указывает, отображаются ли данные в слое с поддержкой времени с накоплением.

Boolean
endTime
(только чтение)

Получает конечную дату и время для слоя с поддержкой времени.

DateTime
endTimeField
(только чтение)

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

String
isTimeEnabled
(только чтение)

Показывает, включено ли время для слоя или нет.

Boolean
startTime
(только чтение)

Получает начальную дату и время для слоя с поддержкой времени.

DateTime
startTimeField
(только чтение)

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

String
timeFormat
(только чтение)

Формат, в котором значения времени хранились в поле входного времени. Формат времени важен при формировании запроса времени.

String
timeOffset
(только чтение)

Временное смещение, применяемое к значениям времени в ваших данных. Это значение – это объект EsriTimeDelta, который используется для итерации по периоду времени (например, 2 дня, 1 месяц и т. д.).

EsriTimeDelta
timeStepInterval
(только чтение)

Временной интервал определяет степень детализации временных данных. Временной интервал можно представить как частоту записи значений времени в данных. Это значение – это объект EsriTimeDelta, который используется для итерации по периоду времени (например, 2 дня, 1 месяц и т. д.).

EsriTimeDelta
timeZone
(только чтение)

Часовой пояс, заданный в слое с поддержкой значений времени.

String

Пример кода

Пример LayerTime 1

Следующий скрипт проверяет, поддерживает ли слой значения времени и заданы ли свойства времени. Затем он использует информацию о времени (начальное и конечное время) для вычисления временного экстента слоя с поддержкой времени.

import arcpy, datetime
lyr = arcpy.mapping.Layer(r'C:\Project\Data\Time\TemperatureWithTime.lyr')
if lyr.supports("TIME"):
    lyrTime = lyr.time
    if lyr.time.isTimeEnabled:
        startTime = lyrTime.startTime
        endTime = lyrTime.endTime
        timeDelta = endTime - startTime
        print "Start Time: " + str(startTime)
        print "End Time: " + str(endTime)
        print "Time Extent: " + str(timeDelta)
    else:
        print "No time properties have been set on the layer"
else:
    print "Time is not supported on this layer"
Пример LayerTime 2

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

import arcpy, datetime

output_GDB = r"C:\Project\Output\Output.gdb"
    
lyr = arcpy.mapping.Layer(r"C:\Project\Data\Time\TimeLayer.lyr")
lyrTime = lyr.time

# Set the time for which you want to select features in the time-enabled layer
timeSelection = datetime.datetime(2009, 9, 10, 12, 0)

# Get the start and end time of the time enabled layer
startTime = lyrTime.startTime
endTime = lyrTime.endTime

# Get the time field containing the time values associated with data in the time-enabled layer 
timeField = str(lyrTime.startTimeField)

# Check to see if the time for which you want to select features lies within the start and end time of the time enabled layer
if (timeSelection < startTime or timeSelection > endTime):
    print "The time specified for selecting features is not within the time extent of the layer"
else:
    # Formulate the time query
    timeQuery = "\"" + timeField + "\"" + "= date '" + str(timeSelection) + "'"
    # Process: Feature Class to Feature Class
    arcpy.FeatureClassToFeatureClass_conversion(lyr, output_GDB, "timeSubset", timeQuery, "", "")
Пример LayerTime 3

Следующий скрипт использует информацию о времени (начальное и конечное время, интервал временного шага) для прохода по данным в слое с поддержкой времени для создания растровых поверхностей на основе точек, допустимых на каждом временном шаге, а затем сохраняет эти растры в наборе данных мозаики.

import arcpy, datetime
# Check out the Дополнительный модуль ArcGIS Spatial Analyst for using the IDW interpolation tool
arcpy.CheckOutExtension("spatial")

# Get the layer time properties
lyr = arcpy.mapping.Layer(r"C:\Project\Data\Time\TimeLayer.lyr")
lyrTime = lyr.time

# Calculate the number of iterations based on the time extent and timestep interval
startTime = lyrTime.startTime
endTime = lyrTime.endTime
timeExtent = endTime - startTime
timeStepInterval = lyrTime.timeStepInterval

iterations = timeExtent.days / timeStepInterval.interval

# Get the time field containing the time values associated
# with the data in the time-enabled layer
startTimeField = str(lyrTime.startTimeField)

# Specify the output mosaic dataset to which the interpolated rasters will be added 
outputMosaicDataset = r"C:\Project\Output\Output.gdb\outputMosaicDataset"

i = 0
while i <= iterations:
    # Formulate the time query and increment the time by the timeStepInterval
    currentTime = str(startTime + (i*timeStepInterval))
    timeQuery = "\"" + startTimeField + "\"" + " = date '" + currentTime + "'"

    # Create an in-memory feature layer containing points that are valid at each timestep
    tempFeatureLyr = "tempTimeLayer" + str(i)
    arcpy.MakeFeatureLayer_management(lyr, tempFeatureLyr, timeQuery)

    # Create an interpolated raster surface using the points valid at each timestep
    outRaster = r"C:\Project\Output\Output.gdb\raster" + str(i)
    print outRaster
    arcpy.gp.Idw_sa(tempFeatureLyr, "Temperature", outRaster)

    # Add the newly created raster surface to a Mosaic Dataset
    arcpy.AddRastersToMosaicDataset_management(outputMosaicDataset, "Raster Dataset", outRaster)

    i = i + 1
    
# Calculate the statistics on the output Mosaic Dataset for
# classifying your data after new rasters are added   
arcpy.CalculateStatistics_management(outputMosaicDataset,"1","1","#")
9/11/2013