Layer (arcpy.mapping)
Резюме
Обеспечивает доступ к свойствам и методам слоя. Он может ссылаться на слои в документе карты (.mxd) или в файле слоя (.lyr).
Обсуждение
Объект Layer предназначен для работы со слоями, которые находятся в документе карты (.mxd) или в файле слоя (.lyr). Объект layer обеспечивает доступ ко многим свойствам слоя, которые находятся в диалоговом окне Свойства слоя (Layer Properties) в ArcMap, а также предлагает методы для сохранения файлов слоев. Функция Layer, функция ListLayers и метод listLegendItemLayers объекта Legend обеспечивают ссылки на объект Layer.
Существует большое количество различных типов слоев, и не все они поддерживают одинаковый набор свойств. Например, слой объектов поддерживает определяющий запрос, тогда как растровый слой его не поддерживает, но каталог растров поддерживает. Вместо того чтобы работать с различными, отдельными объектами слоя из всех возможных типов слоев и комбинациями свойств, можно использовать метод supports, который помогает определить, какие типы слоев какие свойства поддерживают. Метод supports дает возможность проверить, поддерживает ли слой определенное свойство, прежде чем пытаться получить или задать его значение, что уменьшает необходимость поиска ошибок.
В документе карты используются три категории слоев: векторные слои, составные слои и растровые слои. Свойства isFeatureLayer, isGroupLayer и isRasterLayer позволяют определить или изолировать большинство типов слоев, но не все. Есть несколько специализированных слоев и наборов данных, которые не входят в вышеуказанные категории: подклассы аннотаций, объекты-размеры, наборы сетевых данных, наборы данных terrain, наборы данных топологии и т.д. В этих случаях, необходимо проверить другие свойства и изолировать интересующий вас слой, прежде чем начинать работу с ним.
Не ко всем свойствам слоя можно получить доступ с помощью объекта Layer. Существует большое количество свойств в диалоговом окне Свойства слоя (Layer Properties) в ArcMap, которые не используются в среде скриптов arcpy (например, свойства отображения, псевдонимы полей, символы выделения и т.д.). Функция UpdateLayer позволяет заменить все свойства слоя, доступные через диалоговое окно Свойства слоя в ArcMap с помощью файла слоя (.lyr), который содержит соответствующие настройки.
Составные слои и другие подслои (например, классы аннотаций) обрабатываются как обычные слои. Функция ListLayers возвращает индексные значения, которые генерируются сверху вниз согласно расположению в таблице содержания или в файле слоя (.lyr). То же самое происходит, если составной слой находится внутри другого составного слоя. Например, документ карты с одним составным слоем, который содержит три подслоя, вернет список из четырех имен слоев, составного слоя и трех подслоев, входящих в составной. Есть два способа определения составного слоя. Можно проверить, поддерживает ли слой свойство isGroupLayer. Или, можно оценить свойство longName. Значение longName слоя будет содержать имя составного слоя, помимо имени слоя. Например, слой Layer1 в составном слое Group1 будет иметь значение longName, равное Group1\Layer1. Если значение name равно значению longName, слой не является составным или не входит в составной.
Некоторые слои документа карты или файла слоя могут иметь защиту паролем, поскольку имя пользователя и пароль не хранятся вместе с файлом слоя или документом карты. Документы карты, содержащие такие слои, требуют ввода пароля при открытии. В среде скриптов arcpy.mapping, по умолчанию, эти диалоговые окна не отображаются, но это означает, что слои будут рассматриваться как поврежденные источники данных. Другими словами, защищенные слои не будут отображаться в выходных данных. Если необходимо, чтобы эти слои отображались правильно, можно использовать несколько опций. Сначала, сохраните имя пользователя и пароль вместе со слоем. Затем, функция геообработки CreateArcSDEConnectionFile позволит создать файл подключения, который будет находиться в памяти. Если эта функция выполнена до открытия документа карты (.mxd) с помощью функции MapDocument или файла слоя с помощью Layer, слои SDE будут отображаться правильно. На данный момент, другого способа для защищенных веб-сервисов нет.
Переменная, которая ссылается на файл слоя на диске, включит блокировку этого файла (.lyr). Рекомендуется удалять ссылку на объект, используя команду Python del в конце скрипта или в выражении Python try/except.
Изменение источника данных слоя – это общее требование. Если два метода объекта Layer, которые помогают это сделать. Метод findAndReplaceWorkspacePath предназначен для замены части или всего пути рабочей области слоя. Метод replaceDataSource позволяет изменить рабочую область слоя и набор данных источника. Более подробное обсуждение, информация о параметрах, сценарии и примеры кодов находятся в разделе справки Обновление и установление источников данных с помощью arcpy.mapping.
В зависимости от типа символов, символы слоя можно изменить. Имеется ограниченное число типов символов, для которых доступны свойства и методы. Рекомендуется сначала проверить свойство слоя symbologyType. Если возвращается значение OTHER, символы слоя изменить нельзя. Если возвращается другое значение, не OTHER, свойство слоя symbology возвращает один из следующих классов символов, каждый со своим собственным уникальным набором методов и свойств: GraduatedColorsSymbology, GraduatedSymbolsSymbology, RasterClassifiedSymbology и UniqueValuesSymbology.
Над временными слоями могут выполняться операции управления временем. Не все типы слоев поддерживают свойство времени. Поэтому, рекомендуется сначала проверить, поддерживает ли слой работу со временем, используя метод supports. Если слой поддерживает время, доступ к свойствам времени можно получить из класса LayerTime.
Синтаксис
Параметр | Объяснение | Тип данных |
lyr_file_path |
Строка, включающая полный путь и имя существующего файла слоя (.lyr). | String |
Свойства
Свойство | Объяснение | Тип данных |
brightness (чтение и запись) |
Дает возможность получать или задавать значение яркости. Нормальная яркость по умолчанию – 0%. Введите значение от +100% до -100%. Введите знак "плюс" или "минус" слева от значения, чтобы определить положительное или отрицательное значение. Не все слои поддерживают свойство brightness (например, составные слои и слои объектов), поэтому рекомендуется проверять это заранее с помощью метода supports. | Integer |
contrast (чтение и запись) |
Дает возможность получать или задавать значение контраста. По умолчанию, нейтральный контраст – 0%. Введите значение от +100% до -100%. Введите знак "плюс" или "минус" слева от значения, чтобы определить положительное или отрицательное значение. Не все слои поддерживают свойство contrast (например, слои аннотаций или слои земельных участков), поэтому рекомендуется проверять это заранее с помощью метода supports. | Integer |
credits (чтение и запись) |
Дает возможность получать или задавать информацию об авторах документа карты и правовую информацию. | String |
datasetName (только чтение) |
Возвращает имя набора данных слоя, так как оно отображается в рабочей области, а не в Таблице содержания. Не все слои поддерживают свойство datasetName (например, веб-сервисы), поэтому рекомендуется проверять это заранее с помощью метода supports. | String |
dataSource (только чтение) |
Возвращает полный путь к источнику данных слоя. Содержит комбинацию свойств workspacePath и datasetName. Не все слои поддерживают свойство dataSource (например, классы аннотаций и веб-сервисы), поэтому рекомендуется проверять это заранее с помощью метода supports. | String |
definitionQuery (чтение и запись) |
Дает возможность получать или задавать определяющий запрос слоя. Не все слои поддерживают свойство definitionQuery (например, растровые и составные слои), поэтому рекомендуется проверять это заранее с помощью метода supports. | String |
description (чтение и запись) |
Дает возможность получать или задавать описательную информацию слоя. Не все слои поддерживают свойство description (например, слои топологии), поэтому рекомендуется проверять это заранее с помощью метода supports. | String |
isBroken (только чтение) | Возвращает True, если источник данных слоя поврежден. | Boolean |
isFeatureLayer (только чтение) | Возвращает True, если слой является векторным. | Boolean |
isGroupLayer (только чтение) | Возвращает True, если слой является составным. | Boolean |
isNetworkAnalystLayer (только чтение) | Возвращает значение True (Истина), если слой представляет собой слой дополнительного модуля Дополнительный модуль ArcGIS Network Analyst. | Boolean |
isRasterizingLayer (только чтение) | Возвращает True, если слой вызывает растеризацию других векторных слоев во фрейме данных при печати или экспорте карты. Растеризация векторных слоев во время вывода часто происходит при использовании прозрачности слоя, но также может происходить, если слой имеет символы на основе растровых изображений или прозрачность, основанную на поле. | Boolean |
isRasterLayer (только чтение) | Возвращает True, если слой является растровым. | Boolean |
isServiceLayer (только чтение) | Возвращает True, если слой является сервисом ГИС. ГИС сервисы – это автоматизированные географические информационные сервисы, которые опубликованы и доступны в Интернете с помощью стандартных технологий и протоколов. | Boolean |
labelClasses (чтение и запись) |
Обеспечивает доступ к свойствам класса надписей слоя, возвращая список объектов LabelClass. Отдельные свойства объекта LabelClass могут считываться и/или меняться и снова записываться в слой. Не все слои поддерживают свойство labelClasses (например, растровые слои и слои аннотаций), поэтому рекомендуется проверять это заранее с помощью метода supports. | LabelClass |
longName (только чтение) |
Это свойство помогает при определении принадлежности слоя к составному слою. Если слой не входит в составной, полное имя будет соответствовать имени слоя. Если слой входит в составной, полное имя будет содержать и имя составного слоя. Например, имя слоя, входящего в составной слой внутри другого составного слоя, может выглядеть примерно так Group1\Group2\LayerName. Это свойство поддерживают все типы слоев. | String |
maxScale (чтение и запись) |
Дает возможность получать или задавать границу максимального масштаба слоя. | Double |
minScale (чтение и запись) |
Дает возможность получать или задавать границу минимального масштаба слоя. | Double |
name (чтение и запись) |
Дает возможность задавать или получать имя слоя, которое отображается в таблице содержания в ArcMap. Можно использовать пробелы. Это свойство поддерживают все типы слоев. | String |
serviceProperties (только чтение) |
Предоставляет доступ к информации о подключении для слоев ArcSDE и веб-сервисов. Возвращаемый результат является парой ключевых значений словаря. Имеется два различных словаря, которые возвращаются в зависимости от типа слоя. Первый – для подключений ArcSDE, второй – для всех типов слоев веб-сервисов. Словарь веб-сервисов содержит ключи, которые работают со всеми типами слоев сервисов, а также включает отдельные ключи, работающие только в определенных типах веб-сервисов (например, WMS имеет ключ WMSTitle). Перед определением специфических ключей, можно проверить ключ ServiceType с помощью скрипта, или использовать метод get, который позволяет пропускать недоступные ключи. Не все слои поддерживают свойство serviceProperties (например, слои, не относящиеся к веб-сервисам или сервисам ArcSDE), поэтому рекомендуется проверять это заранее с помощью метода supports . Ключи для словаря ArcSDE
Ключи для словаря веб-сервиса
| Dictionary |
showLabels (чтение и запись) |
Управляет отображением надписей слоя. Если задано True, надписи отображаются; если задано False, надписи не отображаются. Не все слои поддерживают свойство showLabels (например, растровые слои и слои аннотаций), поэтому рекомендуется проверять это заранее с помощью метода supports. Типы слоев, которые поддерживают свойство showLabels также поддерживают свойство labelClasses. | Boolean |
symbology (только чтение) | Возвращает ссылку на класс символов слоя. У каждого поддерживаемого класса символов слоя есть собственный уникальный набор свойств. Рекомендуется сначала определить symbologyType слоя, прежде чем менять свойства класса символов. | Object |
symbologyType (только чтение) | Возвращает строку, которая отображает тип класса символов слоя. Не все типы классов символов поддерживаются; если класс не поддерживается, возвращается ключевое слово OTHER. Список возможных значений следующий:
| Object |
time (только чтение) |
Возвращает класс LayerTime, который обеспечивает доступ к свойствам времени временных слоев. | Object |
transparency (чтение и запись) |
Дает возможность получать или задавать значение прозрачности. Это позволяет видеть нижние слои сквозь верхний. Введите 0, если не хотите использовать прозрачность слоя. Значение прозрачности более 90% обычно приводит к тому, что слой не отображается совсем. Не все слои поддерживают свойство transparency (например, слои земельных участков и подслои веб-сервисов), поэтому рекомендуется проверять это заранее с помощью метода supports. | Integer |
visible (чтение и запись) |
Управляет отображением слоя. Действует так же, как и отметка рядом с именем слоя в таблице содержания ArcMap. Если задано True, слой отображается; если задано False, слой не отображается. Не все слои поддерживают свойство visible (например, запрещенные слои веб-сервиса), поэтому рекомендуется проверять это заранее с помощью метода supports. | Boolean |
workspacePath (только чтение) |
Возвращает путь к рабочей области слоя или к файлу подключения. Не все слои поддерживают свойство workspacePath (например, веб-сервисы), поэтому рекомендуется проверять это заранее с помощью метода supports. | String |
Обзор метода
Метод | Объяснение |
findAndReplaceWorkspacePath (find_workspace_path, replace_workspace_path, {validate}) |
Находит и заменяет путь к рабочей области слоя новым путем. |
getExtent ({symbolized_extent}) |
Возвращает геометрический или символьный экстент слоя. |
getSelectedExtent ({symbolized_extent}) |
Возвращает геометрический или символьный экстент выбранных объектов. |
replaceDataSource (workspace_path, workspace_type, {dataset_name}, {validate}) |
Заменяет источник данных для слоя документа карты (.mxd) или файла слоя (.lyr). Он также предоставляет вам возможность переключать типы рабочей области (т.е. заменяет источник данных файловой базы геоданных источником данных SDE). |
save () |
Сохраняет файл слоя (.lyr). |
saveACopy (file_name, {version}) |
Сохраняет файл слоя (.lyr) с другим именем файла и, если нужно, в более ранней версии. |
supports (layer_property) |
Не все слои поддерживают одинаковый набор свойств. С помощью свойства supports можно проверить, какие свойства поддерживает слой. |
Методы
Параметр | Объяснение | Тип данных |
find_workspace_path |
Строка, содержащая путь к рабочей области или файлу подключения, который вы хотите найти. Если передана пустая строка, все пути рабочих областей будут заменены, при этом параметр replace_workspace_path будет зависеть от значения параметра the проверить. | String |
replace_workspace_path |
Строка, в которой представлен путь рабочей области или файл подключения, который необходимо заменить. | String |
validate | Если задано значение Истина (True), рабочая область обновляется, только если значением workspace_path является существующая рабочая область. Если значение недопустимо, рабочая область не заменяется. Если задано значение Ложь (False), метод задает рабочую область как replace_workspace_path независимо от ее наличия соответствий. В этом случае, если соответствий нет, это означает, что источник данных слоя поврежден. (Значение по умолчанию — True) | Boolean |
Более подробное описание, сведения о параметрах, сценарии и примеры кода см. в разделе справки Обновление и фиксирование источников данных с помощью модуля arcpy.mapping.
Параметр | Объяснение | Тип данных |
symbolized_extent |
При настройке Истина (True) возвращается символьный экстент; в противном случае возвращается геометрический экстент. Символьный экстент охватывает ту область, которую покрывают символы, так что он не выходит за границы фрейма данных. (Значение по умолчанию — True) | Boolean |
Тип данных | Объяснение |
Extent |
Метод getExtent отдает предпочтение определяющему запросу слоя, так что, если запрашивается поднабор объектов, getExtent вернет экстент только этим объектам.
Символьный экстент охватывает при построении прямоугольника экстента область символа объекта. Возвращение символьного экстента более всего подходит для картографических результатов, так как в этом случае символы не будут обрезаны по ребрам фрейма данных. Геометрический экстент наилучшим образом подходит для анализа.
Параметр | Объяснение | Тип данных |
symbolized_extent |
При настройке Истина (True) возвращается символьный экстент; в противном случае возвращается геометрический экстент. Символьный экстент охватывает ту область, которую покрывают символы, так что он не выходит за границы фрейма данных. (Значение по умолчанию — True) | Boolean |
Тип данных | Объяснение |
Extent |
Символьный экстент охватывает при построении прямоугольника экстента область символа объекта. Возвращение символьного экстента более всего подходит для картографических результатов, так как в этом случае символы не будут обрезаны по ребрам фрейма данных. Геометрический экстент наилучшим образом подходит для анализа.
Параметр | Объяснение | Тип данных |
workspace_path |
Строка, которая содержит путь рабочей области к новым данным или файлу подключения. | String |
workspace_type | Ключевое слово, представляющее тип рабочей области новых данных.
| String |
dataset_name | Строка, представляющая имя набора данных в том виде, в котором оно отображается в новой рабочей области (не имя слоя в таблице содержания). Если параметр dataset_name не указан, метод replaceDataSource попытается заменить набор данных, найдя таблицу с таким же именем, что и текущего набора данных слоя. | String |
validate | Если задано значение True, рабочая область обновляется, только если значением workspace_path является допустимая рабочая область. Если значение недопустимо, рабочая область не заменяется. Если задано значение False, метод задает источник как workspace_path независимо от допустимого соответствия. В этом случае, если соответствий нет, источник данных поврежден. (Значение по умолчанию — True) | Boolean |
Более подробное описание, сведения о параметрах, сценарии и примеры кода см. в разделе справки Обновление и фиксирование источников данных с помощью модуля arcpy.mapping.
Существует небольшое различие между файлом слоя (.lyr) и слоем карты (слоем в документе карты). Метод save работает, только когда переменная ссылается на файл слоя, и не работает со слоем карты. При загрузке слоя из файла слоя имя этого файла запоминается и используется в дальнейшем при вызове метода save. В случае обращения к слою карты имя файла изначально не задано, поэтому вместо данного метода необходимо будет использовать метод saveACopy.
Параметр | Объяснение | Тип данных |
file_name |
Строка, которая включает местоположение и имя выходного файла слоя (.lyr). | String |
version |
Строка, которая устанавливает номер версии выходных данных. По умолчанию используется значение текущей версии.
(Значение по умолчанию — None) | String |
Дает возможность сохранить файл слоя (.lyr) с другим именем файла и, если нужно, в более ранней версии. Свойства, которые не поддерживаются в более ранних версиях программного обеспечения, будут удалены из вновь сохраненного слоя.
Параметр | Объяснение | Тип данных |
layer_property |
Имя свойства слоя, которое будет проверено.
(Значение по умолчанию — name) | String |
Тип данных | Объяснение |
Boolean |
Существует много типов слоев, и не все они поддерживают одинаковый набор свойств. Например, слой объектов поддерживает определяющий запрос, тогда как растровый слой его не поддерживает, но каталог растров поддерживает. Вместо того, чтобы создавать отдельные объекты слоя для всех возможных типов слоев и комбинаций свойств, можно использовать метод support, который позволяет определить, какие свойства поддерживает тот или иной тип слоя. Метод support дает возможность проверить, поддерживается ли свойство, чтобы не пытаться получить или задать его значение в типе слоя, который его не поддерживает. Свойство supports возвращает истина, если слой поддерживает данное свойство.
Пример кода
Следующий скрипт ссылается на файл слоя (.lyr), находит все слои, называющиеся Highways, включает подписи и сохраняет результаты в новый файл слоя.
import arcpy
lyrFile = arcpy.mapping.Layer(r"C:\Project\Data\Streets.lyr")
for lyr in arcpy.mapping.ListLayers(lyrFile):
if lyr.name.lower() == "highways":
lyr.showLabels = True
lyr.saveACopy(r"C:\Project\Data\StreetsWithLabels.lyr")
del lyrFile
#Or with one less line using a wild card:
import arcpy
lyrFile = arcpy.mapping.Layer(r"C:\Project\Data\Streets.lyr")
for lyr in arcpy.mapping.ListLayers(lyrFile, "Highways"):
lyr.showLabels = True
lyr.saveACopy(r"C:\Project\Data\StreetsWithLabels.lyr")
del lyrFile
Следующий скрипт позволяет правильно отобразить защищенные слои, с помощью создания подключения SDE в памяти перед открытием документа карты, для которого требуется пароль. Этот скрипт просто задает информацию о подключении, затем экспортирует документ карты в PDF. Рекомендуется удалить эту ссылку из памяти до закрытия скрипта.
import arcpy, os
#Remove temporary connection file if it already exists
sdeFile = r"C:\Project\Output\TempSDEConnectionFile.sde"
if os.path.exists(sdeFile):
os.remove(sdeFile)
#Create temporary connection file in memory
arcpy.CreateArcSDEConnectionFile_management(r"C:\Project\Output", "TempConnection", "myServerName", "5151", "myDatabase", "DATABASE_AUTH", "myUserName", "myPassword", "SAVE_USERNAME", "myUser.DEFAULT", "SAVE_VERSION")
#Export a map document to verify that secured layers are present
mxd = arcpy.mapping.MapDocument(r"C:\Project\SDEdata.mxd")
arcpy.mapping.ExportToPDF(mxd, r"C:\Project\output\SDEdata.pdf")
os.remove(sdeFile)
del mxd
Следующий скрипт отображает имя каждого SDE или веб-сервиса вместе с информацией о сервисе. Так же, как в примере выше, поскольку некоторые слои SDE могут быть защищены паролем, создается временный файл подключения SDE. В этом примере не выводится информация о слоях, если они не являются слоями SDE или веб-сервиса.
import arcpy, os
#Remove temporary connection file if it already exists
sdeFile = r"C:\Project\Output\TempSDEConnectionFile.sde"
if os.path.exists(sdeFile):
os.remove(sdeFile)
#Create temporary connection file in memory
arcpy.CreateArcSDEConnectionFile_management(r"C:\Project\Output", "TempConnection", "myServerName", "5151", "myDatabase", "DATABASE_AUTH", "myUserName", "myPassword", "SAVE_USERNAME", "myUser.DEFAULT", "SAVE_VERSION")
#Report service properties for layers in a map that support SERVICEPROPERTIES
mxd = arcpy.mapping.MapDocument(r"C:\Project\ServerData.mxd")
for lyr in arcpy.mapping.ListLayers(mxd):
if lyr.supports("SERVICEPROPERTIES"):
servProp = lyr.serviceProperties
print "Layer name:" + lyr.name
print "-----------------------------------------------------"
if lyr.serviceProperties["ServiceType"] != "SDE":
print "Service Type: " + servProp.get('ServiceType', 'N/A')
print " URL: " + servProp.get('URL', 'N/A')
print " Connection: " + servProp.get('Connection', 'N/A')
print " Server: " + servProp.get('Server', 'N/A')
print " Cache: " + str(servProp.get('Cache', 'N/A'))
print " User Name: " + servProp.get('UserName', 'N/A')
print " Password: " + servProp.get('Password', 'N/A')
print ""
else:
print "Service Type: " + servProp.get('ServiceType', 'N/A')
print " Database: " + servProp.get('Database', 'N/A')
print " Server: " + servProp.get('Server', 'N/A')
print " Service: " + servProp.get('Service', 'N/A')
print " Version: " + servProp.get('Version', 'N/A')
print " User name: " + servProp.get('UserName', 'N/A')
print " Authentication: " + servProp.get('AuthenticationMode', 'N/A')
print ""
del mxd
Следующий скрипт изменяет символы для слоя в документе карты. Сначала он обновляет символы слоя, используя файл слоя на диске, с помощью функции UpdateLayer. Файл слоя содержит пользовательскую цветовую схему, которая применяется к слою. Затем скрипт проверяет, использует ли слой символы градуированных цветов. Наконец, скрипт меняет число свойств класса символов GraduatedColors и экспортирует полученный результат в PDF.
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "Census")[0]
lyr = arcpy.mapping.ListLayers(mxd, "StatePopulation", df)[0]
lyrFile = arcpy.mapping.Layer(r"C:\Project\LYRs\Population.lyr")
arcpy.mapping.UpdateLayer(df, lyr, lyrFile, True)
if lyr.symbologyType == "GRADUATED_COLORS":
lyr.symbology.valueField = "POP2000"
lyr.symbology.numClasses = 4
lyr.symbology.classBreakValues = [250000, 999999, 4999999, 9999999, 35000000]
lyr.symbology.classBreakLabels = ["250,000 to 999,999", "1,000,000 to 4,999,999",
"5,000,000 to 9,999,999", "10,000,000 to 35,000,000"]
arcpy.mapping.ExportToPDF(mxd, r"C:\Project\Output\StatePopulation.pdf")
del mxd, lyrFile
Следующий скрипт проверяет, поддерживает ли слой значения времени и заданы ли свойства времени. Затем он использует информацию о времени (начальное и конечное время) для вычисления временного экстента слоя с поддержкой времени.
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"