Краткая информация
Предоставляет доступ к слоям в файле слоя (.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) | 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) в файле слоя.
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 | Константа, которая определяет размещение перемещаемого слоя по отношению к базовому слою.
(Значение по умолчанию — 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