LayerTime

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

Объект LayerTime обеспечивает информацию о том, как сохраняется и настраивается время в слоях или таблицах с поддержкой времени.

Обсуждение

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

Метод enableTime на классах Layer или Table позволяет включить на том объекте время, если у него есть информация о времени. Вы должны проверить, возвращает ли свойство isTimeEnabled значение True, прежде чем пытаться получить доступ к свойствам LayerTime.

Подсказка:

Вы можете использовать класс MapTime для доступа к настройкам времени карты, если MapFrame на Layout содержит слои или таблицы с поддержкой времени.

Свойства

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

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

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

Дата и время окончания для слоя или таблицы с поддержкой времени.

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

Имя поля, содержащего значения времени окончания. Не все слои или таблицы используют поле времени окончания. Если у каждого объекта или строки есть отдельное поле времени, то будет использоваться только startTimeField, а endTimeField будет None. Если у каждого объекта или в каждой строке есть поле времени начала и окончания, то использоваться будут и startTimeField, и endTimeField.

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

Дата и время начала для слоя или таблицы с поддержкой времени.

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

Имя поля, содержащего значения времени начала. Если у каждого объекта или строки есть отдельное поле времени, то будет использоваться только startTimeField, а endTimeField будет None. Если у каждого объекта или в каждой строке есть поле времени начала и окончания, то использоваться будут и startTimeField, и endTimeField.

String
timeDimension
(чтение и запись)

Имя измерения, содержащего значения времени при использовании данных netCDF.

String
timeFormat
(чтение и запись)

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

String
timeOffset
(чтение и запись)

Смещение времени, применяемое к значениям времени в ваших данных.

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

Единица смещения времени, описывающая timeOffset, примененные к значениям времени в ваших данных.

  • MILLISECONDS
  • SECONDS
  • MINUTES
  • HOURS
  • DAYS
  • WEEKS
  • MONTHS
  • YEARS
  • DECADES
  • CENTURIES
String
timeStepInterval
(чтение и запись)

Интервал временного шага определяет степень детализации временных данных. Интервал временного шага можно представить как частоту записи значений времени в ваши данные.

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

Единица интервала временного шага, описывающая timeStepInterval, примененные к значениям времени в ваших данных.

  • MILLISECONDS
  • SECONDS
  • MINUTES
  • HOURS
  • DAYS
  • WEEKS
  • MONTHS
  • YEARS
  • DECADES
  • CENTURIES
String
timeZone
(чтение и запись)

Часовой пояс для слоя или таблицы с поддержкой времени.

Подсказка:

Список допустимых строк часового пояса см. в ListTimeZones.

String

Пример кода

LayerTime пример 1

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

import arcpy
lyrFile = arcpy.mp.LayerFile(r'C:\Projects\Time\ShipPositions.lyrx')
for lyr in lyrFile.listLayers():
    if lyr.supports('TIME'):
        if lyr.isTimeEnabled:
            lyrTime = lyr.time
            startTime = lyrTime.startTime
            endTime = lyrTime.endTime
            timeDelta = endTime - startTime
            print(f"Layer: {lyr.name}")
            print(f"  Start Time: {str(startTime.strftime('%m-%d-%Y'))}")
            print(f"  End Time:   {str(endTime.strftime('%m-%d-%Y'))}")
            print(f"  Time Extent: {str(timeDelta.days)} days")
        else:
            print("No time properties have been set on the layer")
    else:
        print("Time is not supported on this layer")
LayerTime пример 2

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

import arcpy, os

# Setup output location and overwrite status
arcpy.env.overwriteOutput = True
path = r"C:\Projects\Time\Ships"
output_GDB = os.path.join(path, "Ships.gdb")

# Get time information from a layer in a layer file    
lyrFile = arcpy.mp.LayerFile(os.path.join(path, "ShipPositions.lyrx"))
lyr = lyrFile.listLayers()[0]
lyrTime = lyr.time

# Set the time for which you want to select features in the time-enabled layer
fromTimeSelection = datetime.datetime(1776, 1, 1)
toTimeSelection = datetime.datetime(1777, 1, 1)

# Get the start and end time of the time enabled layer and its time field
startTime = lyrTime.startTime
endTime = lyrTime.endTime
timeField = 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 (fromTimeSelection < startTime or toTimeSelection > endTime):
    print("The time specified for selecting features is not within the time extent of the layer")
else:
    # Formulate the time query
    timeQuery = f"{timeField} >= timestamp '{fromTimeSelection}' And \
                  {timeField} < timestamp '{toTimeSelection}'"
    # Process: Feature Class to Feature Class
    arcpy.conversion.FeatureClassToFeatureClass(lyr, output_GDB, "Ships_1776", timeQuery, "", "")

# Add the new layer to a map and enable time
p = arcpy.mp.ArcGISProject(os.path.join(path, "ships.aprx"))
lyt = p.listLayouts('Ships')[0]
mf = lyt.listElements('MAPFRAME_ELEMENT', 'NoTimeMF')[0]
m = mf.map
m.addDataFromPath(os.path.join(output_GDB, "Ships_1776"))
l = m.listLayers("Ships_1776")[0]
l.enableTime()
mt = mf.time
mt.isTimeEnabled = True

# Save a copy of the project
p.saveACopy(os.path.join(path, "ships2.aprx"))