《基于ArcGIS的Python编程秘笈(第2版)》——2.11 更新图层属性

简介:
+关注继续查看

本节书摘来自异步社区《基于ArcGIS的Python编程秘笈(第2版)》一书中的第2章,第2.11节,作者: 【美】Eric Pimpler(派普勒) 更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.11 更新图层属性

在上节中,介绍了如何更新图层的符号系统。正如前文所述,UpdateLayer()可以用来更新图层的各种属性,如字段别名、定义查询等。本节将介绍如何使用UpdateLayer()函数来改变图层的各种属性。

2.11.1 准备工作
UpdateLayer()函数可以用来更新有限数量的图层属性。所有可在“图层属性”对话框中找到的属性都可使用UpdateLayer()函数进行修改,包括字段别名、符号系统、定义查询和标注字段等。一种常见的情况是,有一个图层被添加到多个地图文档中,而GIS分析人员需要在全部地图文档中改变所有该图层实例的某个特定属性。要实现这一功能,需要在ArcMap中修改特定的图层属性并将该图层保存为图层文件,然后把保存的图层文件作为源图层,用来更新update_layer图层的属性。在本节中,首先使用ArcMap改变图层属性,保存图层文件(.lyr),然后使用Python编写脚本,调用UpdateLayer()函数,把保存的图层属性应用到将要更新的图层中。

2.11.2 操作方法
下面按步骤介绍如何使用UpdateLayer()函数更新图层属性。

(1)在ArcMap中打开C:ArcpyBookCh2Crime_Ch2.mxd。在本节中,将要使用“Burglaries in 2009”要素类,如图2-12所示。


<a href=https://yqfile.alicdn.com/7a77e1766c8a6f71c7075853b90d71227316337b.png" >

(2)在数据框中双击“Burglaries in 2009”要素类,打开“Layer Properties”窗口,如图2-13所示。每个选项卡表示一个属性,可以在选项卡中设置相应的图层属性参数。


5fd5b4bc319cdebb6b8c98e489ef54226374558b

(3)单击“General”选项卡,在“Layer Name”文本框中输入文本,更改图层的名称为“Burglaries – No Forced Entry”,如图2-14所示。


<a href=https://yqfile.alicdn.com/b579d0c6212f963a544f305debef52ab83a13760.png" >

(4)单击“Definition Query”选项卡,设置定义查询,如图2-15所示。可以单击“Query Builder…”按钮构建定义查询,也可以直接键入查询表达式。


<a href=https://yqfile.alicdn.com/97c924d7ce811d3a23f648facdbd48e9871d533c.png" >

(5)更改OFFDESC字段的别名为Offense Description,如图2-16所示。


7f06f23ffcfb2e0d2aade088528e18bf02900905

(6)在“Layer Properties”窗口单击“Fields”选项卡,如图2-16所示,已勾选的字段是可见字段,取消勾选可以使相应字段变为不可见状态。

(7)单击“OK”按钮关闭“Layer Properties”窗口。

(8)在数据框中右击“Burglaries – No Forced Entry”图层,选择“Save as Layer File”。

(9)保存文件为C:ArcpyBookdataBurglariesNoForcedEntry.lyr。

(10)右击“Burglaries – No Forced Entry”图层,选择“Remove”。

(11)在ArcMap中单击“Add Data”按钮,从CityOfSanAntonio地理数据库添加Crimes2009要素类。该要素类将添加到数据框中,如图2-17所示。


a7dced2049baab7ebe526b4b7b22db550275a11c

(12)在ArcMap中打开“Python”窗口。

(13)导入arcpy.mapping模块。

import arcpy.mapping as mapping

(14)引用当前活动的地图文档(Crime_Ch2.mxd),把该引用赋值给变量。

mxd = mapping.MapDocument("CURRENT")

(15)获取对Crime数据框的引用。

df = mapping.ListDataFrames(mxd, "Crime")[0]

(16)定义将要更新的图层。

updateLayer = mapping.ListLayers(mxd,"Crimes2009",df)[0]

(17)定义用于更新属性的源图层。

sourceLayer =
mapping.Layer(r"C:\ArcpyBook\data\
BurglariesNoForcedEntry.lyr")

(18)调用UpdateLayer()函数更新符号系统。

mapping.UpdateLayer(df,updateLayer,sourceLayer,False)

(19)可以通过查看 C:ArcpyBookcodeCh2UpdateLayerProperties.py解决方案文件来检查代码。

(20)运行脚本。

(21)“Crimes2009”图层中与 BurglariesNoForcedEntry.lyr 文件相关联的属性将进行更新,如图2-18 所示。可以打开图层查看定义查询,还可以打开“Layer Properties”窗口,查看“Crimes2009”要素类已改变的图层属性。


000e5169590cbf4ae3d4238b2a9c4dec535b00af
相关文章
|
23小时前
|
Python
python ndarray属性分析介绍
python ndarray属性分析介绍
|
6天前
|
Python
python functools.wraps保留被装饰函数属性
python functools.wraps保留被装饰函数属性
15 0
|
8天前
|
Python
python 获取、修改 时间戳 时间属性 文件时间
python 获取、修改 时间戳 时间属性 文件时间
10 0
|
27天前
|
Python
103 python高级 - 内建属性
103 python高级 - 内建属性
8 0
|
27天前
|
Python
97 python高级 - 属性property
97 python高级 - 属性property
9 0
|
27天前
|
C++ Python
54 python - 类属性、实例属性
54 python - 类属性、实例属性
7 0
|
27天前
|
安全 C++ Python
48 python - 保护对象属性
48 python - 保护对象属性
11 0
|
1月前
|
数据挖掘 数据处理 Python
Python设置excel默认属性信息(作者、标题等)
更多内容关注我的微信公众号:python学习杂记
|
1月前
|
存储 自然语言处理 Python
Python分享之对象的属性
Python分享之对象的属性
|
3月前
|
索引 Python
【从零学习python 】63.正则表达式中的re.Match类及其属性和方法介绍
【从零学习python 】63.正则表达式中的re.Match类及其属性和方法介绍
20 0
推荐文章
更多