Краткая информация
Предоставляет доступ к слоям в файле слоя (.lyr или .lyrx), а также другим базовым методам управления слоем.
Обсуждение
Класс LayerFile предоставляет методы и свойства, дающие доступ к отдельным слоям, содержащимся в файле слоя. Файлы слоя могут содержат более одного слоя, которые, в свою очередь, могут включать группу слоев.
Приложение ArcGIS Pro может читать как тип файла .lyr, так и .lyrx. Изменения могут быть сохранены только в файле типа .lyrx. Если вы вносите изменения в .lyr, вы можете просто вызвать метод saveACopy.
Свойства
Свойство | Описание | Тип данных |
filePath (только чтение) | Возвращает строковое значение, содержащее полное имя и путь к файлу слоя. | String |
metadata (чтение и запись) | Получите или настройте информацию о классе Metadata. Обратите внимание, что настройка метаданных зависит от значения свойства isReadOnly. | Metadata |
version (только чтение) | Возвращает строку для версии на основе того, когда проект был сохранен в последний раз. Используется семантический формат версии: Major.Minor.Patch. | String |
Обзор метода
Метод | Описание |
addLayer (add_layer_or_layerfile, {add_position}) | Обеспечивает возможность добавления Layer или LayerFile в файл слоя (.lyrx) с использованием базовых опций размещения. |
addLayerToGroup (target_group_layer, add_layer_or_layerfile, {add_position}) | Обеспечивает возможность добавления Layer или содержания LayerFile к существующему составному слою в файле слоя (.lyrx) с использованием базовых опций размещения. |
insertLayer (reference_layer, insert_layer_or_layerfile, {insert_position}) | Обеспечивает возможность добавления Layer или LayerFile в файл слоя (.lyrx) с указанием местоположения. |
listBrokenDataSources () | Возвращает список объектов Python Layer в файле слоя, которые имеют поврежденные подключения к оригинальным исходным данным внутри карты. |
listLayers ({wildcard}) |
Возвращает список Python объектов Слой (Layer) в файле слоя. |
moveLayer (reference_layer, move_layer, {insert_position}) | Позволяет переместить слой или составной слой в файле слоя в заданное местоположение в блоке слоев. |
removeLayer (remove_layer) | Обеспечивает возможность удаления слоя из файла слоя. |
save () | Сохраняет ссылку на существующий файл слоя в файле .lyrx, даже если файл, на который дается ссылка, был файлом .lyr. |
saveACopy (file_name) |
Сохраняет LayerFile в новом месте или с другим именем. |
updateConnectionProperties (current_connection_info, new_connection_info, {auto_update_joins_and_relates}, {validate}, {ignore_case}) | Заменяет свойства подключения, используя словарь либо путь к рабочей области. |
Методы
addLayer (add_layer_or_layerfile, {add_position})
Параметр | Описание | Тип данных |
add_layer_or_layerfile | Ссылка на объект Layer или LayerFile представляющий слой или слои, которые должны быть добавлены. | Layer |
add_position | Константа, определяющая размещение добавленного слоя или слоев в файл слоя.
(Значение по умолчанию — AUTO_ARRANGE) | String |
Тип данных | Описание |
List | Список Python объектов Layer. |
Метод addLayer предоставляет способ добавить слой или набор слоев в файл слоя. По умолчанию add_position добавляет слои с использованием той же логики автоматического упорядочения, которая размещает слои в карте аналогично работе кнопки Добавить данные в приложении; она размещает каждый слой с учетом правил определения веса слоя и типа геометрии. Другими вариантами размещения являются либо сверху, либо снизу блока слоев. Для более точного контроля размещения слоев обратитесь к методу insertLayer.
Добавляемый слой может ссылаться на уже существующий слой в проекте, или на файл слоя (.lyr or .lyrx) на диске. Ссылка на слой может быть отдельным слоем, составным слоем со множеством подслоев или набором слоев корневого уровня и составных слоев при ссылке на файл .lyrx.
Способ отображения слоя в таблице содержания (TOC) после добавления зависит от способа отображения слоя источника. Например, некоторые слои полностью свернуты и не отображают свои символы в таблице содержания (TOC). Эта настройка сохраняется в слое. Если слой свернут, сохранен в файле слоя, а потом добавлен в карту, то слой будет свернут в новой карте при добавлении через addLayer.
addLayerToGroup (target_group_layer, add_layer_or_layerfile, {add_position})
Параметр | Описание | Тип данных |
target_group_layer | Ссылка на существующий составной объект Layer (Слой). | Layer |
add_layer_or_layerfile | Ссылка на объект Layer или LayerFile представляющий слой или слои, которые должны быть добавлены. | Layer |
add_position | Константа, определяющая размещение добавленного слоя или слоев в target_group_layer.
(Значение по умолчанию — AUTO_ARRANGE) | String |
Метод addLayerToGroup является единственным способом добавить слой или набор слоев в существующий, пустой составной слой в файле слоя. По умолчанию add_position добавляет слои с использованием той же логики автоматического упорядочения, которая размещает слои в карте аналогично работе кнопки Добавить данные в приложении; она размещает каждый слой с учетом правил определения веса слоя и типа геометрии. Другими вариантами размещения являются либо сверху, либо снизу блока слоев. Для более точного контроля размещения слоев обратитесь к методу insertLayer.
Добавляемый слой может ссылаться на уже существующий слой в проекте, или на файл слоя (.lyr или .lyrx) на диске. Ссылка на слой может быть отдельным слоем, составным слоем со множеством подслоев или набором слоев корневого уровня и составных слоев при ссылке на файл .lyrx.
Способ отображения слоя в таблице содержания (TOC) после добавления зависит от способа отображения слоя источника. Например, некоторые слои полностью свернуты и не отображают свои символы в таблице содержания (TOC). Эта настройка сохраняется в слое. Если слой свернут, сохранен в файле слоя, а потом добавлен в карту, то слой будет свернут в новой карте при добавлении через addLayerToGroup.
insertLayer (reference_layer, insert_layer_or_layerfile, {insert_position})
Параметр | Описание | Тип данных |
reference_layer | Объект Layer, соответствующий существующему слою, который определяет положение, где будет вставлен новый слой. | Layer |
insert_layer_or_layerfile | Ссылка на объект Layer или LayerFile представляющий слой или слои, которые должны быть добавлены. | Layer |
insert_position | Константа, определяющая размещение добавляемого слоя или слоев по отношению к reference_layer.
(Значение по умолчанию — BEFORE) | String |
Метод insertLayer является более точным способом позиционирования слоя в файле слоя, поскольку для указания точного положения используется reference_layer. Слой добавляется либо перед reference_layer, либо после него.
Если reference_layer ссылается на слой корневого уровня в файле слоя, то вставляемый слой будет добавлен на корневом уровне. Если reference_layer ссылается на слой внутри составного слоя, то вставляемый слой будет добавлен в группу.
Добавляемый слой может ссылаться на уже существующий слой в проекте, или на файл слоя (.lyr или .lyrx) на диске. Ссылка на слой может быть отдельным слоем, составным слоем со множеством подслоев или набором слоев корневого уровня и составных слоев при ссылке на файл .lyrx.
Способ отображения слоя в таблице содержания (TOC) после добавления зависит от способа отображения слоя источника. Например, некоторые слои полностью свернуты и не отображают свои символы в таблице содержания (TOC). Эта настройка сохраняется в слое. Если слой свернут, сохранен в файле слоя, а потом добавлен в карту, то слой будет свернут в новой карте при добавлении через insertLayer.
listBrokenDataSources ()
Тип данных | Описание |
List | Список Python объектов Layer. |
Метод listBrokenDataSources всегда возвращает объект списка Python, даже если возвращается только один поврежденный слой или таблица.
listLayers ({wildcard})
Параметр | Описание | Тип данных |
wildcard | Групповой символ базируется на имени слоя и не является чувствительным к регистру. Для наложения ограничений на результирующий список можно использовать сочетание звездочек (*) и символов. (Значение по умолчанию — None) | String |
Тип данных | Описание |
List | Возвращает список Python объектов Слой (Layer) в файле слоя. |
Возвращает список Python объектов Слой (Layer) в файле слоя.
moveLayer (reference_layer, move_layer, {insert_position})
Параметр | Описание | Тип данных |
reference_layer | Объект Layer, представляющий существующей слой, который определяет местоположение, в которое будет перемещен новый слой. | Layer |
move_layer | Ссылка на объект Layer, представляющий слой, выбираемый для перемещения. | Layer |
insert_position | Константа, которая определяет размещение перемещаемого слоя по отношению к базовому слою.
(Значение по умолчанию — BEFORE) | String |
Метод moveLayer перемещает слой в файле слое. move_layer И reference_layer должны находиться в том же слое.
removeLayer (remove_layer)
Параметр | Описание | Тип данных |
remove_layer | Ссылка на объект Layer, который представляет удаляемый слой. | Layer |
Метод removeLayer удаляет один или группу слоев из указанного файла слоя. Если указанным критериям соответствует несколько слоев, будет удален только первый слой, если только скрипт не будет повторно обрабатывать каждый слой в списке возвращенных.
save ()
Существует небольшое различие между файлом слоя (.lyr или .lyrx) и стандартным слоем карты. Метод save работает только тогда, когда переменная ссылается на файл слоя, и не будет работать со слоем карты. При загрузке слоя из файла слоя имя этого файла запоминается и используется в дальнейшем при вызове метода save. В случае обращения к слою карты имя файла изначально не задано, поэтому вместо данного метода необходимо будет использовать метод saveACopy. Если дана ссылка на тип файла .lyr и вызвано save, то он будет конвертирован в тип файла .lyrx.
saveACopy (file_name)
Параметр | Описание | Тип данных |
file_name | Строка используется для сохранения LayerFile в новом месте или с новым именем. Вы можете сохранять только файлы с расширением .lyrx. | String |
Дает опцию сохранения LayerFile с другим именем файла. Новый сохраненный слой будет сохранен как файл .lyrx.
updateConnectionProperties (current_connection_info, new_connection_info, {auto_update_joins_and_relates}, {validate}, {ignore_case})
Параметр | Описание | Тип данных |
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 |
Более подробное описание, сведения о параметрах, сценарии и примеры кода см. в разделе справки Обновление и исправление источников данных.
Пример кода
Следующий скрипт печатает имена отдельных слоев в файле слоя, у которых утерян источник данных.
import arcpy
lyrFile = arcpy.mp.LayerFile(r"C:\Projects\YosemiteNP\Yosemite.lyrx")
for lyr in lyrFile.listLayers():
if lyr.supports("datasource"):
if lyr.isBroken:
print(lyr.name)
Следующий скрипт удаляет все слои с карты с именем Yosemite National Park и добавляет слои, которые содержатся в файле слоя с именем Yosemite.lyrx.
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\YosemiteNP\Yosemite.aprx")
m = aprx.listMaps("Yosemite National Park")[0]
for lyr in m.listLayers():
m.removeLayer(lyr)
lf = arcpy.mp.LayerFile(r"C:\Projects\YosemiteNP\Yosemite.lyrx")
m.addLayer(lf)
aprx.save()
del aprx