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.

Синтаксис

Layer (lyr_file_path)
ПараметрОбъяснениеТип данных
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

  • ServiceTypeСвойство, отображающее тип сервиса. Для ArcSDE это будут только слои типа SDE.
  • СерверИмя или IP-адрес компьютера, где установлена база геоданных ArcSDE.
  • СервисИмя или номер порта процесса, работающего на сервере ArcSDE.
  • База данныхИмя корпоративной РСУБД. Не требуется при использовании Oracle.
  • Имя пользователяУчетная запись пользователя. При аутентификации средствами операционной системы остается пустым.
  • AuthenticationModeАутентификация средствами операционной системы или базы геоданных.
  • VersionВерсия базы геоданных, к которой вы подключаетесь.

Ключи для словаря веб-сервиса

  • ServiceTypeСвойство, отображающее тип сервиса. Они включают ImageServer, IMS, MapServer, TiledInternetLayer, WMS и WCS.
  • URLСвойство, отображающее URL сервиса. Если подключение к ArcGIS for Server осуществляется по локальной сети (LAN), значение будет пустым.
  • СерверСвойство, отображающее имя сервера. Если подключение к ArcGIS for Server осуществляется через Интернет (HTTP), значение будет пустым.
  • Имя пользователяСвойство, отображающее имя пользователя, используемое для доступа к защищенному сервису. Если сервис не защищен паролем, это свойство равно нулю.
  • ServiceNameТолько слои сервиса IMS. Свойство отображает имя сервиса IMS.
  • WMSNameТолько слои сервиса WMS. Свойство отображает текстовую строку для сервиса WMS, использующуюся для коммуникации между компьютерами.
  • WMSTitleТолько слои сервиса WMS. Свойство отображает строку заголовка описания сервиса WMS.
  • NameТолько слои сервиса WMS. Свойство отображает текстовую строку для слоя WMS, использующуюся для коммуникации между компьютерами.
  • TitleТолько слои сервиса WMS. Свойство отображает строку заголовка описания слоя WMS.
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 можно проверить, какие свойства поддерживает слой.

Методы

findAndReplaceWorkspacePath (find_workspace_path, replace_workspace_path, {validate})
ПараметрОбъяснениеТип данных
find_workspace_path

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

String
replace_workspace_path

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

String
validate

Если задано значение Истина (True), рабочая область обновляется, только если значением workspace_path является существующая рабочая область. Если значение недопустимо, рабочая область не заменяется. Если задано значение Ложь (False), метод задает рабочую область как replace_workspace_path независимо от ее наличия соответствий. В этом случае, если соответствий нет, это означает, что источник данных слоя поврежден.

(Значение по умолчанию — True)

Boolean

Более подробное описание, сведения о параметрах, сценарии и примеры кода см. в разделе справки Обновление и фиксирование источников данных с помощью модуля arcpy.mapping.

getExtent ({symbolized_extent})
ПараметрОбъяснениеТип данных
symbolized_extent

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

(Значение по умолчанию — True)

Boolean
Возвращено значение
Тип данныхОбъяснение
Extent

Метод getExtent отдает предпочтение определяющему запросу слоя, так что, если запрашивается поднабор объектов, getExtent вернет экстент только этим объектам.

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

getSelectedExtent ({symbolized_extent})
ПараметрОбъяснениеТип данных
symbolized_extent

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

(Значение по умолчанию — True)

Boolean
Возвращено значение
Тип данныхОбъяснение
Extent

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

replaceDataSource (workspace_path, workspace_type, {dataset_name}, {validate})
ПараметрОбъяснениеТип данных
workspace_path

Строка, которая содержит путь рабочей области к новым данным или файлу подключения.

String
workspace_type

Ключевое слово, представляющее тип рабочей области новых данных.

  • ACCESS_WORKSPACE Персональная база геоданных или рабочая область Access
  • ARCINFO_WORKSPACE Рабочая область покрытия ArcInfo
  • CAD_WORKSPACEРабочая область файла САПР
  • EXCEL_WORKSPACEРабочая область файла Excel
  • FILEGDB_WORKSPACEРабочая область файловой базы геоданных
  • Нет сжатия (NONE)Используется для пропуска параметра
  • OLEDB_WORKSPACEРабочая область базы данных OLE
  • PCCOVERAGE_WORKSPACEРабочая область покрытия PC ARC/INFO
  • RASTER_WORKSPACEРабочая область растра
  • SDE_WORKSPACEРабочая область базы геоданных SDE
  • SHAPEFILE_WORKSPACEРабочая область шейп-файла
  • TEXT_WORKSPACEРабочая область текстового файла
  • TIN_WORKSPACEРабочая область TIN
  • VPF_WORKSPACEРабочая область VPF
String
dataset_name

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

String
validate

Если задано значение True, рабочая область обновляется, только если значением workspace_path является допустимая рабочая область. Если значение недопустимо, рабочая область не заменяется. Если задано значение False, метод задает источник как workspace_path независимо от допустимого соответствия. В этом случае, если соответствий нет, источник данных поврежден.

(Значение по умолчанию — True)

Boolean

Более подробное описание, сведения о параметрах, сценарии и примеры кода см. в разделе справки Обновление и фиксирование источников данных с помощью модуля arcpy.mapping.

save ()

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

saveACopy (file_name, {version})
ПараметрОбъяснениеТип данных
file_name

Строка, которая включает местоположение и имя выходного файла слоя (.lyr).

String
version

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

  • 10.1Версия 10.1/10.2
  • 10.0Версия 10.0
  • 8.3Версия 8.3
  • 9.0Версия 9.0/9.1
  • 9.2Версия 9.2
  • 9.3Версия 9.3

(Значение по умолчанию — None)

String

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

supports (layer_property)
ПараметрОбъяснениеТип данных
layer_property

Имя свойства слоя, которое будет проверено.

  • BRIGHTNESSЗначение яркости растрового слоя
  • CONTRASTЗначение контраста растрового слоя
  • DATASETNAMEИмя набора данных слоев, как оно отображается в рабочей области
  • DATASOURCEПуть к файлу слоя или файл подключения
  • DEFINITIONQUERYСтрока определяющего запроса слоя
  • DESCRIPTIONСтрока описания слоя
  • LABELCLASSESСписок классов надписей слоя.
  • LONGNAMEПуть к слою, включая один или несколько составных слоев, в которые он может быть вложен
  • NAMEИмя слоя
  • SERVICEPROPERTIESИнформация о подключении для слоев ArcSDE и веб-сервисов.
  • SHOWLABELSБулево значение, указывающее, включены ли надписи в слое
  • SYMBOLOGYКласс символов слоя
  • SYMBOLOGYTYPEТип класса символов слоя
  • TIMEВременные свойства слоя
  • TRANSPARENCYЗначение прозрачности слоя
  • VISIBLEБулево значение, указывающее, включен ли слой в ТС
  • WORKSPACEPATHРабочая область слоя или путь к файлу подключения.

(Значение по умолчанию — name)

String
Возвращено значение
Тип данныхОбъяснение
Boolean

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

Пример кода

Layer пример 1

Следующий скрипт ссылается на файл слоя (.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
Layer пример 2

Следующий скрипт позволяет правильно отобразить защищенные слои, с помощью создания подключения 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
Layer пример 3

Следующий скрипт отображает имя каждого 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
Layer пример 4

Следующий скрипт изменяет символы для слоя в документе карты. Сначала он обновляет символы слоя, используя файл слоя на диске, с помощью функции 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
Layer пример 5

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

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"
5/10/2014