摘要
提供访问图层文件(.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}) |
返回图层文件中图层的 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}) | updateConnectionProperties 方法使用工作空间字典或路径替换连接属性。 |
方法
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 | 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 列表。 |
图层文件可以包含一个或多个图层。 如果想要引用图层文件中的特定图层,则需要使用此方法。 其工作原理与地图中的 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 | LayerFile 中的 Table 对象的 Python 列表。 |
返回存在于 LayerFile 中的 Table 对象的 Python 列表。 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)
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 |
有关更详细的说明、参数信息、情景和代码示例,请参阅更新和修复数据源。
代码示例
以下脚本打印图层文件中数据源损坏的单个图层的名称。
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