倪慧珠
(浙江省第二测绘院,浙江 杭州 310012)
基于ArcSDE的版本管理实现基础测绘的增量更新
倪慧珠
(浙江省第二测绘院,浙江 杭州 310012)
摘要:利用增量更新技术对基础地理信息数据库进行更新是减少工作量、提高更新效率的主要解决方法之一。ArcSDE版本机制可以实现增量数据的提取,但版本冲突的存在制约了该技术的发展及应用。研究自动解决冲突方法,实现对基础测绘数据的增量更新。
关键词:增量更新;版本管理;ArcSDE;基础测绘
随着数字城市的发展,智慧城市的提出,各级政府部门、社会大众对基础地理信息的需求正向深层次的应用发展,同时各专业部门对地理信息系统的需求日益旺盛,对数据的现势性要求逐步提高,这就对测绘部门数据的更新提出了挑战。基础地理信息数据库是测绘部门用来管理和更新基础数据的基础,全国大部分测绘与地理信息局均建立了本省的基础地理信息数据库,但由于作业模式及作业习惯等各方面的原因,一般都是基于图幅(比如CAD格式、MicroStation格式)作业再入库,这往往多增加几道工序,再加上各环节的部门之间的流转,大大影响了基础地理信息数据的更新效率[1]。因此,基于库体直接更新是提高效率的一种有效方式。
地理数据库更新较常用的方法是按更新范围整库裁剪,更新后整库覆盖,即更新某一范围数据,首先要从整库中将该范围内数据切割,再分割成数块给作业员更新,更新完成后将数据逐块合并接边,最后再整体替换整库中的数据。对于全要素更新或者变化量较大的更新,这种形式较为适合。但对于少量要素更新、要素级更新以及准实时更新,增量更新机制则更加切实有效。ArcSDE是ArcGIS与各大数据库进行数据管理的中间产品,同时还支持多个用户的并发操作,ArcSDE的版本管理机制可以实现多用户同时在同一数据库、甚至同一个空间要素操作[2],该功能可大大提高数据更新效率。
如何利用ArcSDE版本管理机制实现基础测绘多用户并发更新及增量更新,提高更新效率是本论文研究重点。
1ArcSDE中版本管理的工作原理
版本化的方法是实现多版本、多用户、多时态的数据管理模式的重要手段[3]。ArcSDE版本管理是以某一时刻的数据为基础,建立各种版本数据,再通过版本管理机制记录各版本在每一时刻的数据变化并进行管理。不同版本只是通过各种关联关系在“拷贝”数据的前提下对数据进行重组,做到既实现现势数据的更新又做到历史数据的保存。
ArcSDE版本管理的实现最大功劳在于元数据表和版本化表。元数据表包括versions表、states表、state-lineage表和mvtables-modified表。该四大表均有自己的职责与分工,元数据表可以看作是对版本数据的管理,但真正体现版本作用的是版本化表。版本化表由基表、A表和D表组成,基表就是基础表,版本的基础数据均保存在这些表中,而后期所建立的各版本的变化信息均由A表和D表负责。A表(可以理解为ADD表)记录用户增加或更新的消息,D表(可以理解为DELETE表)记录用户删除或修改的信息。A表和D表均以要素的变化为一条记录通过对A表和D表的控制实现版本数据的增量管理。
2基础测绘增量更新的实现
增量更新,对于矢量数据而言,实质上可以归结为三种操作类型:增加、删除、修改。增加:新建一个地物要素对象,包括空间图形和属性;删除:将一个地物要素从数据集中删除;修改:对一个地物要素的图形和属性进行一定的编辑,包括位移、变形、属性修改等。这三种操作造成的要素的变化信息就是所谓的“增量”。由于“修改”操作有较高的复杂性,不便于处理和控制,所以将这一过程分解为“增加”和“删除”两个过程来实现。所以,增量可以整合成两个部分:增加和删除。更新就是要将这部分内容融合到地理信息数据库中。
2.1更新方式的建立
ArcSDE中的所有版本构成一个树状结构,根据父子之间的关系形成了不同的实现方式[4]。ArcSDE版本管理的实现方式主要为3种:单独式、串联式、并联式。单独式是用户直接在一个版本进行编辑,一般用在任务急,区域面积不大,需多人合作编辑时可采用该模式。串联式是在基础版本上创建一个子版本,然后在该子版本的基础上串联出多个子版本,以此类推,该模式中基础版本作为原始版本,用来保存历史数据,当然各阶段的子版本也可以看作后期的历史数据,用户只是在子版本上进行操作。并联式是在父版本上创建多个子版本,多个子版本不产生任何关系,代表空间上不同地域范围或功能单元的数据,只是在编辑合并时会存在版本冲突的问题[5-6]。
基础测绘生产中,各个作业员基于网格区域进行分工合作,最终完成整个测区的更新,故更新方式往往采用混合模式,即集单独式、串联式和并联式于一体,发挥各自特点。首先建立DEFAULT版本作为历史数据,然后在DEFAULT版本上串联中间版本用于数据更新,最后在中间版本上并联建立不同用户的子版本。
例如,若更新杭州城区的1∶5000DLG库体数据,则将整个杭州城区区域范围内的数据作为父版本,用于建立历史版本;作业组长在父版本的基础上新建中间版本,作为工作版本;同时作业组长为每个作业员在工作版本的基础上建立各自版本,用于各作业员在自己的版本上更新本区域内的数据,如作业员A在其版本上更新西湖区的数据,作业员B在其版本上更新拱墅区的数据等,各作业员分工明确、互不干涉。
2.2冲突的产生
1)版本合并的原理
通过并联方式创建的子版本,各作业员在各自的版本上进行编辑,其编辑结果需通过版本提交合并到父版本中。作业员A、作业员B等在其任务分配的范围内完成作业后,需把作业成果提交至父版本,最终形成现势数据。版本提交的过程,也就是作业组长合并版本的过程。版本合并实质就是在父版本中对作业员A删除的数据进行删除,增加的数据进行增加(数据的修改在ArcSDE中看成对数据的删除和增加)。
2)冲突、协调
若多个作业员在同一级别的版本中对同一个要素进行编辑,那么版本在合并过程中会出现冲突。可以通过图2、图3中的道路由作业员A、B在不同时刻的编辑情况(红颜色表示某条道路)来了解冲突的发生。图1表示版本树的建立也就是更新方式的建立,即作业员A和作业员B在父版本上创建各自版本,此时各自版本是在同一级别上。图2表示道路在T0时刻,父版本、作业员A、作业员B版本下的状态,此时3个版本的状态是一致的;在T1时刻,作业员A在其作业范围内对该条道路进行编辑后,提交版本至父版本,父版本中该条道路修改情况(如图3所示),此时作业B继续在T0时刻的版本上进行编辑;在T2时刻,作业员B在其作业范围内对该条道路进行编辑后(如图4所示)提交至父版本,此时冲突不可避免就发生了:对于父版本来说,该条道路已经被作业员A提交更新,但作业员B又进行更新提交至父版本,父版本无法确定以哪条道路作为最终的结果。
图1 版本树图
图2 父版本、作业员A、作业员B版本在T0时刻的状态
图3 作业员A版本在T1时刻的状态
图4 作业员B版本在T2时刻的状态
版本冲突主要是若干个子版本对同一个要素并发操作后出现不同的结果,最后无法直接进行冲突协调确定哪个结果为最终结果,必须通过父版本来解决冲突。把另一个子版本的编辑更新融入正在编辑的子版本的过程称为协调[7]。所以对于不同时刻的冲突要素,版本引入了3个值,即编辑前版本的值、协调版本的值、编辑版本的值。以上图2、图3道路更新为例,图2中的版本即道路在T0时刻的3个版本为编辑前版本的值;图3即作业员对道路编辑后提交给父版本后,父版本上道路的值为协调版本的值;图4作业员B在T2时刻编辑的道路值为编辑版本的值。
当然,如果编辑版本和协调版本不存在冲突的情况下,ArcSDE的版本机制会自动进行版本合并,表1所示对同一个要素进行并非编辑后,ArcSDE版本管理自行支持的处理方式。
表1 版本合并处理情况
从表1可以看出,具体冲突主要表现为3种类型:编辑版本更新而协调版本删除、编辑版本删除而协调版本更新、编辑版本更新且协调版本更新。对于冲突,ArcSDE必会有自己的协调方式,其自带的协调方式主要有以下3种方式:保留编辑版本的结果、保留协调版本的结果、保留编辑版本前的结果[8]。对于作业员来说,理想结果是同时保留各自的编辑成果,即同时保留编辑版本与协调版本的结果。
2.3冲突的自动解决
基础测绘通过并联式和串联式版本的布局,既可以保存历史数据,又可以操作现势数据。同时,基础测绘基于网格进行作业,各作业员只更新各自范围内的数据,在合并过程中,通过修改子版本和父版本的同一条数据,保证子父版本数据的一致性,从而杜绝在提交时冲突的出现。
首先通过相应接口根据协调版本和编辑版本不同的操作类型,获取待处理的要素,再通过修改编辑版本或者协调版本的数据,最后合并两个版本的数据保证版本数据的一致性,从而杜绝在提交时冲突的出现,进而实现数据的增量更新。
处理方法如下:
1)UpdateAndUpdate:
在作业范围内:更新子协调版本各自范围内的要素数据。
在作业范围外:协调版本的要素数据替换编辑版本的要素数据。
2)UpdateAndDelete:
在作业范围内:保留编辑版本作业范围内这部分的要素数据,删除范围外要素数据。
在作业范围外:删除编辑版本要素数据。
3)DeleteAndUpdate:
在作业范围内:删除编辑版本作业范围内的要素数据,用协调版本数据替换作业范围外要素数据。
在作业范围外:协调版本的要素数据替换编辑版本的要素数据。
3功能实现
该增量更新技术成功嵌入我局基础测绘生产更新平台,更新平台以C/S架构,服务器端通过ArcSDE管理数据库(ORACLE11g),客户端基于ACRMAP开发更新作业平台,同时基于ArcEngine自主开发项目管理子系统。作业员在各自客户端上进行基础测绘数据的更新操作,更新结果可利用该平台中的版本管理模块对服务器端的数据进行远程增量更新。版本提交界面如图5所示。
图5 增量更新界面实现
增量更新技术的应用将会大大加快地理信息更新速度,建立以地理信息数据处理智能化、自动化为特征的集地理信息采集、处理、管理、更新的生产模式。在该模式下,我局基础地理信息数据年更新能力逐步提升至2 000幅,在2012~2014年基础测绘生产特别是要素级更新方面,该技术起到至关重要的作用。这也有利于改变现有的业界基础测绘生产模式,加快了地理信息数据处理智能化、自动化为特征的测绘生产技术体系的建立。
4结束语
对基于基础地理数据库更新技术的研究,将有助于提高人们对这方面的认识,同时有助于为决策层对于基础地理数据库持续更新的工程设计和实施、基础地理数据增量服务等提供发展思路。该论文以ArcSDE版本管理为切入点,自行研究开发冲突的解决方式,从而实现作业员对同一要素的自动接边,通过版本合并,实现基础测绘数据的增量更新。然而,随着对海量数据的管理,并发用户的增多,版本编辑时间的增长,编辑操作的增多,以及GIS数据操作时SQL语句的效率问题,使SDE的编辑效率逐渐降低。如何提高SDE的编辑效率,是下一步的主要研究内容。
参考文献:
[1]楼燕敏,倪慧珠,彭艳,等.省级基础地理信息数据库“图库一体化”更新研究[C]//山东测绘学会.第十三届华东六省一市测绘学会论文集.济南:《现代测绘》编辑部,2011:194-196.
[2]操震洲,李清泉.基于ArcSDE和ArcGIS Engine的版本管理系统的设计和实现[J].测绘与空间地理信息,2006,29(5):76-78.
[3]刘茂华,杨伦,王峰.时空数据库及其版本化管理[J].辽宁工程技术大学学报,2005,24(S1):62-64.
[4]ZEILER M.Modeling our World-The ESRI guideto geodatabase design[M].California:ESRI Press,1999:115-125.
[5]张冲,吴健平,钱大君.基于ArcSDE的GIS版本管理应用研究[J].甘肃联合大学学报,2007,21(2):66-69.
[6]秦智慧.基于ArcSDE的规划竣工测量空间数据库建设[J].测绘与空间地理信息,2015,38(7):210-212.
[7]刘波,李大军,田为春,等.基于ArcSDE的版本管理和版本合并的算法设计与实现[J].安徽农业科学,2010,38(2):1033 -1035.
[8]CUNNINGHAM G,SILVERTAND G.Managing aVersioned Geodatabase[M].New York:ESRI Press,2005.
[责任编辑:路晓鸽]
Data increment to fundamental data based on version management of ArcSD
ENI Huizhu
(The Second Surveying and Mapping Institute of Zhejiang Province,Hangzhou 310012,China)
Abstract:Using the incremental update technology to update the fundamental data,it can reduce the workload and improve the update efficiency.ArcSDE version mechanism can extract the incremental data,but the version conflict restricts the development and application of this technology.This paper studies an automatic conflict resolution method,which can realize the data increment of fundamental data.
Key words:data increment;version management;ArcSDE;fundamental data
中图分类号:P208
文献标识码:A
文章编号:1006-7949(2016)03-0077-04
作者简介:倪慧珠(1980-),女,工程师.
收稿日期:2015-02-11;修回日期:2015-08-19