摘要
可访问图层文件(.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}) | |
addLayerToGroup (target_group_layer, add_layer_or_layerfile, {add_position}) | |
insertLayer (reference_layer, insert_layer_or_layerfile, {insert_position}) | |
listBrokenDataSources () | 返回图层文件中已与其原始数据源断开连接的 Layer 对象的 Python 列表。 |
listLayers ({wildcard}) | 返回图层文件中的 Layer 对象的 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 | Layer | |
add_position | 此常数用于确定添加的单个或多个图层在图层文件中的放置位置。
(默认值为 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 | Layer | |
add_position | 此常数用于确定在 target_group_layer 中添加的单个或多个图层的放置位置。
(默认值为 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 | Layer | |
insert_position | 此常数用于确定相对于 reference_layer 的单个或多个图层的放置位置。
(默认值为 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 列表。
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)
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