Сводка
Обеспечивает доступ к основным свойствам и методам, используемым для слоя.
Описание
На слои можно ссылаться из проекта методом listLayers класса Map или файла слоя (.lyr или .lyrx), сохраненного на диске методом listLayers класса LayerFile.
Объект Layer имеет единый общий синтаксис для работы со всеми слоями. Существует большое количество различных типов слоев, и не все они поддерживают одинаковый набор свойств. Например, векторный слой поддерживает определяющий запрос, тогда как растровый слой его не поддерживает, при этом каталог растров - поддерживает. Вместо работы с различными объектами слоя для всех возможных типов слоев и комбинаций свойств,существует ряд полезных свойств, позволяющих вам получить информацию о слое и поддерживаемых им свойствах. Есть много свойств is, позволяющих определить, относится ли слой к определенной категории: is3DLayer, isFeatureLayer, isGroupLayer, isRasterLayer и isServiceLayer.
Есть несколько специализированных слоев и наборов данных, которые не входят в вышеуказанные категории: подклассы аннотаций, объекты-размеры, наборы данных terrain, наборы данных топологии и т.д. В этих случаях, необходимо проверить другие свойства и изолировать интересующий вас слой, прежде чем начинать работу с ним. Метод supports поможет определить, поддерживает ли определенный слой определенное свойство. Он дает возможность проверить, поддерживает ли слой определенное свойство, прежде чем пытаться получить или задать его значение, что уменьшает вероятность появления ошибки. Примерif lyr.supports("BRIGHTNESS"):
lyr.brightness = 10
Метод listLayers класса Map возвращает индексные значения, которые генерируются сверху вниз согласно расположению в таблице содержания или в файле слоя . То же самое происходит, если составной слой находится внутри другого составного слоя. Например, документ карты с одним составным слоем, который содержит три подслоя, вернет список из четырех имен слоев - составной слой будет первым, а три подслоя - соответственно, вторым, третьим и четвертым. Есть два способа выявления составного слоя. Сначала можно проверить, поддерживает ли слой свойство isGroupLayer. После этого можно оценить свойство longName. Значение свойства longName будет содержать имя составного слоя, помимо имени слоя. Например, слой Layer1 в составном слое Group1 будет иметь значение longName, равное Group1\Layer1. Если значение свойства name равно значению свойства longName, слой не находится в составе группового слоя.
ArcGIS Pro Может читать файлы .lyr, но сохраняет их только в формате .lyrx. Если дана ссылка на тип файла .lyr и вызван метод save, то файл будет конвертирован в .lyrx с сохранением того же имени файла.
Изменение источника данных слоя – это общее требование. Есть метод и свойство объекта Layer, которые помогут решить эту проблему. Более подробное описание, сведения о параметрах, сценарии и примеры кода см. в разделе справки Обновление и исправление источников данных.
Свойства
Владение | Объяснение | Тип данных |
brightness (чтение и запись) | Значение яркости слоя. Нормальная яркость по умолчанию – 0%. Введите значение от +100% до -100%. Введите знак плюс или минус слева от значения для указания, является ли она выше или ниже 0. | Integer |
connectionProperties (только чтение) | Возвращает информацию о подключении к источнику данных слоя как словарь Python. | Dictionary |
contrast (чтение и запись) | Значение контраста слоя. По умолчанию нейтральный контраст – 0%. Введите значение от +100% до -100%. Введите знак плюс или минус слева от значения для указания, является ли она выше или ниже 0. | Integer |
dataSource (только чтение) | Возвращает полный путь к источнику данных слоя. Он включает полный путь к рабочей области и имя набора данных. Для слоев многопользовательских баз геоданных возвращается строка, содержащая информацию о подключении слоя. Подсказка:Слои многопользовательских баз геоданных в проекте ArcGIS Pro не хранят путь к файлу подключения к базе данных (.sde), который использовался для создания слоя. | String |
definitionQuery (чтение и запись) | Определяющий запрос слоя. | String |
is3DLayer (только чтение) | Возвращает True, если слой является 3D слоем. | Boolean |
isBasemapLayer (только чтение) | Возвращает True, если слой является слоем базовой карты. | Boolean |
isBroken (только чтение) | Возвращает True, если источник данных слоя поврежден. | Boolean |
isFeatureLayer (только чтение) | Возвращает True, если слой является векторным. | Boolean |
isGroupLayer (только чтение) | Возвращает True, если слой является составным. | Boolean |
isNetworkAnalystLayer (только чтение) | Возвращает True, если слой является слоем дополнительного модуля ArcGIS Network Analyst . | Boolean |
isNetworkDatasetLayer (только чтение) | Возвращает True, если слой является слоем набора сетевых данных дополнительного модуля ArcGIS Network Analyst . | Boolean |
isRasterLayer (только чтение) | Возвращает True, если слой является растровым. | Boolean |
isSceneLayer (только чтение) | Возвращает True, если слой является слоем сцены. | Boolean |
isWebLayer (только чтение) | Возвращает True, если слой является сервисом ГИС. ГИС сервисы – это автоматизированные географические информационные сервисы, которые опубликованы и доступны в Интернете с помощью стандартных технологий и протоколов. Примером являются базовые карты Esri. | Boolean |
longName (только чтение) | Полный путь к слою, включая структуру папок составного слоя. | String |
maxThreshold (чтение и запись) | Порог максимального масштаба слоя для 2D-карт и его максимальное расстояние над поверхностью земли для 3D-карт. Слой не будет отображаться, если степень увеличения превзошла максимальный масштаб. Для очистки максимального масштаба установите значение на 0. | Double |
metadata (чтение и запись) | Получите или настройте информацию о классе Метаданных. Обратите внимание, что настройка метаданных зависит от значения свойства isReadOnly. | Metadata |
minThreshold (чтение и запись) | Порог минимального масштаба слоя для 2D-карт и его максимальное расстояние над поверхностью земли для 3D-карт. Слой не будет отображаться, если степень уменьшения превзошла минимальный масштаб. Для очистки минимального масштаба установите значение на 0. | Double |
name (чтение и запись) | Имя слоя в том виде, в каком оно будет выглядеть в таблице содержания. Можно использовать пробелы. Является важным, чтобы все слои карты имели уникальные имена, благодаря чему на них было бы легко ссылаться по имени. | String |
showLabels (чтение и запись) | Управляет отображением надписей слоя. Если задано True, надписи отображаются; если задано False, надписи не отображаются. | Boolean |
symbology (чтение и запись) | Обеспечивает доступ к символам слоя. | Object |
transparency (чтение и запись) | Значение прозрачности слоя. Это свойство позволяет вам видеть сквозь слой. Используйте значения между 0 и 100. Значение 0 соответствует полной непрозрачности. Значение прозрачности более 90% обычно приводит к тому, что слой не отображается совсем. | Integer |
visible (чтение и запись) | Управляет отображением слоя. Если задано True, слой отображается; если задано False, слой не отображается. | Boolean |
Обзор метода
Метод | Объяснение |
extrusion ({extrusion_type}, {expression}) | Вытягивает 2D объекты слоя для отображения 3D символов. |
getDefinition (cim_version) | Получает определение слоя CIM. |
getSelectionSet () | Возвращает выборку слоя в виде набора идентификаторов объектов Python. |
listLabelClasses ({wildcard}) |
Возвращает список Python объектов LabelClass в слое. |
listLayers ({wildcard}) |
Возвращает список Python объектов Слой (Layer) в файле слоя. |
saveACopy (file_name) | Сохраняет слой в файл слоя (.lyrx). |
setDefinition (definition_object) | Настраивает определение слоя CIM. |
setSelectionSet ({oidList}, {method}) | Задает выборку слоя, используя список Object ID Python. |
supports (layer_property) | Используется для определения, поддерживает ли конкретный тип слоя свойство для объекта слоя. Не все слои поддерживают одинаковый набор свойств; свойство supports может быть использовано для тестирования, поддерживает ли слой данное свойство перед попыткой его установить. |
updateConnectionProperties (current_connection_info, new_connection_info, {auto_update_joins_and_relates}, {validate}, {ignore_case}) | Заменяет свойства подключения, используя словарь либо путь к рабочей области. |
updateLayerFromJSON (json_data) | Обновляет слой из строки JSON. |
Методы
extrusion ({extrusion_type}, {expression})
Parameter | Объяснение | Тип данных |
extrusion_type | Строка, задающая метод вытягивания. Значение по умолчанию равно NONE, что выключает вытягивание слоя.
(Значение по умолчанию — NONE) | String |
expression | Строка, которая определяет выражение вытягивания, которое предоставляет абсолютную высоту вытягивания для каждого объекта. (Значение по умолчанию — None) | String |
Вытягивание представляет собой процесс вертикального растяжения плоских 2D форм для создания 3D объекта. Это предоставляет метод создания трехмерных символов из двухмерных пространственных объектов. Полигональные и линейные объекты имеют все пять доступных опций extrusion_type; точечные объекты не используют опции MAX_HEIGHT или MIN_HEIGHT.
getDefinition (cim_version)
Parameter | Объяснение | Тип данных |
cim_version | Строка, представляющая основную версию CIM. | String |
Доступ уровня CIM к дополнительным свойствам объектов, которые появились в версии 2.4. Esri соблюдает спецификацию семантики версий. Это означает, что до следующего выпуска основной версии, например, версии 3.0, при появлении существенных изменений в API, для cim_version будет использовано значение V2. После выпуска версии 3.0 станет доступной новая опция V3. Это дает авторам скриптов Python контроль над версией CIM, которая будет использоваться во время выполнения, если есть вероятность, что будут внесены существенные изменения в новую версию.
Более подробно о работе с CIM и примеры см. Доступ к CIM в Python.
getSelectionSet ()
Это простейший способ получения текущей выборки слоя.
listLabelClasses ({wildcard})
Parameter | Объяснение | Тип данных |
wildcard | Групповой символ базируется на имени класса надписей и не является чувствительным к регистру. Для наложения ограничений на результирующий список можно использовать сочетание звездочек (*) и символов. (Значение по умолчанию — None) | String |
Тип данных | Объяснение |
List | Возвращает список Python объектов LabelClass в слое. |
Возвращает список Python объектов LabelClass в слое.
listLayers ({wildcard})
Parameter | Объяснение | Тип данных |
wildcard | Групповой символ базируется на имени слоя и не является чувствительным к регистру. Для наложения ограничений на результирующий список можно использовать сочетание звездочек (*) и символов. (Значение по умолчанию — None) | String |
Тип данных | Объяснение |
List | Возвращает список Python объектов Слой (Layer) в файле слоя. |
Возвращает список Python объектов Слой (Layer) в файле слоя.
saveACopy (file_name)
Parameter | Объяснение | Тип данных |
file_name | Строка, которая включает местоположение и имя выходного файла слоя (.lyrx). | String |
Если групповой слой будет сохранен, все слои, перечисленные ниже в таблице содержания, будут также сохранены в файл слоя (.lyrx).
setDefinition (definition_object)
Parameter | Объяснение | Тип данных |
definition_object | Объект измененного определения CIM, изначально полученный с помощью getDefinition. | Object |
Более подробно о работе с CIM и примеры см. Доступ к CIM в Python.
setSelectionSet ({oidList}, {method})
Parameter | Объяснение | Тип данных |
oidList [oidList,...] | Список Object ID Python для работы с соответствующим способом выборки объектов. (Значение по умолчанию — None) | Integer |
method | Строка, задающая используемый метод выборки.
(Значение по умолчанию — NEW) | String |
Это простейший способ управления текущей выборкой слоя. Чтобы очистить выборку, воспользуйтесь методом выборки NEW с пустым списком, или без параметров.
Примечание: Списки Python можно применять для oidList, но наборы Python возвращаются методом getSelectionSet объекта Layer.
supports (layer_property)
Parameter | Объяснение | Тип данных |
layer_property | Имя свойства слоя, которое будет проверено.
(Значение по умолчанию — name) | String |
Тип данных | Объяснение |
Boolean |
Существует много типов слоев, и не все они поддерживают одинаковый набор свойств. Например, векторный слой поддерживает определяющий запрос, тогда как растровый слой его не поддерживает, при этом каталог растров - поддерживает. Вместо того чтобы создавать отдельные объекты слоя для всех возможных типов слоев и комбинаций свойств, можно использовать метод supports, который позволяет определить, какие свойства поддерживает тот или иной тип слоя. Метод support дает возможность проверить, поддерживается ли свойство, чтобы не пытаться получить или задать его значение в типе слоя, который его не поддерживает. Свойство supports возвращает True, если слой поддерживает данное свойство.
Булевы свойства не требуют тестирования с использованием supports потому, что если свойство слоя не поддерживается для данного типа слоя, то возвращается значение False.
updateConnectionProperties (current_connection_info, new_connection_info, {auto_update_joins_and_relates}, {validate}, {ignore_case})
Parameter | Объяснение | Тип данных |
current_connection_info | Строка, представляющая собой путь к рабочей области либо словарь Python, содержащий свойства подключения к источнику, который вы собираетесь удалять. | String |
new_connection_info | Строка, представляющая собой путь к рабочей области либо словарь Python, содержащий свойства подключения с информацией о новом источнике. | String |
auto_update_joins_and_relates | Если задано значение True, способ updateConnectionProperties также обновляет подключения для соответствующих связей и соединений. (Значение по умолчанию — True) | Boolean |
validate | Если задано значение True, свойства подключения обновляются, только если значением new_connection_info является допустимое подключение. Если оно недопустимо, подключение не заменяется. При значении False все подключения будут соответствовать new_connection_info, независимо от корректности соответствия. В этом случае, если соответствий нет, источники данных повреждены. (Значение по умолчанию — True) | Boolean |
ignore_case | Определяет, будет ли поиск чувствителен к регистру. По умолчанию, запросы чувствительны к регистру. Чтобы выполнять не чувствительные к регистру запросы, задайте для ignore_case значение True. (Значение по умолчанию — False) | Boolean |
Более подробное описание, сведения о параметрах, сценарии и примеры кода см. в разделе справки Обновление и исправление источников данных.
updateLayerFromJSON (json_data)
Parameter | Объяснение | Тип данных |
json_data | Определение слоя в формате JavaScript Object Notation (JSON). См. раздел Спецификация ExportWebMap JSON для получения подробной информации. ArcGIS API for JavaScript и ArcGIS Web AppBuilder позволяют получить эту строку JSON из веб-приложения. Определение слоя – это поднабор webmap_json, используемый в функции ConvertWebMapToArcGISProject. Вам не нужно создавать веб-карту JSON; это сделают интерфейсы API. Однако вам необходимо извлечь определение слоя из полного webmap_json. | String |
Эта функция предназначена для использования в веб-инструменте, где функция ConvertWebMapToArcGISProject применяется в приложениях для печати веб-карт, поддерживающих изменение способа отображения (или других свойств) динамических слоев веб-сервисов. Если ваши сервисы геообработки заменяют слои сервиса промежуточным векторными слоями после запуска ConvertWebMapToArcGISProject, updateLayerFromJSON применит метод отображения (или другие свойства слоя), как указано в webmap_json для соответствующих промежуточных векторных слоев в шаблоне документа карты. Дополнительная информация и пример кода находятся в разделе ConvertWebMapToArcGISProject.
Пример кода
Следующий скрипт выводит на экран название каждой карты проекта и перечисляет названия слоев каждой из карт. Кроме того, скрипт добавляет префикс (BROKEN) к имени слоя, если источник его данных потерян.
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\YosemiteNP\Yosemite.aprx")
for m in aprx.listMaps():
print("Map: {0} Layers".format(m.name))
for lyr in m.listLayers():
if lyr.isBroken:
print("(BROKEN) " + lyr.name)
else:
print(" " + lyr.name)
del aprx
Следующий скрипт очищает все определяющие запросы слоев и выключает подписи всех слоев карты Yosemite National Park.
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\YosemiteNP\Yosemite.aprx")
m = aprx.listMaps("Yosemite National Park")[0]
for lyr in m.listLayers():
if lyr.supports("DEFINITIONQUERY"):
lyr.definitionQuery = ""
if lyr.supports("SHOWLABELS"):
lyr.showLabels = False
aprx.save()
del aprx