LayerTime

Zusammenfassung

The LayerTime object provides information about how time is stored and configured in time-enabled layers or tables.

Diskussion

Fields containing the time values—such as start and end time, the time-step interval, and so on—can be used for not only gaining knowledge about the time properties on a time-enabled layer or table but also for performing further data management and analysis tasks. You can also use the time information to ensure that the time specified for selecting features or rows in a table is within the start and end time range.

The enableTime method on the Layer or Table classes allows you to enable time on that object if it has time information. You should test to see if the isTimeEnabled property returns True before attempting to access LayerTime properties.

Tipp:

You can use the MapTime class to access map time settings if a MapFrame on a Layout contains time-enabled layers or tables.

Eigenschaften

EigenschaftErläuterungDatentyp
daylightSavings
(Lesen und schreiben)

Indicates whether the time values in the time field of the time-enabled layer or table were collected while observing daylight saving time rules in the input time zone.

Boolean
endTime
(Lesen und schreiben)

The end date and time for a time-enabled layer or table.

DateTime
endTimeField
(Lesen und schreiben)

The name of the field containing the end time values. Not all layers or tables use an end time field. If each feature or row has a single time field, only the startTimeField will be used and endTimeField will be None. If each feature or row has a start and end time field, both the startTimeField and endTimeField will be used.

String
startTime
(Lesen und schreiben)

The start date and time for a time-enabled layer or table.

DateTime
startTimeField
(Lesen und schreiben)

The name of the field containing the start time values. If each feature or row has a single time field, only the startTimeField will be used and endTimeField will be None. If each feature or row has a start and end time field, both the startTimeField and endTimeField will be used.

String
timeDimension
(Lesen und schreiben)

The name of the dimension containing time values when using netCDF data.

String
timeFormat
(Lesen und schreiben)

The format in which the time values were stored in the startTimeField and endTimeField. The time format is important when formulating a time query.

String
timeOffset
(Lesen und schreiben)

The time offset applied to the time values in your data.

Double
timeOffsetUnits
(Lesen und schreiben)

The time offset unit that describes the timeOffset applied to the time values in your data.

  • MILLISECONDS
  • SECONDS
  • MINUTES
  • HOURS
  • DAYS
  • WEEKS
  • MONTHS
  • YEARS
  • DECADES
  • CENTURIES
String
timeStepInterval
(Lesen und schreiben)

The time-step interval defines the granularity of the temporal data. The time-step interval can be thought of as how often the time values were recorded in your data.

Double
timeStepIntervalUnits
(Lesen und schreiben)

The time-step interval unit that describes the timeStepInterval applied to the time values in your data.

  • MILLISECONDS
  • SECONDS
  • MINUTES
  • HOURS
  • DAYS
  • WEEKS
  • MONTHS
  • YEARS
  • DECADES
  • CENTURIES
String
timeZone
(Lesen und schreiben)

The time zone for the time-enabled layer or table.

Tipp:

For a list of valid time zone strings, see ListTimeZones.

String

Codebeispiel

LayerTime example 1

The following script tests whether layers in a layer file support time and whether time properties have been set. It then uses time information (start time and end time) to calculate the time extent of a time-enabled layer.

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 example 2

The following script creates a feature class from input features valid at a certain time, while ensuring that the selection time is within the time extent (start time and end time) of the time-enabled layer.

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"))