DataFrameTime (arcpy.mapping)

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

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

Обсуждение

Объект DataFrameTime предоставляет функции для двух базовых сценариев:

timeStepInterval использует класс EsriTimeDelta. Класс EsriTimeDelta является альтернативой для базового класса Python datetime.timedelta и использует для интервалов внутренние единицы измерения времени Esri (месяцы, недели и т. д.), которые не может обрабатывать базовый объект timedelta. timeStepInterval можно использовать для циклического прохода по значениям даты и времени. Если вы хотите использовать другой интервал в цикле, создайте новый объект Python timedelta или объект EsriTimeDelta (см. пример 3 ниже). Помните, что если изменить и сохранить timeWindowUnits, это повлияет на объект timeStepInterval.

Прежние версииПрежние версии:

В версиях до 10.1 свойство timeStepInterval класса DataFrameTime возвращало объект Python datetime.timedelta.

Для внедрения метки времени в изображение при экспорте фрейма данных используйте time text.

Доступно множество статей справки, касающихся времени в ArcGIS. Вот некоторые из них, которые наиболее тесно связаны с методами и свойствами объекта DataFrameTime:

Свойства

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

Текущая дата и время для фрейма данных со слоями с поддержкой времени. Такое же свойство можно найти в диалоговом окне Опции бегунка времени (Time Slider Options) в ArcMap.

DateTime
endTime
(чтение и запись)

Конечная дата и время для фрейма данных со слоями с поддержкой времени. Такое же свойство можно найти в диалоговом окне Опции бегунка времени (Time Slider Options) в ArcMap.

DateTime
startTime
(чтение и запись)

Начальная дата и время для фрейма данных со слоями с поддержкой времени. Такое же свойство можно найти в диалоговом окне Опции бегунка времени (Time Slider Options) в ArcMap.

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

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

EsriTimeDelta
timeWindow
(чтение и запись)

Временное окно, управляющее тем, сколько единиц измерения (например, дней) данных с поддержкой времени отображаются до текущего времени включительно. Например, если для параметра timeWindow задано значение 1, для timeWindowUnits выбраны недели, временным окном будет 2 недели.

Double
timeWindowUnits
(чтение и запись)

Единицы, используемые со свойствами TimeStepInterval и TimeWindow. Допустимые единицы:

  • MILLISECONDS
  • SECONDS
  • MINUTES
  • HOURS
  • DAYS
  • WEEKS
  • MONTHS
  • YEARS
  • DECADES
  • CENTURIES
String

Обзор метода

МетодОбъяснение
resetTimeExtent ()

Сбрасывает временной экстент до экстента временного окна всех слоев фрейма данных с поддержкой времени

Методы

resetTimeExtent ()

Этот метод выполняет ту же операцию, что и кнопки Мин. время (Min Time) и Макс. время (Max Time) в диалоговом окне Опции бегунка времени (Time Slider Options) в ArcMap.

Пример кода

Пример DataFrameTime 1

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

import arcpy
import os

mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "Traffic Analysis")[0]
df.time.currentTime = df.time.startTime

while df.time.currentTime <= df.time.endTime:
    # An example str(newTime) would be: "2008-12-29 02:19:59"
    # The following line splits the string at the space and takes the first 
    # item in the resulting string.  
    fileName = str(df.time.currentTime).split(" ")[0] + ".png"
    arcpy.mapping.ExportToPNG(mxd, os.path.join(r"C:\Project\Output", fileName), df)
    df.time.currentTime = df.time.currentTime + df.time.timeStepInterval
del mxd
Пример DataFrameTime 2

Следующий скрипт идентичен примеру 1 выше, но он использует начальное время, конечное время и временной интервал, которые отличаются от существующих настроек, опубликованных во фрейме данных с поддержкой времени в документе карты. Модуль datetime Python используется для создания времени и разницы времени. Кроме того, класс EsriTimeDelta также можно использовать для создания разницы времени.

import arcpy
import datetime
import os

mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "Traffic Analysis")[0]
df.time.currentTime = datetime.datetime(2008, 10, 1)
endTime = datetime.datetime(2008, 10, 31)
interval = datetime.timedelta(days=7)

while df.time.currentTime <= endTime:
    # An example str(newTime) would be: "2008-01-29 02:19:59"
    # The following line splits the string at the space and takes the first 
    # item in the resulting string.  
    fileName = str(df.time.currentTime).split(" ")[0] + ".png"
    arcpy.mapping.ExportToPNG(mxd, os.path.join(r"C:\Project\Output", fileName), df)
    df.time.currentTime = df.time.currentTime + interval
del mxd
Пример DataFrameTime 3

Следующий скрипт представляет сценарий, в котором новый файл с поддержкой времени добавляется в новый фрейм данных, не поддерживающий время. Поэтому свойства бегунка времени не задаются в документе карты. Этот скрипт добавляет слой с поддержкой времени с помощью функции AddLayer и задает нужные настройки времени, как и в скрипте выше. В этом примере временной интервал задается с помощью класса EsriTimeDelta. Кроме того, модуль datetime Python можно использовать для создания разницы времени.

import arcpy
import datetime
import os

mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "New Data Frame")[0]
timeLayer = arcpy.mapping.Layer(r"C:\Project\Data\Accidents.lyr")
arcpy.mapping.AddLayer(df, timeLayer, "AUTO_ARRANGE")
df.time.resetTimeExtent()
df.time.timeWindowUnits = "DAYS"
df.time.timeWindow = 7
df.time.currentTime = datetime.datetime(2008, 10, 1)
endTime = datetime.datetime(2008, 10, 31)
interval = arcpy.time.EsriTimeDelta(1, 'weeks')

while df.time.currentTime <= endTime:
    # An example str(newTime) would be: "2008-01-29 02:19:59"
    # The following line splits the string at the space and takes the first
    # item in the resulting string.
    fileName = str(df.time.currentTime).split(" ")[0] + ".png"
    arcpy.mapping.ExportToPNG(mxd, os.path.join(r"C:\Project\Output", fileName))
    df.time.currentTime = df.time.currentTime + interval
del mxd, timeLayer
5/10/2014