《基于ArcGIS的Python编程秘笈(第2版)》——2.8 添加图层到地图文档

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

2.8 添加图层到地图文档

在很多情况下都需要把图层添加到地图文档中。制图模块提供了AddLayer()函数来实现这一功能。本节将介绍如何使用AddLayer()函数把图层添加到地图文档中。

2.8.1 准备工作
arcpy.mapping模块提供了在已有的地图文档中添加图层或图层组的功能。使用ArcMap 的自动排序功能,可以自动将一个图层添加到数据框中并显示出来。这个功能本质上与ArcMap中的“Add Data”按钮实现的功能是一样的,即根据几何类型和图层权重的规则,将图层添加到数据框中的适当位置。

小技巧: 

图层不能添加到图层文件(.lyr)中。
当把图层添加到地图文档中时,该图层必须引用一个已有的图层,即能够在磁盘上的图层文件、同一个地图文档和数据框、同一个地图文档但不相同的数据框或完全不同的地图文档中找到的图层。引用的图层可以是地图文档中的图层,也可以是图层文件(.lyr)中的图层。要将图层添加到地图文档中,首先创建Layer类的实例,然后调用AddLayer()函数,传入新的图层、图层要放置的数据框和图层放置的规则等参数。

2.8.2 操作方法
下面按步骤介绍如何将图层添加到地图文档中。

(1)在ArcMap中打开C:ArcpyBookCh2Crime_Ch2.mxd。

(2)单击ArcMap“标准”工具条上的“Python”按钮。

(3)导入arcpy.mapping模块。

import arcpy.mapping as mapping

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

mxd = mapping.MapDocument("CURRENT")

(5)获取对Crime数据框的引用,它是ListDataFrames()函数返回的数据框列表中的第1个数据框。在代码的末尾指定[0]值,用来获取ListDataFrames()函数返回的数据框列表中的第1个数据框。因为列表的索引是从0开始的,所以需要使用索引值0来检索列表的第1个数据框。

df = mapping.ListDataFrames(mxd)[0]

(6)创建Layer对象,该对象引用一个图层文件(.lyr)。

layer =
mapping.Layer(r"C:\ArcpyBook\data\School_Districts.lyr")

(7)将图层添加到数据框中。

mapping.AddLayer(df,layer,"AUTO_ARRANGE")

(8)可以通过查看C:ArcpyBookcodeCh2AddLayersMapDocument.py解决方案文件来检查代码。运行脚本,School_Districts.lyr文件即可加载在数据框中,如图2-6所示。


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

2.8.3 工作原理
首先,导入arcpy.mapping模块,并获取对当前活动地图文档的引用。接着,创建一个新变量df来存储对Crime数据框的引用,该引用是通过ListDataFrames()函数返回数据框列表并使用[0]访问列表中的第1项元素(Crime数据框)来获取的。然后,创建一个 Layer 类的实例 layer,layer 变量引用存储在磁盘上的名为School_Districts. lyr的图层文件。最后,调用AddLayer()函数,传入3个参数:图层要添加到的数据框(df)、引用的图层(layer)和自动排序方式(auto-arrange)。对于第3个可选参数,可以使用AUTO_ARRANGE(默认值)自动地放置图层在数据框中的位置,也可以使用BOTTOM或TOP,指定图层放置在数据框或图层组的底层或顶层。

2.8.4 拓展
arcpy.mapping模块提供的AddLayerToGroup()函数可以把图层添加到图层组中。使用该函数可以将图层添加到图层组的顶层或底层,也可以使用自动排序方式来放置图层的位置,还可以将图层添加到一个空的图层组中。请读者注意,跟图层对象一样,图层组也不能添加到图层文件中。

图层也可以从数据框或图层组中移出。RemoveLayer()函数用来移除指定数据框中的图层或图层组。如果有两个图层的名字相同,只移除检索到的第1个图层。只有在脚本中设置迭代,才可以将两个图层都移除。

相关文章
|
20天前
|
Python
python获取pdf和word文档页数
python获取pdf和word文档页数
23 0
|
2月前
|
Python
Python函数详解:参数、返回值和文档字符串
Python函数详解:参数、返回值和文档字符串
34 0
|
3月前
|
搜索推荐 Python
【小白必看】利用Python生成个性化名单Word文档
【小白必看】利用Python生成个性化名单Word文档
31 0
|
3月前
|
机器学习/深度学习 算法 数据挖掘
巨详细的一份Python学习路径文档--如何精准的入手Python
巨详细的一份Python学习路径文档--如何精准的入手Python
61 0
|
3月前
|
搜索推荐 Python
python将txt文档中的内容按字母顺序进行排序,并存入txt中
python将txt文档中的内容按字母顺序进行排序,并存入txt中
|
4月前
|
Python
Python办公自动化之批量生成文档
Python办公自动化之批量生成文档
56 0
|
4月前
|
数据可视化 定位技术 API
python数据可视化开发(4):获取对应地址的pdf文档并分类保存到本地文件夹
python数据可视化开发(4):获取对应地址的pdf文档并分类保存到本地文件夹
44 0
|
4月前
|
Python
自动生成python工程文档
自动生成python工程文档
22 0
|
5月前
|
Python
如何查Python文档
如何查Python文档
|
5月前
|
关系型数据库 MySQL 测试技术
django基于python智能在线考试阅卷系统(源码+系统+mysql数据库+Lw文档)
随着计算机多媒体技术的发展和网络的普及。采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配合网络环境的基于python的学校对在线考试阅卷系统的平台,这样可以有效地解决基于python的在线考试阅卷系统混乱的局面。本文首先介绍了基于python的在线考试系统的发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模块图,流程图以及E-R图。然后,设计框架并根据设计的框架编写代码以实现系统的各个功能模块。最后,对初步完成的系统进行测试,主要是
219 0
推荐文章
更多