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 Слоев в файле слоя.

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})

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

Методы

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

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

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

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

Список Python объектов Layer в файле слоя.

Файл слоя может содержать один или несколько слоев. Если вы хотите сослаться на определенный слой файла слоя, то необходим использовать этот метод. Он работает так же как listLayers на карте.

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

A string that represents the workspace path or a Python dictionary that contains connection properties to the source you want to update. If an empty string or None is used in current_connection_info, all connection properties will be replaced with the new_workspace_info, depending on the value of the validate parameter.

String
new_connection_info

A string that represents the workspace path or a Python dictionary that contains connection properties with the new source information.

String
auto_update_joins_and_relates

If set to True, the updateConnectionProperties method will also update the connections for associated joins or relates.

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

Boolean
validate

If set to True, the connection properties will only be updated if the new_connection_info value is a valid connection. If it is not valid, the connection will not be replaced. If set to False, the method will set all connections to match the new_connection_info value, regardless of a valid match. In this case, if a match does not exist, the data sources would be broken.

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

Boolean
ignore_case

Determines whether searches will be case sensitive. By default, queries are case sensitive. To perform queries that are not case sensitive, set ignore_case to 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