基于ARCSDE的版本管理与历史回溯的设计与实现.doc_第1页
基于ARCSDE的版本管理与历史回溯的设计与实现.doc_第2页
基于ARCSDE的版本管理与历史回溯的设计与实现.doc_第3页
基于ARCSDE的版本管理与历史回溯的设计与实现.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于ArcSDE的版本管理与历史回溯的设计与实现陆建波 ( 江苏欧索软件有限公司,江苏 南京,210029)摘 要: 本文根据在国土资源管理信息系统中对数据并行编辑和时空数据管理需要,基于ESRI的SDE和ArcObjects提出了系统中版本管理和历史回溯的设计方案,利用C#和ArcObjects编程实现,并在苏州市国土资源管理信息系统中的进行应用,取得了理想的效果。关键词:GIS;时空数据管理;版本管理;历史回溯1 引言在国土资源管理信息系统中时空数据管理一直是GIS技术应用的重点。目前,空间数据管理方式已脱离了传统的文件系统,直接由数据库系统统一管理,这使多用户并发操作成为可能。实现多用户并发操作的基础是并发控制,传统的数据库采用的悲观锁和乐观锁技术能解决一般数据操作的并发控制问题,但不太适用于GIS系统的长事务处理的需求。目前支持长事务处理的最有效的技术是在数据库引擎中引入版本管理。版本管理能同时完成数据备份、模拟不同场景与方案、保留历史记录等多重功能,在时空数据管理中应用较广,但对于GIS应用系统的某些功能需求也存在不足。2 传统数据库的版本管理 单记录锁定是通过在数据库中增加一个“单记录锁定表”来实现的。“单记录锁定表”由两个字段组成,一个是记录的唯一标识码UID,另一个是锁定标识。“锁定标识”字段由用户编辑的版本名称和系统生成的流水号组成。要锁定某一条记录,只需将该记录的唯一标识码、正在编辑该记录的版本名称和编辑操作的系统流水号填入单记录锁定表的对应字段即可。单记录锁定的原则是先修改先锁定,即第一个编辑某记录的用户锁定该记录。当其他用户在自己的版本中编辑该记录并要保存编辑时,系统会提示该记录已被锁定,而不能对该记录进行编辑。直到用户提交自己的版本后,该记录才被解锁。现举例说明单记录锁定的工作流程:在版本A中,用户A对记录1进行编辑,分割生成记录2和3。在用户完成修改之前,记录1就被版本A锁定。如果版本B的用户B要对记录1进行编辑,这时因为记录1已经被锁定,用户B对记录1不能再作修改,直到用户A提交版本A。 单记录锁定方法的加锁过程主要包括判断记录是否锁定、进行加锁、保存并标识编辑结果3个步骤。通过在单记录锁定表中查找记录的UID是否存在,可判断记录是否锁定。通常有3种情况发生:(1)记录的UID在单记录锁定表中不存在,表示该记录未被编辑过,则继续进行加锁过程的后面步骤。(2)记录UID存在,表示此记录在该版本中曾被编辑过,但锁定标识字段中的版本名称不是用户正在编辑的版本,则用户只需要将该字段值中的流水号改成本次编辑对应的流水号,继续进行加锁过程的后面步骤。(3)记录UID存在,且锁定标识字段中的版本名称为用户正在编辑的版本,表示此记录正在被其他用户编辑锁定,该用户不能编辑,因此加锁过程的后面步骤不能进行。保存并标识编辑结果是指在用户编辑的版本中保存新生成的记录。由于在用户提交版本之前,其他用户不能编辑这些新生成的记录,因此,也要将这些记录添加到单记录锁定表中进行锁定,其锁定标识字段中的系统流水号与变更前记录的相同。按上例,在版本A中编辑记录1后,记录1记录,UID分别为1,2,3,而锁定标识字段都为A0032(0032为编辑操作对应的系统流水号)。当用户提交版本后,编辑结果融合到Default版本中,这时,需对这些记录进行解锁,以便其他用户编辑。删除单记录锁定表中所有锁定标识字段中版本名称等于用户版本的记录,即完成记录的解锁过程。3 ArcSDE中版本管理的基本原理版本实际上是整个数据的快照,但不是数据库的硬拷贝,它只保存数据库中变化的内容,对于没有更新变化内容,只物理存储一次。在ArcSDE的数据库中,系统允许数据的多个版本同时存在,可为每个用户生成版本。用户在自己的版本中可对数据进行长时间的编辑,而不影响其他用户的操作,因此,可解决多用户并发操作和长事务处理问题。在ArcSDE中,版本按树状结构组织,版本之间保持着父子关系,最上面的是“Default”版本,其他子版本都由此版本衍生下来。Default版本反映了数据库当前的状态,各子版本只保存了对数据库的修改,要使这些修改生效,必须向Default版本提交。当不同子版本用户修改同一记录并向父版本提交修改时,会产生冲突。解决版本之间的冲突是通过协调(Reconcile)和提交(Post)实现的。Reconcile是通过父版本来解决各子版本之间的冲突,即各子版本之间不直接进行冲突的协调,而是通过各子版本与父版本分别进行协调实现的。Post是将子版本的修改提交到父版本中去,并释放子版本的存储空间,解决过程是先协调后提交。4基于ArcSDE的版本管理与历史回溯设计方案 系统中的版本管理与历史回溯是相互关联的,任何有权对数据进行更新、编辑的部门都在自己的用户版本上进行数据编辑,来进行并发控制,以解决多用户并行编辑问题,同时,当用户数据更新、编辑完毕后,要进行版本提交,此时将所有编辑操作反应到现状数据库中,同时通过版本协调产生历史数据,存放在历史数据库中,从而可以重现过去某一时刻的数据状况。4.1版本管理的设计方案系统为每个有编辑权限的用户创建一个版本,用户的编辑操作都在自己的版本上进行操作,只有当他要保存编辑时,在保存程序中加入自动协调和提交(把DEFAULT版本按照用户的编辑结果进行改变)。一般情况下,版本名称即为用户代码,与用户表的用户代码对应。并在数据库中创建一个表存放版本列表。用户在进入系统之前,连接数据时就以该用户的版本进行连接,打开图层时,就以该用户所对应的版本打开图层,当用户编辑完成保存时只保存在该用户的版本,只有当用户按了提交版本才将编辑结果提交到Default版本中去。同时,在提交版本时要比较记录,将删除了的记录加入到历史库当中,并填上删除时间字段值;将新建的记录加入到Default版本中,并填上创建时间字段值。对于多个用户版本同时编辑一条记录的处理,采用单记录锁定的版本管理方法来保证只有一个版本的编辑结果有效。因为一条记录在某一时间点上只能发生一次变更,不可能同时出现两种不同的变更结果。4.2历史回溯的设计方案ArcSDE以层的方式来管理空间数据,具有共同属性项的一类要素可以放到一层中,每个数据库记录对应一个实际要素,这样一来为了便于图形管理和适应不同地籍管理工作的需要,地籍空间数据可以根据不同性质(点、线、面)、不同类别(宗地、界址点、道路等)在ArcSDE中分层存放。将所有图层数据分为现状图层和历史图层,在数据库服务器中建立现状数据库和历史数据库两个数据库,其中一个存放历史数据(简称F1)(F1的数据是在版本提交时加入的),而另一个存放现状数据(简称F2)(F2的数据是Default版本的数据),由此版本管理和历史回放是相辅相成的。在两个层F1和F2的数据里面都有CJSJ创建时间)和SCSJ删除时间)两个字段。现状数据的图层中总是保存着现状数据,而历史数据的图层中保存着己成为历史的所有数据。根据这些数据创建的时间和删除时间关系,可以恢复历史某一时间的数据历史状况。而数据历史的追溯,则需要根据现状与历史数据的时间关系查找。历史回溯的方案逻辑流程如图1所示。实现的具体过程: 要显示不同时期的数据状况。在ArcObjects可以用IMap接口加载不同的图层对象。为了显示不同时间的数据的状况,就要根据时间在F1和F2里面用不同的SQL语句选择出符合条件的数据,新创建一个自定义的图层对象,在这个自定义的图层对象中包含选择出的数据,将图层对象用ArcObjects的IMap接口加载显示(如果ArcObjects有直接显示查询结果图形数据的接口也可直接显示可能速度更快)。例如:要显示2001-05-02 11:07:36的数据库中的状态,则查询的SQL语句是:(CJSJ is NULL)Or(CJSJ= 2001-05-0211:07:37)用这样的语句作条件在F1和F2中进行查找,可以在F1、F2中找到符合条件的数据,然后,将这些符合条件的数据放在新建的一个临时中间库中利用ArcObjects的Imap接口加载显示。此思路也可用于追溯一块宗地的前后状况。如果是追溯宗地的从前状态,首先得到宗地的创建时间dTime然后设置SQL语句,就是删除时间小于dTime (SCSJdTime)-用空间关系在F1中找到宗地压盖的宗地,找到宗地的集合;然后再在集合中运用带有SQL语句的IQueryFilter过滤器进行查询,然后在找到的宗地里比较删除时间的先后,找到离dTime最近的时间。显示生命周期在这一时间内的宗地。如果是追溯宗地的以后的状态,方法大体同上,但是要用创建时间来判断,并且还要在F2中进行比较。5 版本管理和历史回溯的实现利用ArcObjects与C#编程实现,通过版本管理可实现版本的删除、创建和重命名等功能,还可进行版本提交和生成提交报告。其中版本提交的过程也是历史数据的产生过程,该过程中对用户子版本与DEAFAULT版本进行比较,对于用户进行了增加、修改和删除的数据进行记录,并将删除了的数据存入历史库。程序具体的界面如图2所示。历史回溯功能通过与版本管理结合,在数据更新的任何时刻系统都会记录历史数据信息和相应的版本变化关系,通过版本比较保存历史数据,从而可以重现过去某一时刻的数据状态,并可将现状数据与历史数据进行对比;也可以动态地播放某一对象的历史演变过程:针对某个对象的历史演变过程,自动回溯祖先和现状之间的差异,使用户获得非常形象直观的界面。6 结束语随着国土信息化进程的不断加速,国土资源管理信息系统不断开发完善,必然要求系统有完善的时空数据管理功能,来管理大量的土地资源数据,来用于土地使用纠纷等问题的处理。本文提出的版本管理和历史回溯的设计方案和采用的技术,经过在广西梧州市国土资源管理信息系统中的应用,证明了其可用性。当然上述方案还有待改进和完善,特别是在版本管理功能中的版本提交这一环节,当处理海量数据的时候,有待进一步提高速度。参 考 文 献1 谭坤龙,丁文源,傅炳荣基于ArcSDE与Oracle9iSpatial空间数据转换方法研究测绘与空间地理信息,2004,(12).2 孟浩东,贾有良利用ArcSDE和ArcObjets管理宗地历史数据 J测绘

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论