LayerFile

摘要

可访问图层文件(.lyr.lyrx)中的图层并且可访问其他基本图层管理方法。

说明

LayerFile 类提供的方法和属性可访问图层文件中的单个图层。图层文件可包含一个或多个图层,这些图层可包括图层组。

ArcGIS Pro 应用程序可读取 .lyr.lyrx 图层文件类型。更改只能保存为 .lyrx 图层文件类型。如果要对 .lyr 文件进更改,则需要调用 saveACopy 方法。

属性

属性说明数据类型
filePath
(只读)

返回报告完全限定的图层文件路径和文件名的字符串值。

String
metadata
(可读写)

获取或设置图层文件的元数据类信息。请注意:设置元数据取决于 isReadOnly 属性值。

Metadata
version
(只读)

根据上次保存项目的时间返回版本字符串。它使用语义版本化格式:Major.Minor.Patch。

String

方法概述

方法说明
addLayer (add_layer_or_layerfile, {add_position})

用于使用基本放置选项向图层文件 (.lyrx) 添加 LayerLayerFile

addLayerToGroup (target_group_layer, add_layer_or_layerfile, {add_position})

用于使用基本放置选项向图层文件 (.lyrx) 内的现有图层组添加 LayerLayerFile 的内容。

insertLayer (reference_layer, insert_layer_or_layerfile, {insert_position})

用于通过指定位置向图层文件 (.lyrx) 添加 LayerLayerFile

listBrokenDataSources ()

返回图层文件中已与其原始数据源断开连接的 Layer 对象的 Python 列表。

listLayers ({wildcard})

返回图层文件中的 Layer 对象的 Python 列表。

listTables ({wildcard})

返回存在于 LayerFile 中的 Table 对象的 Python 列表。

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

LayerLayerFile 对象(表示要添加的单个或多个图层)的引用。

Layer
add_position

此常数用于确定添加的单个或多个图层在图层文件中的放置位置。

  • AUTO_ARRANGE基于图层权重规则和几何来自动放置单个或多个图层。
  • BOTTOM在 TOC 图层堆叠底部放置单个或多个图层。
  • TOP在 TOC 图层堆叠顶部放置单个或多个图层。

(默认值为 AUTO_ARRANGE)

String
返回值
数据类型说明
List

Layer 对象的 Python 列表。

addLayer 方法用于向图层文件添加图层或图层集合。默认 add_position 可以使用自动排列逻辑添加图层,将图层放置在地图中,这与添加数据按钮在应用程序中的工作方式相似;add_position 根据图层权重规则和几何类型放置图层。其他放置选择为放置在图层堆叠的顶部或底部。有关更精确的图层放置控制,请参阅 insertLayer 方法。

已添加的图层可以引用工程中的现有图层,或引用磁盘上的图层文件(.lyr.lyrx)。图层可以引用单个图层、含有多个子图层的图层组,或根级别的图层或图层组的集合(如果引用 .lyrx 文件)。

添加图层后,图层在内容列表 (TOC) 中的显示方式取决于源图层及其显示方式。例如,在 TOC 中,有些图层完全折叠且不显示其符号。此设置内置在图层中。如果图层折叠且保存在图层文件中,然后被添加到地图中,则通过 addLayer 添加该图层时,图层在新地图中将显示为折叠状态。

addLayerToGroup (target_group_layer, add_layer_or_layerfile, {add_position})
参数说明数据类型
target_group_layer

对现有 Layer 对象组的引用。

Layer
add_layer_or_layerfile

LayerLayerFile 对象(表示要添加的单个或多个图层)的引用。

Layer
add_position

此常数用于确定在 target_group_layer 中添加的单个或多个图层的放置位置。

  • AUTO_ARRANGE基于图层权重规则和几何来自动放置图层。
  • BOTTOM在 TOC 图层堆叠底部放置图层。
  • TOP在 TOC 图层堆叠顶部放置图层。

(默认值为 AUTO_ARRANGE)

String

addLayerToGroup 方法是向现有的空图层组添加图层或图层集合的唯一方法。默认 add_position 可以使用自动排列逻辑添加图层,将图层放置在地图中,这与添加数据按钮在应用程序中的工作方式相似;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

LayerLayerFile 对象(表示要添加的单个或多个图层)的引用。

Layer
insert_position

此常数用于确定相对于 reference_layer 的单个或多个图层的放置位置。

  • AFTER在参考图层之后或下方插入新图层。
  • BEFORE在参考图层之前或上方插入新图层。

(默认值为 BEFORE)

String

因使用了 reference_layer 来指定准确位置,insertLayer 方法可在图层文件中更为精确地定位图层。可在 reference_layer 之前或之后添加图层。

如果 reference_layer 引用的是图层文件根级别的图层,则所插入的图层会添加到根级别。如果 reference_layer 引用的是图层组中的图层,则所插入的图层将添加到该图层组中。

已插入的图层可以引用工程中的现有图层,或引用磁盘上的图层文件(.lyr.lyrx)。图层可以引用单个图层、含有多个子图层的图层组,或根级别的图层或图层组的集合(如果引用 .lyrx 文件)。

添加图层后,图层在内容列表 (TOC) 中的显示方式取决于源图层及其显示方式。例如,在 TOC 中,有些图层完全折叠且不显示其符号。此设置内置在图层中。如果图层折叠且保存在图层文件中,然后被添加到地图中,则通过 insertLayer 添加该图层时,图层在新地图中将显示为折叠状态。

listBrokenDataSources ()
返回值
数据类型说明
List

Layer 对象的 Python 列表。

listBrokenDataSources 方法始终返回 Python 列表对象,即使返回一个损坏的图层或表。

listLayers ({wildcard})
参数说明数据类型
wildcard

通配符基于图层名称且不区分大小写。星号 (*) 和字符的组合可用于帮助限制生成的列表。

(默认值为 None)

String
返回值
数据类型说明
List

返回图层文件中的 Layer 对象的 Python 列表。

返回图层文件中的 Layer 对象的 Python 列表。

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

LayerFile 中的 Table 对象的 Python 列表。

返回存在于 LayerFile 中的 Table 对象的 Python 列表。 ListTables 始终返回列表对象,即使仅返回一个表。

图层组中可能存在同名的表。 在这种情况下,可能需要使用其他属性来隔离特定图层。 例如,表的 datasourcedefinitionQueryURI 属性可用来执行此操作。 理想状态为所有表名称均唯一。

moveLayer (reference_layer, move_layer, {insert_position})
参数说明数据类型
reference_layer

表示可确定新图层移动位置的现有图层的 Layer 对象。

Layer
move_layer

Layer 对象(表示要移动的图层)的引用。

Layer
insert_position

此常数用于确定移动的图层相对于参考图层的放置位置。

  • AFTER将图层移动到参考图层的后面或下方。
  • BEFORE将图层移动到参考图层的前面或上方。

(默认值为 BEFORE)

String

moveLayer 方法可用于移动图层文件中的图层。move_layerreference_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