ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

UpdateLayer

  • 描述
  • 讨论
  • 语法
  • 代码示例

描述

通过从源图层提取信息,更新地图文档 (.mxd) 中所有图层属性或仅更新图层的符号系统。

讨论

arcpy.mapping API 仅可访问有限数量的、可直接修改的图层属性,但所有可在图层属性对话框中找到的属性都可使用 UpdateLayer 函数进行修改。从源图层中提取信息并将其应用于需要更新的地图文档中的图层。source_layer 可以是图层 (.lyr) 文件,也可以是地图文档中的图层。UpdateLayer 是一个多功能函数,可用多个不同的方法来使用此函数以产生不同结果。

一种选择是仅更新图层的符号系统。在此情况下,update_layer 和 source_layer 必须具有相似的几何类型。根据渲染器的要求(例如,唯一值使用特定属性),属性定义也需相同。默认情况下仅更新符号系统。

另一个选择是更新所有图层属性,包括符号系统 (symbology_only=False)。例如,您可能要更新在许多地图文档中使用的图层的字段别名、选择符号系统、查询定义等等。进行此操作的简单方法是使用 ArcMap 来修改具有相应属性的图层,然后将图层输出保存到图层 (.lyr) 文件中。随后可将图层文件用作 source_layer 来更新给定图层的所有属性。更新所有属性时应谨慎,需要确保不对不希望被覆盖的属性进行更新。

UpdateLayer 也可用于交换完全不相关的图层。例如,您可用栅格图层或图层组来替换面图层。仅在 symbology_only 值设置为 False 时,才可使用此功能;否则可能与属性和/或几何类型发生冲突。当不限制符号系统时,UpdateLayer 实际上是调用 RemoveLayer 和 AddLayer 函数。

如果要更新图层文件内的图层属性,则必须首先修改地图文档中的图层属性,然后将更改保存到图层文件中。请参阅图层对象的 save 或 saveACopy 方法。

如果只需要更新图层的时间属性,请参阅 UpdateLayerTime。

语法

UpdateLayer (data_frame, update_layer, source_layer, {symbology_only})
参数说明数据类型
data_frame

对 DataFrame 对象(包含要更新的图层)的引用。

DataFrame
update_layer

表示将进行更新的现有图层的 Layer 对象。

Layer
source_layer

对 Layer 对象(包含要应用于 update_layer 的信息)的引用。

Layer
symbology_only

用于确定是否仅更新图层的符号系统或所有其他属性的布尔值。如果设置为 True,则将仅更新图层的符号系统。

(默认值为 True)

Boolean

代码示例

UpdateLayer 示例 1

以下脚本仅使用图层文件来对图层的符号系统进行更新。此图层名为 Rivers 并且在名为 County Maps 的数据框中。

import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "County Maps")[0]
updateLayer = arcpy.mapping.ListLayers(mxd, "Rivers", df)[0]
sourceLayer = arcpy.mapping.Layer(r"C:\Project\Data\Rivers.lyr")
arcpy.mapping.UpdateLayer(df, updateLayer, sourceLayer, True)
mxd.saveACopy(r"C:\Project\Project2.mxd")
del mxd, sourceLayer
UpdateLayer 示例 2

以下脚本用来自另一个地图文档(以不同比例显示不同的河流要素类)的图层组完全替换名为 Rivers 的图层。

import arcpy
#Reference layer in secondary map document
mxd2 = arcpy.mapping.MapDocument(r"C:\Project\ProjectTemplate.mxd")
df2 = arcpy.mapping.ListDataFrames(mxd2, "Layers")[0]
sourceLayer = arcpy.mapping.ListLayers(mxd2, "Rivers Group Layer", df2)[0]
#Update layer in primary map document
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "County Maps")[0]
updateLayer = arcpy.mapping.ListLayers(mxd, "Rivers", df)[0]
arcpy.mapping.UpdateLayer(df, updateLayer, sourceLayer, False)
#Save to a new map document and clear variable references
mxd.saveACopy(r"C:\Project\Project2.mxd")
del mxd, mxd2

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2021 Esri. | 隐私政策 | 法律声明