基于ArcGIS 10.1的区图层批处理合并
2015-02-07吴战克
吴战克
(1.新疆地矿局 测绘大队,新疆 乌鲁木齐 830017)
基于ArcGIS 10.1的区图层批处理合并
吴战克1
(1.新疆地矿局 测绘大队,新疆 乌鲁木齐 830017)
基于ArcGIS 10.1下AO开发接口,实现了存储在MDB数据格式中同坐标信息、同属性结构区图层的批处理合并,将批处理结果与ArcMap手动合并的精度进行了对比检验,结果证明该方法切实可行,能降低作业人员的劳动强度,提高工作效率。
ArcGIS 10.1;AO开发;合并图层;批处理
在地理数据信息化处理的数据收集和初步加工过程中,作业人员几乎都会遇到重复操作同样的工作步骤这一问题,这主要是因为项目初期的数据收集工作越来越机械化、智能化,收集的数据也是以大批量同结构的数据居多。而在具体的项目中,更加需要处理大批量同结构的数据,重复性的工作不可避免,这就催生了新的开发需求与方法[1-8]。本文根据地理国情项目的需求,利用ArcGIS 10.1平台下的AO接口,针对MDB数据库中同坐标信息、同属性结构的区图层进行合并开发实现。
1 作业环境部署
1)开发环境设置。开发的架构是C/S;开发的IDE平台是Microsoft Visual Studio 2010;开发的地图平台是ArcGIS 10.1;开发的语言和组件分别是C#和AO SDK组件。
2)批处理文件集目录设置。文件结构设置分两种情况:①三层目录结构。总体目录,即一个大的文件夹包括一切预处理数据;二级目录,即不同地区或者不同位置的文件目录,它包含对应的MDB数据库;MDB数据库,二级目录中包含对应的MDB数据。二级目录可以有自己特定的文件夹名称,但MDB数据和其中的区图层必须有严格的名称,如**地区乡镇界.mdb,MDB中区图层对应统一命名,如**地区乡镇界。②二层目录结构。一个文件夹内包含需要批处理的MDB数据库,MDB数据库名称和其中图层名称同样需要对应设定。
2 开发实现
软件的开发主要分为3个步骤,其开发技术路线如图1所示。
图1 开发技术路线
2.1 读取批处理文件集
用户首先需要在界面点击设置批处理文件集的位置,即选定目标文件夹,开发的接口主要利用了System.IO命名空间下的Folder Browser Dialog和DirectoryInfo类,Folder Browser Dialog设置对应的目标文件夹名称,DirectoryInfo类根据文件层级分别将多个特定MDB数据库文件信息存储到FileInfo数组中。
2.2 筛选MDB
系统在用户点击出合并窗口时,初始化默认显示了MDB中筛选的需合并区图层类型名称,这里设置为乡镇界。用户也可以自行更改要筛选区图层的名称,开发使用了字符串Indexof的方法判断MDB中图层名称是否包含输入的短字符串,实现了模糊查询。在用户设定好目标文件夹后,Checklistbox列表自动列出了文件夹内所有包含相应区图层的MDB数据库,用户可以全选、多选、反选需要合并的MDB数据库,系统同时统计显示合并的个数。
2.3 合并、调用显示生成图层
获取到需要合并的MDB数据库集合后,分别调用AE的工作空间工厂,打开MDB数据库,获取筛选出的特定区文件图层,集合到IArray数组中,设定定义输出图层的Fields表、文件名称、类型。最后调用Basic Geoprocessor Class类对象的Merge方法接口,生成的要素类对象转换为要素图层,由AxMapcontrol地图控件窗口调用显示。输出的类型为Shapefile类型,图层名称以当前生成的年月日时分秒开头。系统效果如图2(因保密需要,只提供开发生成效果图)。
图2 图层合并批处理小插件实现
3 工具测试及数据验证
笔者使用了两组数据进行精度测试,一组为4个MDB数据库,另一组为8个MDB数据库。分别使用开发的小插件和ArcGIS 10.1本身自带的合并功能进行县界合并操作对比,结果证明两种方法生成的图层基本一致,达到了合并的基本要求。数据坐标信息、属性信息、接边信息、记录条数基本一致,也侧面证明了AO开发和桌面版同用了一个Merge方法,效果如图3、图4。
图4 第二组测试
4 特点分析
1)AO开发与AE开发的区别。本次开发是ArcGIS 10.1平台下AO的开发,AO开发和AE开发的主要接口、类、库基本一致,但也存在一些区别,如AO开发的范围更广、组件更全,但需要安装桌面版和AO组件,开发成本高。
2)用户操作的方便性。本次批处理小插件开发,涉及到列表和选择的问题,用户可以自由选择文件夹内需要合并的MDB数据,特别注意的是合并生成的图层和列表第一位置的MDB中图层属性结构对应一致。
3)关于点、线层的合并问题。同样的Merge接口,实现了区图层的合并,也证明可以实现点图层、线图层的合并。
5 结 语
本次开发主要使用了ArcGIS 10.1下的AO接口,实现了多个MDB数据库中特定区图层的合并,并验证了合并精度。同时研究了点、线层的合并问题,应用于实际生产,能有效提高作业人员的工作效率。
[1] 朱道强,关海涛. Python在ArcGIS中的应用[J].测绘与空间地理信息,2013,36(7): 152-154
[2] 邱中军,段建刚.基于ArcGIS工具箱构建点云数据批处理模型[J].吉林水利,2012 (8):7-9
[3] 张岳,陶校君.1∶5万DLG更新中的数据处理与检查[J].浙江测绘,2007(2):43-44
[4] 卓云,何政伟,赵银兵.基于COM-GIS的软件模版快速搭建及应用[J].地理空间信息,2012,10(4):105-106
[5] 陈红华,李满春,李飞雪.插件式GIS应用框架的设计与实现[J].地理空间信息,2011,9(2):26-28
[6] 吴建华.基于ArcGIS Engine的GIS软件开发方法[J].测绘通报,2010 (11):54-57
[7] 肖庆.组件GIS二次开发技术研究[J].软件导刊,2008 (11): 148-150
[8] 杨宏鹏,王阿川,王妍玮. GIS二次开发方法与实现[J].信息技术,2008 (8):65-67
P208
B
1672-4623(2015)04-0093-02
10.3969/j.issn.1672-4623.2015.04.033
吴战克,工程师,主要从事测绘项目生产、测绘技术与质量管理工作。
2014-07-10。
项目来源:新疆维吾尔自治区第一次全国地理国情普查资助项目。