Layer

Сводка

Предоставляет доступ к базовым свойствам слоя и методам.

Описание

На слои можно ссылаться из проекта, используя метод listLayers класса Map, или из файла слоя (.lyr или .lyrx), хранящегося на диске, используя метод listLayers класса LayerFile.

Объект Layer имеет единый универсальный дизайн для работы со всеми слоями. Существует множество типов слоев, и не все они поддерживают один и тот же набор свойств. Например, векторный слой поддерживает определяющий запрос, тогда как растровый слой его не поддерживает, при этом каталог растров - поддерживает. Вместо того, чтобы работать с разными отдельными объектами слоя для всех возможных типов слоев и комбинаций свойств, есть некоторые полезные свойства, которые позволяют получить информацию о слое и поддерживаемых им свойствах. Существует множество свойств is, которые позволяют определить, подходит ли слой к общей категории: is3DLayer, isFeatureLayer, isGroupLayer, isRasterLayer и isServiceLayer.

Есть несколько специализированных слоев и наборов данных, которые не попадают ни в одну из этих общих категорий: подклассы аннотаций, объекты-размеры, наборы данных Terrain, наборы данных топологии и так далее. В этих случаях вам может потребоваться протестировать другие свойства, чтобы изолировать интересующий слой, прежде чем что-то с ним делать. Метод supports доступен, чтобы помочь определить, какой конкретный слой поддерживает какое конкретное свойство слоя. Это дает возможность проверить, поддерживает ли слой свойство, прежде чем пытаться получить или установить его значение, уменьшая необходимость в дополнительном поиске ошибок. Например, см. следующий код:

if lyr.supports("BRIGHTNESS"):
    lyr.brightness = 10

Метод listLayers Map Class возвращает значения индекса, которые генерируются сверху вниз в том виде, в каком они появляются в таблице содержания или в том виде, как они появляются в файле слоя. То же самое происходит, если составной слой находится внутри другого составного слоя. Например, карта с одним составным слоем, содержащим три подслоя, возвратит список из четырех имен слоев, при этом групповой слой будет первым, а три подслоя - вторым, третьим и четвертым. Есть два способа определения составного слоя. Во-первых, вы можете проверить, поддерживает ли слой свойство isGroupLayer. Во-вторых, вы можете оценить свойство longName. Значение слоя longName будет включать имя группы в дополнение к имени слоя. Например, слой с именем Layer1 в составном слое Group1, будет иметь значение longName Group1\Layer1. Если значение name равно значению longName, слой не находится внутри составного слоя. При работе с подслоями составных слоев свойство 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 для объектов Слой из группового слоя.

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, что выключает вытягивание слоя.

  • ABSOLUTE_HEIGHTПространственный объект вытягивается в соответствии с указанным z-значением подобно плоской вершине, независимо от z-значения самого объекта.
  • BASE_HEIGHTZ-значения вычисляется для каждой вершины основания пространственного объекта, поэтому объект вытягивается на различные z-значения, создавая многогранную вершину.
  • MAX_HEIGHTДобавляет высоту вытягивания к минимальному z-значению пространственного объекта, и объект вытягивается в плоскую вершину на данное значение.
  • MIN_HEIGHTДобавляет высоту вытягивания к минимальному z-значению пространственного объекта, и объект вытягивается в плоскую вершину на данное значение.
  • 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 для объектов Слой из группового слоя.

Возвращает список Python для объектов Слой из группового слоя.

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Создает новую выборку объектов из oidList.
  • DIFFERENCEВыбирает объекты, не входящие в текущую выборку, но находящиеся в oidList.
  • INTERSECTВыбирает объекты, входящие в текущую выборку и в oidList.
  • SYMDIFFERENCEВыбирает объекты, входящие либо в текущую выборку, либо в oidList, но не в оба списка одновременно.
  • UNIONВыбирает все объекты, входящие как в текущую выборку, так и в oidList.

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

String

Это простейший способ управления текущей выборкой слоя. Чтобы очистить выборку, воспользуйтесь методом выборки NEW с пустым списком, или без параметров.

Примечание: Списки Python можно применять для oidList, но наборы Python возвращаются методом getSelectionSet объекта Layer.

supports (layer_property)
ParameterОбъяснениеТип данных
layer_property

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

  • BRIGHTNESSЗначение яркости растрового слоя.
  • CONNECTIONPROPERTIESИнформация о подключении слоя.
  • CONTRASTЗначение контраста растрового слоя
  • DATASOURCEПуть к файлу слоя или файл подключения слоя.
  • DEFINITIONQUERYСтрока определяющего запроса слоя.
  • LONGNAMEПуть к слою, включая групповые слои, в которые он может быть вложен.
  • MAXTHRESHOLDМаксимальный порог слоя для отображения объектов.
  • MINTHRESHOLDМинимальный порог слоя для отображения объектов.
  • NAMEИмя слоя.
  • TRANSPARENCYЗначение прозрачности слоя.

(Значение по умолчанию — 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.

Пример кода

Layer, пример 1

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

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