arcpy.mapping常用四大件-MapsurroundElement
arcpy.mapping常用四大件-MapsurroundElement
by 李远祥
在arcpy.mapping 中,除了数据入口MapDocument、图层Layer之外,另一重要的角色就是MapsurroundElement。MapsurroundElement直接关系的就是地图的整饰元素。只要凑齐上述的这三大件,ArcGIS的制图自动化基本上就可以实现了。
地图的整饰元素有很多,例如文本(标题及其他说明)、图例、比例尺、指北针、图片、外加图形等。利用arcpy.mapping 的MapsurroundElement类,可以做到对这些元素的布局进行精确的排布。
接下来可以看看MapsurroundElement的一些属性和方法了。严格来说,MapsurroundElement没有方法,所有的设置都是在属性当中,下面是MapsurroundElement的官方帮助截图,从截图中可以看到其主要的作用。

基本的属性设置,如整饰元素的位置、长宽级重命名都可以设置,以及一个parentDataFrameName用于识别其所在的dataframe(这个一般没什么作用,除非需要做接图表用到多个dataframe),从中可以看出,其主要功能在于整饰元素的识别及大小、位置调整。细节调整部分主要落在type上。这有点类似于上一章提到的Layer,type也是只读,但具体的可设置部分则在不同的包含对象中。其涉及到DATAFRAME_ELEMENT、GRAPHIC_ELEMENT、LEGEND_ELEMENT、MAPSURROUND_ELEMENT、PICTURE_ELEMENT、TEXT_ELEMENT这几类,全部都是继承了MapsurroundElement,所以,如果只是一般的是大小和位置操作,倒是通过name属性去识别,然后通过代码去调整元素的位置和大小。不同的类型也适当的增加一些可设置的属性,不过总体来说,可设置的属性也不多。
这几个类中,有一个非常神秘的就是DATAFRAME_ELEMENT,笔者经历了好几个版本的ArcGIS帮助,都没能查到其说明,应该是一个预留的接口,从字面上来看,估计是能够设置经纬网的,但目前还没开放,看看帮助就知道了,其他几个类别都能找到其说明,就唯独缺少它的说明。

GRAPHIC_ELEMENT 对应的就是通过【绘图】工具条绘制出来的图形,相对于MapsurroundElement基类,主要是增加了 isGroup(只读)属性,其用途,但目前作用不大,只是判读是否组合而已,连解除组合的方法都没有。方法上就是增加复制clone 和删除delete方法。
LEGEND_ELEMENT 则对应的是图例的操作,图例对象是属性和方法最多的一个子类,autoAdd、items、title。其中items是只读的,返回表示图例项目名称的字符串的列表,并不能进行修改。而title则是可读写的属性,可以直接进行设置,还有一个就是autoAdd,这个是一个布尔值,用于决定新的图层加入进来后是否添加到图例中,其实际作用就是【图例】--【属性】--【常规】中的【新图层添加到地图时向图例添加新项】

图例的方法倒是开放了不少比较有用的功能,下面几个就是不错的方法
- adjustColumnCount (column_count) : 设置图例的列数
 - listLegendItemLayers () :获取图例对应的图层列表
 - removeItem (legend_item_layer, {index}) :删除图例的某一项
 - updateItem (legend_item_layer, {legend_item_style_item}, {preserve_item_sizes}, {use_visible_extent}, {show_feature_count}, {use_ddp_extent}, {index}) :更新图例设置
 
对于图例的这些操作方法,尚算让人满意吧,当然不可能将图例转换为图形这些操作加进去,毕竟arcpy定位的是粗粒度的操作,图例转图形这些就是放在AO上去代码编辑,都是比较麻烦的。
PICTURE_ELEMENT是插入的图片对象,其中多出一项sourceImage属性,可以用来读取路径(很少人会天真的用来读取路径)和设置新的插入图片。除此之外,这个子类也没有具体的方法可以使用。
TEXT_ELEMENT则是最常用的子类,所有的文本对象,包括静态的还是动态的文本对象都可以用它进行设置。其增加了angle、fontSize和text属性,基本上可以望文生义了。常用的就是进行文本内容和文本字体的修改。在方法上同样是增加了clone 和delete的操作。
在所有的MapsurroundElement 中,眼尖点的人就会发现,没有任何的一个add或者create的字眼。":
elm.text = ""
mxd.save()
del mxd
但一般来说,极少使用这种方式来进行替换文本值的。最常见的方式是通过对象的name来标识找到,指定到具体的对象。而获取整饰元素的方法可以使用ListLayoutElements ,返回的是一个数组,再通过元素在ArcMap中设定的对象名称也就是name来确定。例如如下的代码
import arcpymxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):if elm.name == "tile_elm":elm.text = "修改后的标题"mxd.save()del mxd
可见,在arcpy.mapping.ListLayoutElements方法中,是不带通过name参数直接指定对象的,都需要通过数组去查找。此外,还必须预先对元素对象命名,如下图,则是对标题文本设置了一个名称为【tile_name】

其他整饰元素设置也是一样,其中最重要的原则就是在加入整饰元素的时候必须给一个元素名称,这是一种规范做法,不管后期是否使用arcpy进行调整。这样可以规避后期的一些修改。笔者曾经帮助过某一个用户解决过千张专题图的生产,其中一个非常重要的部分就是在后期修改整饰元素的位置,都是一些细微的操作,例如微调位置和修改文本值,如果一开始没有设置整饰元素的名称,那么后期面对上千个mxd,则是灾难性的工作。
总结:
MapsurroundElement是非常好用的整饰元素对象,在制图自动化中给与了非常高的便利性。当然,它有固定的使用模式和场景,就是需要在一开始创建好元素对象,并且设置好其元素名称。由于这些对象不能通过代码去创建,因此,利用arcpy去做地图模版,那是不合理的。MapsurroundElement只是一种便利的辅助方法。
arcpy.mapping常用四大件-MapsurroundElement的更多相关文章
- arcpy.mapping常用四大件-StyleItem
		
arcpy.mapping常用四大件-StyleItem by 李远祥 StyleItem 笔者将其归类到arcpy.mapping的四大件当中,主要是因为它的独特之处,就是其能力是直接读取.styl ...
 - arcpy.mapping常用四大件-MapDocument
		
arcpy.mapping常用四大件-MapDocument by 李远祥 点开arcpy.mapping的帮助,可以看到其有限的几个类,看起来东西不是很多,但却是非常的使用.由于arcpy定位就是粗 ...
 - arcpy.mapping常用四大件-Layer
		
arcpy.mapping常用四大件-Layer by 李远祥 图层是地图里面非常重要的组成,几乎所有的制图显示都与图层有关.首先它是连接数据与符号渲染的重要桥梁,其次在出版地图中,图层又与图例关联在 ...
 - 【281】◀▶ arcpy.mapping 常用类说明
		
arcpy.mapping 教程入门 arcpy.mapping 指导原则 按字母顺序排序的 arcpy.mpping 类列表 按字母顺序排序的 arcpy.mpping 函数列表 按字母顺序排序的 ...
 - 【282】◀▶ arcpy.mapping 常用函数说明
		
arcpy.mapping 教程入门 arcpy.mapping 指导原则 按字母顺序排序的 arcpy.mpping 类列表 按字母顺序排序的 arcpy.mpping 函数列表 按字母顺序排序的 ...
 - arcpy.mapping实战-专题图制图自动化
		
arcpy.mapping实战-专题图制图自动化 by 李远祥 最初对arcpy.mapping感兴趣是因为一次大规模的专题地图调整的需要,由于某某单位利用ArcEngine编写的专题图出图系统,出现 ...
 - 按字母顺序排序的 arcpy.mapping 类列表
		
arcpy.mapping 类可使用地图文档 (.mxd) 或图层文件 (.lyr) 中的不同对象类型的各种方法和属性.此文档可专门用作快速参考.有关详细信息,请使用链接跳转至各帮助页面. arcpy ...
 - 使用arcpy.mapping模块批量出图
		
出图是项目里常见的任务,有的项目甚至会要上百张图片,所以批量出土工具很有必要.arcpy.mapping就是ArcGIS里的出图模块,能快速完成一个出图工具. arcpy.mapping模块里常用 ...
 - xml常用四种解析方式优缺点的分析×××××
		
xml常用四种解析方式优缺点的分析 博客分类: xml 最近用得到xml的解析方式,于是就翻了翻自己的笔记同时从网上查找了资料,自己在前人的基础上总结了下,贴出来大家分享下. 首先介绍一下xml语 ...
 
随机推荐
- 自动化运维 Ansible
			
自动化运维 Ansible 特性 (1).no agents:不需要在被管控主机上安装任何客户端: (2).no server:无服务器端,使用时直接运行命令即可: (3).modules in an ...
 - Linux下hosts、host.conf、resolv.conf
			
/etc/resolv.conf 该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数. resolv.conf的关键字主要有四个,分别是: nameserver ...
 - 编写一个python脚本功能-备份
			
版本一 解决方案当我们基本完成程序的设计,我们就可以编写代码了,它是对我们的解决方案的实施.版本一例10.1 备份脚本——版本一 #!/usr/bin/python # Filename: backu ...
 - 跳舞链 Dancing Links
			
作为搜索里面的一个大头,终于刷了一部分题目了,跳舞链一般都有现成的模板来套...... 至于跳舞链的学习的话,我觉得http://www.cnblogs.com/grenet/p/3163550.ht ...
 - N-gram语言模型简单介绍
			
N-gram语言模型 考虑一个语音识别系统,假设用户说了这么一句话:"I have a gun",因为发音的相似,该语音识别系统发现如下几句话都是可能的候选:1.I have a ...
 - 关于Java通过JNI调用C 动态链接库(DLL)
			
JNI介绍 用JNI实现Java和C语言的数据传递 JNI原理分析和详细步骤截图说明 jni的JNIEnv指针和jobject指针 JNI实现回调| JNI调用JAVA函数|参数和返回值的格式 Jni ...
 - eclipse手动安装svn和maven
			
一.给Eclipse安装SVN,最常见的有两种方式:手动方式和使用安装向导方式.具体步骤如下: 方式一:手动安装 1.从官网下载site-1.6.9.zip文件,网址是:subclipse.tigri ...
 - 【View层】界面绘制
			
[引用]:http://www.jianshu.com/p/c5fc8c6b967a [View层]IOS纯代码绘制界面(一) 字数2303 阅读385 评论2 喜欢16 IOS开发中界面绘制占据了绝 ...
 - struts配置文件和国际化
			
一.加载包struts2-core-2.3.24.1.jar struts-default.xml :各种栈 org.apache.struts2 -->> default.propert ...
 - java系列--过滤器
			
在web.xml配置过滤器:过滤器一定要放在所以Servlet前面 过滤器的生命周期: 过滤器的应用: 1.编码格式 2.权限验证 3.数据库关闭