基于ArcObject实现ArcMap数据编辑流程的改变

2015-06-15 01:47闫会杰王劲徐菁言
测绘技术装备 2015年3期
关键词:赋值要素流程

闫会杰 王劲 徐菁言

(国家测绘地理信息局第一航测遥感院 陕西西安 710054)

1 引言

国家 1∶5万基础地理信息数据库是国家空间数据基础设施的重要组成部分,是国家信息化权威的、统一的定位基准和空间载体。该数据库已广泛应用于国民经济建设(如水利、交通、国土、农林资源普查、环境保护、城乡规划与建设)、国防建设的多个领域,因此对政府决策、区域规划、社会管理、工程建设、资源调查与监测、应急救灾等诸多方面发挥了基础性、支撑性的作用。

为了加快国家 1∶5万基础地理信息数据库的现势性,确保其成果的可用时效性,对于该数据库实现定期更新十分重要。目前我国已经开始2014版国家1∶5万基础地理信息数据库更新工作。

2 要素的状态赋值概述

国家 1∶5万基础地理信息数据库的持续更新采用重点要素的动态更新和全要素的动态更新相结合的方式。

具体流程和关键方法为:在上一年的数据底图基础上,将所有要素的状态(STACOD属性)赋值为“原始”,并对每个要素赋予全库唯一标识码(FEAID属性),并标明数据的版本信息(VERSION属性),然后开始要素更新工作。在更新过程中,任何要素的增加、删除、修改都在STACOD属性中反映出来,更新完的数据中,要素的属性分为“原始”、“修改”、“增加”和“删除”,FEAID属性和VERSION属性和STACOD属性应保持逻辑一致性。更新成果在和已有2013版数据库数据进行整合时,即可通过STACOD、FEAID和VERSION三个属性,快速实现数据融合。以2013版数据为例,具体更新模式如图1所示。

传统作业模式中要素的状态赋值一般采取以下三种方法。一是前期对STACOD赋值采用手工赋值的方法完成;二是在数据编辑过程中,忽略STACOD属性,完成更新后通过和原始数据进行比对,如发现有变化,再通过半自动方式完成赋值;三是采用ArcMap的编辑追踪功能,将编辑过的数据标识出来,完成更新后再进行确认、赋值。

因为任何要素的任一节点变化都需要在 STACOD中反映出来,所以采用传统作业模式时,要素的状态赋值工作量巨大、过程繁琐,而且容易出错。

图1:传统数据更新模式

3 解决之道

解决上述困难的方法很多,本文采用基于ArcObject开发平台实现数据编辑过程中对要素编辑状态的控制,从而实现数据编辑传统作业模式的改变。

3.1 ArcObject开发平台

ArcObject(以下简称为“AO”)是 ESRI公司ArcGIS家族中应用程序的开发平台,是基于Microsoft COM技术所构建的一系列COM组件集。AO的程序开发方式可以分为两种。一种是在ArcMap应用框架基础上进行定制开发,另一种是脱离 ArcMap应用框架独立开发。

3.2 技术流程

根据 ArcObject开发平台和要素的状态赋值工作的特点,本文采用上述第一种开发方式。总体思路为:修改ArcMap应用框架数据编辑流程,在数据编辑过程中实现对要素编辑状态的控制,从而实现要素编辑的自动化。具体技术流程如图2所示。

图2:要素编辑状态控制实现技术流程

4 过程实现

ArcMap提供了三种功能拓展模式:VBA,DLL和控件开发,本文选用C#开发DLL来拓展ArcMap10.1的功能。

首先安装Microsoft Visual Studio(VS)开发环境,再安装ArcGIS Desktop和ArcObject SDK for Microsoft.NET Framework。这时在 VS中新建工程就可以看到ArcGIS的Desktop拓展模板,如图3所示。

图3:Desktop拓展模板

选择Editor Extension的拓展类型,在生成的对应cs文件中可以看到默认生成的两个可重写过程OnStartup和 OnShutdown。在 OnStartup中添加Events.OnStartEditing+=new EditEvents_OnStartEditingEventHandler(Events_OnStartEditing); Events.OnStopEditing+=new EditEvents_OnStopEditingEventHandler(Events_OnStopEditing);,来改变ArcMap默认的编辑流程。

之后在OnStartEditing和OnStopEditing事件中添加代码,使编辑流程转向自定义的流程。关键代码如下:

再添加一个切换开关,以便控制使用哪种编辑流程,从而实现及时切换回ArcMap正常的编辑状态。

动态更新项目中的要素删除并不是真的删除,只是在要素的STACOD中赋予“删除”的属性即可,该功能可以通过添加工具来完成。

当然项目的其它需求也可以通过类似的开发来完成。完成之后进行编译,就得到esriAddIn文件,双击该文件就完成在 ArcMap中的注册。这时在ArcMap中选择使用修改后编辑流程,任何编辑动作的完成,都会同时在要素的STACOD属性中进行修改和标识。当然对应FEAID属性和Version属性的值也可以通过添加相应代码来完成同步修改。

5 结束语

通过ArcMap的功能拓展,改变了ArcMap的自身编辑流程,加入自定义的部分功能,使要素编辑动作完成的同时,完成对要素状态的赋值,完全解除了作业员对STACOD赋值的工作量,大大提高了数据更新工作的效率。

当然项目的其它需求也可以通过类似的开发来完成。完成之后进行编译,就得到esriAddIn文件,双击该文件就完成在 ArcMap中的注册。这时在ArcMap中选择使用修改后编辑流程,任何编辑动作的完成,都会同时在要素的STACOD属性中进行修改和标识。当然对应FEAID属性和Version属性的值也可以通过添加相应代码来完成同步修改。

[1]陈军,王东华,商瑶玲,等.国家1∶50 000数据库更新工程总体设计研究与技术创新[J].测绘学报,2010,39(1).

[2]蒋波涛.ArcObjccts开发基础与技巧一基于VisualBasic.NET[M].武汉∶武汉大学出版社,2006.

猜你喜欢
赋值要素流程
吃水果有套“清洗流程”
掌握这6点要素,让肥水更高效
强赋值幺半群上的加权Mealy机与加权Moore机的关系*
违反流程 致命误判
观赏植物的色彩要素在家居设计中的应用
论美术中“七大要素”的辩证关系
四川省高考志愿填报流程简图
算法框图问题中的易错点
析OGSA-DAI工作流程
利用赋值法解决抽象函数相关问题オ