天天看点

《基于ArcGIS的Python编程秘笈(第2版)》——2.9 插入图层到地图文档

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

addlayer()函数可以用来将图层添加到地图文档中,图层添加到数据框中的位置可以使用自动排序方式放置,也可以使用bottom或top参数将图层置于顶层或底层。但是,addlayer()函数没有提供把图层插入到数据框中某个指定位置的功能。要实现该功能,可以使用insertlayer()函数。本节将介绍如何将图层添加到数据框中的指定位置。

**

2.9.1 准备工作**

addlayer()函数仅仅提供把图层添加到数据框或图层组中的功能,并且只可以使用自动排序方式自动地放置图层的位置,或者选择放置在顶层或底层。然而,使用insertlayer()函数可以准确地指定图层添加到数据框或图层组中的位置。insertlayer()函数使用一个参考图层来指定位置,新图层将会添加在指定参考图层的上方或下方。因为insertlayer()函数需要使用参考图层,所以不能对空数据框使用该函数。如图2-7所示,“district_crime_join”是参考图层,“school_districts”是将要添加的图层,使用insertlayer()函数可以把“school_districts”图层添加到“district_crime_join”图层的上方或下方。

《基于ArcGIS的Python编程秘笈(第2版)》——2.9 插入图层到地图文档

2.9.2 操作方法**

下面按步骤介绍如何使用insertlayer()函数把图层插入到数据框中。

(1)在arcmap中打开c:arcpybookch2crime_ch2.mxd。

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

(3)导入arcpy.mapping模块。

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

(5)获取对crime数据框的引用。

(6)定义参考图层。

(7)定义相对于参考图层的插入图层。

(8)将图层插入到数据框中。

(9)可以通过查看 c:arcpybookcodech2insertlayermapdocument.py解决方案文件来检查代码。

(10)运行代码。“crimes2009”要素类作为一个图层添加到数据框中,如图2-8所示。

《基于ArcGIS的Python编程秘笈(第2版)》——2.9 插入图层到地图文档

2.9.3 工作原理

首先,导入arcpy.mapping模块,获取对当前的地图文档文件和crime数据框的引用。接着,定义参考图层,通过调用listlayers()函数,传入“burglaries*”通配符参数和crime数据框参数来限制返回的图层列表,使图层列表中只包含“burglaries in 2009”图层这一项元素;使用0索引值来检索python列表中的第1个图层,并把该图层赋值给图层对象(reflayer)。然后,定义插入图层,引用cityofsanantonio地理数据库中的“crimes2009”要素类,将其赋值给新的图层对象(insertlayer)。最后,调用insertlayer()函数,传入数据框、参考图层、插入图层和before(表明插入的图层置于参考图层的上方)4个参数。结果如图2-9所示。

《基于ArcGIS的Python编程秘笈(第2版)》——2.9 插入图层到地图文档

2.9.4 拓展

图层在数据框或图层组中的位置是可以改变的。movelayer()函数提供了在数据框或图层组中移动图层位置的功能,但是图层的移动只能在同一个数据框内,而不能把一个数据框中的图层移动到另一个数据框中。同insertlayer()函数一样,movelayer()函数需要引用参考图层来改变图层的位置。