《基于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
相关文章
|
5月前
|
人工智能 数据可视化 数据管理
ArcGIS API for Python
ArcGIS API for Python
50 0
|
5月前
|
人工智能 数据可视化 数据管理
ArcGIS API for Python
ArcGIS API for Python
43 0
ArcGIS API for Python
|
5月前
|
IDE JavaScript 前端开发
使用 PyCharm 作为你的ArcGIS Python IDE
使用 PyCharm 作为你的ArcGIS Python IDE
100 0
|
7月前
|
Python
ArcGIS将Python代码脚本创建为工具箱、自定义工具
本文介绍在ArcMap软件中,通过已有的Python脚本程序,建立新的工具箱并在其中设置自定义工具的方法~
198 0
ArcGIS将Python代码脚本创建为工具箱、自定义工具
|
8月前
|
数据可视化 数据管理 API
​​​​​​​ARCGIS API for Python进行城市区域提取
​​​​​​​ARCGIS API for Python进行城市区域提取
​​​​​​​ARCGIS API for Python进行城市区域提取
|
Python
用python偷懒Arcgis(地类编码转地类名称)
在二调中,小班的属性都是用的编码,本文以地类编码为例,如何利用python把代码转化为名称。 excel数据 这里需要整理一份分类系统表的数据,如图: python代码 # -*- coding: utf-8 -*- def getdl(j): import xlrd workbook = xlrd.
1819 0
|
定位技术 Python
《基于ArcGIS的Python编程秘笈(第2版)》——导读
本书将介绍如何使用Python语言来创建桌面ArcGIS环境下的地理处理脚本、工具和快捷方式等。并通过介绍如何使用Python语言和桌面ArcGIS来自动执行地理处理任务、管理地图文档和图层、查找和修复丢失的数据链接、编辑要素类和表中的数据等,以期能够有效地提高GIS工作人员的工作效率。
2934 0
推荐文章
更多