LayerFile

Краткая информация

Предоставляет доступ к слоям в файле слоя (.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) в файле слоя.

listTables ({wildcard})

Возвращает список Python объектов Table, которые существуют в LayerFile.

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Автоматически размещает слой или слои с учетом правил определения веса слоя и геометрии.
  • BOTTOMРазмещает слой или слои в нижней части стека слоев таблицы содержания (TOC).
  • TOPРазмещает слой или слои в верхней части стека слоев таблицы содержания (TOC).

(Значение по умолчанию — 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Автоматически размещает слой с учетом правил определения веса слоя и геометрии.
  • BOTTOMРазмещает слой в нижней части стека слоев таблицы содержания (TOC).
  • TOPРазмещает слой в верхней части стека слоев таблицы содержания (TOC).

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

  • AFTERВставляет новый слой после базового слоя или под ним.
  • BEFOREВставляет новый слой перед базовым слоем или над ним.

(Значение по умолчанию — 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) в файле слоя.

listTables ({wildcard})
ПараметрОписаниеТип данных
wildcard

A wildcard is based on the table name and is not case sensitive. A combination of asterisks (*) and characters can be used to limit the resulting list.

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

String
Возвращаемое значение
Тип данныхОписание
List

Список Python объектов Table, в LayerFile.

Возвращает список Python объектов Table, которые существуют в LayerFile. ListTables всегда возвращает объект списка, даже если возвращается только одна таблица.

Возможно, что в составном слое могут быть таблицы с тем же именем. В этом случае, возможно, потребуется использовать другие свойства для изоляции определенного слоя. Для этого можно использовать такие свойства, как таблицы datasource, definitionQuery или URI. В идеале все таблицы должны иметь неповторяющиеся имена.

moveLayer (reference_layer, move_layer, {insert_position})
ПараметрОписаниеТип данных
reference_layer

Объект Layer, представляющий существующей слой, который определяет местоположение, в которое будет перемещен новый слой.

Layer
move_layer

Ссылка на объект Layer, представляющий слой, выбираемый для перемещения.

Layer
insert_position

Константа, которая определяет размещение перемещаемого слоя по отношению к базовому слою.

  • AFTERПеремещает слой в положение за или под базовым слоем.
  • BEFOREПеремещает слой в положение перед или над базовым слоем.

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

Более подробное описание, сведения о параметрах, сценарии и примеры кода см. в разделе справки Обновление и исправление источников данных.

Пример кода

LayerFile, пример 1

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

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)
LayerFile, пример 2

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