基于Arcpy的影像地图自动处理技术研究
2015-02-19余咏胜彭艳丽尹言军黄兵杰
余咏胜,彭艳丽,尹言军,黄兵杰
(1. 武汉市测绘研究院,湖北 武汉 430022; 2. 武汉市规划研究院,湖北 武汉 430014)
Research on Photographic Map Automatic Processing Technology
Based on Arcpy
YU Yongsheng,PENG Yanli,YIN Yanjun,HUANG Bingjie
基于Arcpy的影像地图自动处理技术研究
余咏胜1,彭艳丽2,尹言军1,黄兵杰1
(1. 武汉市测绘研究院,湖北 武汉 430022; 2. 武汉市规划研究院,湖北 武汉 430014)
Research on Photographic Map Automatic Processing Technology
Based on Arcpy
YU Yongsheng,PENG Yanli,YIN Yanjun,HUANG Bingjie
摘要:针对影像地图的制作过程中存在重复作业、效率不高等问题,采用基于Arcpy站点包实现了影像地图的自动处理,该方法通过地图模板制作影像地图标准文件,在此基础上进行图面要素和注记信息的自动处理,实现无用户参与情况下高效地制作影像地图。
关键词:Arcpy;影像地图;地图模板;自动制图
一、引言
影像地图是以数字正射影像图(DOM)为基础,根据一定的数学规则、按照一定的比例尺将基础地理信息和地图专题信息以符号、注记等形式综合表示在图面上的一种地图形式。影像地图既包含丰富的影像信息内容,又能保证地形图的整饰和几何精度,在城市规划、国土资源管理、环境保护和重大工程建设等领域得到了广泛应用。
目前生产单位制作影像地图主要通过人工方式采用计算机辅助制图模式进行,利用具备强大图形编辑、文字处理和符号制作功能的软件如CorelDRAW、Adobe Illustrator等完成影像及相关专题地图的制作。这类制图软件虽然具有丰富的地图符号、注记和色彩表现等功能,但由于软件没有地理坐标的概念,图形图像要素不能与地理信息关联,导致生产中作业效率不高、准确率难以保证,而且存在重复作业、自动化程度低等问题。本文针对这些问题,在影像地图的制作技术、规范化、标准化方面进行了探索和试验,提出了基于Arcpy的影像地图自动处理技术并在生产中得到实际应用。
二、Arcpy与影像地图模板
1. Arcpy站点包
Python是一种通用的开源编程语言,易于学习和使用,在ArcGIS地理处理中用作脚本语言,在ArcGIS 9.3版本以前使用Python脚本扩展地理处理框架(GP,GeoProcessing),需要引用arcgisscripting,通过其提供的方法、属性和函数完成自定义的GP开发与定制,而在ArcGIS 10中则不需要引用arcgisscripting命名空间,而是采用新的Arcpy命名空间,通过引用Arcpy站点包可以直接调用其提供的一系列方法、类和模块。
Arcpy主要由制图模块、数据访问模块、空间分析模块及扩展模块和基本函数功能组成。通过Arcpy可以访问并使用来自多个不同领域的GIS专业人员和程序员开发的大量Python模块,用户可以在交互式环境中快速创建脚本原型并进行测试,通过Arcpy访问地理处理工具和其他函数、类和模块,可以快速地创建各种简单或大型应用程序,灵活高效地实现各类业务逻辑。在Python脚本中引用Arcpy的方式如下:
import arcpy
需要注意的是,Arcpy作为地理处理框架的一部分,旨在作为自动化处理工具,而不是自定义应用程序框架,Arcpy设计的出发点并不是用来代替ArcObject,因此不能通过Arcpy定义ArcGIS用户界面的按钮、对话框、菜单选项等功能,访问的对象和函数也是有限制的,如不能通过Arcpy新建地图文档或更改地图文档的页面大小和方向,这些功能必须通过ArcObject来实现。
2. Arcpy制图模块和影像地图模板
Arcpy制图模块(arcpy.mapping)提供了对AO的高级封装,通过一系列方法实现地图范围、比例尺、符号化、图廓整饰等要素的修改,完成自动化的地图打印或导出,但制图模块设计侧重于修改已有的地图文档或图层文件中的现有元素,不允许新建地图文档,因此在实现影像地图自动处理之前必须先在ArcGIS中创建一个包含相应元素的影像地图模板,然后再通过arcpy.mapping操作相关要素和内容。
影像地图模板是一个Esri MXD文件,其目的在于方便Python脚本程序处理实现制图处理的自动化。模板可以包含底图图层,也可以创建各种常用的页面布局。创建地图模板前应先确定地图投影,然后按照设计要求设置纸张大小、确定制图比例尺、图名、图例、坐标格网、指北针等一系列制图要素的放置。
下面以A3幅面图廓为例,简述建立影像地图模板的过程:在页面布局视图将页面尺寸设置为42 cm×29.7 cm,将数据框的尺寸设置为39 cm×26.7 cm,然后按照文献[2]设置图名、图廓线、指北针、图例和注记等要素的位置、规格和颜色。图式中一般情况下线划粗细为0.15 mm,ArcGIS中线宽设置的默认尺寸单位为磅(1磅=1 mm×2.845),线宽数值应输入0.427磅。创建的影像地图模板如图1所示,其中外围黑线为页面尺寸范围,内图廓矩形为数据框范围。
图1 影像地图模板
三、影像地图自动处理的实现
1. 研究方法和技术路线
影像地图一般以真彩色航空或卫星数字正射影像图为基础,辅助符号和注记要素进行图面表达。本文以ArcGIS为平台,保证影像底图和矢量数据的准确叠加,结合页面布局技术制作标准化的影像地图模板,通过注记模板完成图面内容及标注的设计,根据数据框对象以特定的绘图顺序和地图投影显示影像和矢量图层,并控制制图比例尺和输出范围,最后根据制图需要处理图廓要素并输出处理成果。影像地图表达应注重影像和地图符号层的视觉层次关系,本文主要涉及影像地图的自动化处理,符号和注记的形式和色彩设计不是本文研究的重点。影像地图自动处理技术流程如图2所示。
图2 影像地图自动处理技术流程
2. 影像底图和图面注记
影像底图数据应根据制图的用途、精度等要求,尽可能地选择时相最合适、波段最理想的数字正射影像图作为影像底图资料。作为底图的遥感影像应注重处理的视觉效果,而不一定是解译效果。通常影像数据组织包括影像数据的分幅处理、影像文件的标准化命名和影像数据的存储方式。影像文件存储可以按文件方式保存,也可以在ArcGIS中通过栅格数据集和栅格目录两种方式存储和管理,栅格数据集表现为连续的单幅影像数据,而栅格目录则是多个栅格数据的集合。无论影像数据以何种方式组织,在Arcpy中处理的方式类似,以下代码是影像图层的处理,其中cPath为影像文件路径名,cName为影像文件名:
lay.replaceDataSource(cPath,"RASTER_WORKSPA
CE", cName) # 重定义图层数据源
lay.name=cName# 重定义图层名称
图面注记是影像地图必不可少的内容,在成图过程中占用较大的制图工作量。图面注记一般通过标注(Label)方式实现,在Label Manager中进行统一管理。Label对象是一种动态标注,可以自动调整标注位置、解决压盖冲突等问题,但Label对象会随图面显示内容不同发生变化,考虑到固定比例尺制图的需要,应在完成字体大小、颜色和方向等属性设置后将动态Label对象转换为该比例尺下的Annotation对象。Annotation是固定比例尺下静态标注对象,以数据库方式保存,系统会在数据库中创建一个地图注记类保存静态标注的Annotation对象。由于地形地物的特殊性和复杂性,局部区域注记密集和压盖等的问题,仍需要通过人工方式进行局部修改。影像地图的图面注记具有可重用性,多数情况下不同时期的影像地图注记可以略作修改或不需修改直接利用,需要对标注字体大小、颜色、方向等参数修改时,只需对注记模板进行适当的调整。
3. 图面要素处理
影像地图图面要素处理主要包括数据框操作、书签要素生成和图廓要素编辑等内容,图面要素不能在数据视图中操作,需要切换到布局页面中完成。
(1) 文档对象的设置
首先应设置文档对象,通过文档对象才能处理地图属性,处理完毕后应保存并删除文档对象,解除文档锁定,释放系统资源,避免不同地图文档引用可能引起的错误。根据Arcpy使用原则,用户只能处理当前文档或已有文档,而不能通过Python脚本新建MXD文档。打开MXD模板文档的相关代码如下,其中pMXD为模板文档的路径全名:
mxd=arcpy.mapping.MapDocument(pMXD)
(2) 数据框对象的处理
数据框对象是Arcpy制图模块的重要对象,一幅地图文档必须至少包含一个数据框对象,如果文档存在图中图或图外图的情况,则可以创建多个数据框对象。数据框具有定义显示和使用其包含数据上下文的属性,在数据视图中显示窗口即为数据框,系统根据图层列表从下往上的顺序显示活动数据框的图层。影像地图模板中的数据框对象处理主要是控制地图范围,当页面上数据框大小保持不变时,缩放地图会导致地图范围发生变化。以下代码是根据影像文件名cName设置数据框显示范围:
df=arcpy.mapping.ListDataFrames(mxd)[0]
cx, cy=cName[3:6], cName[0:3]
ext=df.extent
ext.XMin, ext.XMax=int(cx)*1000, (int(cx)+1)*1000
ext.YMin, ext.YMax=int(cy)*1000, (int(cy)+1)*1000
df.extent=ext
(3) 书签对象的操作
ArcGIS通过书签对象标识要保存和引用的特定地理位置,当用户进行平移或缩放操作时,可以通过书签快速返回该研究区域。书签对象必须在MXD模板中建立,然后才能通过制图模块进行操作,每个数据框对象都有自己的书签列表。以下代码是根据影像文件名cName设置书签范围,注意书签对象可以直接修改属性,而数据框显示范围只能通过范围对象赋值:
ext=arcpy.mapping.ListBookmarks(mxd, "", df)[0].extent
ext.XMin, ext.XMax=int(cx)*1000, (int(cx)+1)*1000
ext.YMin, ext.YMax=int(cy)*1000, (int(cy)+1)*1000
(4) 图廓要素的操作
影像地图图廓要素操作通过页面布局元素对象来实现,页面对象类型包括:数据框、文本、图形、图像、图例和其他六大类,不同的图廓要素分属不同的图廓页面对象类别,但操作方式类似。下面简述影像地图图廓要素的指北针、图例和图面注记的位置操作方式,相关代码如下:
# 设定指北针位置
nArrow=arcpy.mapping.ListLayoutElements(mxd, "MAPSURROUND_ELEMENT")[0]
nArrow.elementPositionX=df.elementPositionX + df.elementWidth-10
nArrow.elementPositionY=df.elementPositionY + df.elementHeight-10
# 设定图例位置
legend=arcpy.mapping.ListLayoutElements(mxd, "GRAPHIC_ELEMENT")[0]
legend.elementPositionX=df.elementPositionX + df.elementWidth
legend.elementPositionY=df.elementPositionY
# 设定图面注记内容和位置
txt=arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT")[0]
txt.text="标题"
txt.elementPositionX=df.elementPositionX + df.elementWidth/2.0
txt.elementPositionY=df.elementPositionY + df.elementHeight + 10
4. 自动化处理和输出
ArcGIS的地图输出方式有3种:第1种是输出到位图,第2种是输出到PDF文件,第3种是通过ArcPress直接打印。考虑到实际生产中可能会用到专业的栅格化打印软件,这里采用直接输出为JPEG成果文件。通过Arcpy输出JPEG成果文件的代码如下:
arcpy.mapping.ExportToJPEG(mxd, jpgPathName, "PAGE_LAYOUT", 4200, 2970, 254)
自动化处理的关键是影像文件的遍历,程序自动根据数字正射影像的范围信息载入影像地图模板文件,修改坐标标注及结合表信息,更新图面注记内容,实现了影像地图处理的自动化操作。图3是程序自动生成的影像地图成果数据。
图3 影像地图自动处理成果
四、结束语
本文在页面布局技术的基础上完成了影像地图的创建,通过Arcpy方式实现了影像地图制图与输出处理的自动化,同时采用地图模板方式实现了影像地图处理的标准化和规范化,使得影像地图的制图更加方便快捷,在很大程度上提高了生产作业效率。同时, 本文通过Python开发模式实现, 最终处
理程序以脚本文件方式提供使用,具有较好的可扩展性和移植性。
参考文献:
[1]庞小平,赵羲,高峰,等. 真彩色城市影像地图统一协调性研究[J]. 武汉大学学报:信息科学版,2006,31(6):481-488.
[2]中国国家标准化管理委员会.GB/T 20257.1—2007国家基本比例尺地图图式 第1部分:1∶500 1∶1000 1∶2000地形图图式[S].北京:中国标准出版社,2007.
[3]刘艳,关雷,韩冬,等. ArcGIS环境下数据裁切技术研究[J]. 测绘与空间地理信息,2012(5):108-113.
[4]黄昌胜,姜圆盈. 基于ArcGIS的专题图制作[J]. 城市勘测,2012(2):28-30.
[5]徐颖,赵萍,黄亚萍. 基于ArcGIS标准分幅裁切新方法[J]. 现代测绘,2006(3):43-45.
[6]刘云彤,黄铁成,吴焱. ArcGIS制图技术在森林分类经营中的应用——以喀什地区地方公益林区划定界为例[J]. 新疆师范大学学报:自然科学版,2011(6):9-12.
引文格式: 余咏胜,彭艳丽,尹言军,等. 基于Arcpy的影像地图自动处理技术研究[J].测绘通报,2015(3):82-85.DOI:10.13474/j.cnki.11-2246.2015.0083
作者简介:余咏胜(1979—),男,硕士,主要研究方向为航测遥感数字影像处理、海量数据的集成应用与开发工作。E-mail:104680040@qq.com
收稿日期:2014-02-25
中图分类号:P28
文献标识码:B
文章编号:0494-0911(2015)03-0082-04