蒋如乔 毕业实习报告.docx_第1页
蒋如乔 毕业实习报告.docx_第2页
蒋如乔 毕业实习报告.docx_第3页
蒋如乔 毕业实习报告.docx_第4页
蒋如乔 毕业实习报告.docx_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

毕业实习报告基于ARCSDE的多用户多版本编辑的实现姓 名: 蒋如乔 学 号: 1805080140 _专 业: 地理信息系统 指导教师: 许耀东 _实习时间: 大四下 _南京工业大学测绘学院2012年2月目录1.前言32.技术背景及版本管理机制32.1技术背景32.2版本管理机制33.版本管理的设计与实现43.1版本管理的基本实现方式43.2本次实习的版本管理方式53.2.1版本树的建立53.3版本协调及版本合并63.3.1版本协调63.3.2版本合并的实现64.总结81.前言地理信息系统的发展,对空间数据库的科学管理提出了更高的要求。现有地理信息系统一般采用关系数据库系统(RDBMS)来管理空间数据,通过数据的复制形成不同历史时期的数据,产生大量的数据冗余,造成数据库庞大,不能适应长期的历史发展过程演变;另一方面,RDBMS的“锁定修改释放”策略不太适合于处理地理数据的并发访问1,而空间数据的获取及更新,特别像数字化这样的方式,其工作性质决定一般不由一个人独立完成,而是由多个人分区域、分范围操作,最后进行数据的合并。因此,这就需要有一种合理的数据管理模式和多用户操作的机制来适应地理信息系统的发展。在地理信息系统中引入版本管理的机制,可以有效解决数据库存储和多用户协同合作问题。本文在总结三种基本实现方式的基础上,通过编程初步实现相应功能,达到科学的级别管理和有效的协同合作。2.技术背景及版本管理机制2.1技术背景 地理信息系统中,数据版本的概念可以理解为数据的不同状态。一方面,不同历史时期的数据状态可认为是不同版本;另一方面,同一时期多用户进行数据编辑时,每个用户编辑的数据状态也可认为是不同版本。ArcGIS系列软件是GIS中发展较为成熟的软件之一,其中ArcSDE是ESRI公司提供的一种高效的空间数据库引擎,作为中间件,允许与不同的数据库(包括SQLServer、Oracal等)连接,管理地理信息,实现版本管理。ArcSDE跟踪在图层表中发生的所有变动情况,原始图层及其所有的改变都被存储,而且不需要任何拷贝2。对海量空间数据的存储和多用户并发访问提供了很好的支持。多用户可同时编辑一个图形数据库,甚至同一个空间要素1。2.2版本管理机制版本化的方法是实现多版本、多用户、多时态的数据管理模式的重要手段3。版本管理的实质是以某个数据作为基准数据,只记录变化的情况和信息,不重复记录不变的数据。在数据库中,使用特定的表来分别记录特征和对象被添加、删除或修改的情况。当ArcSDE服务器的一个实例第一次启动时,就建立了数据库缺省的状态和版本(SDE.DEFAULT),它是所有版本的父版本,在它或它的子版本之下可以创建新版本。创建之初,子版本与父版本的数据状态相同。版本管理实现了多用户的权限设置,有利于有效的级别管理,实现上级对下级的统筹管理和分工合作。主要有三种权限:Private型,只允许版本的所有者(创建者)连接、查看和编辑;Protect型,允许任何用户连接查看数据,但只有版本的所有者才可以编辑; Public型,允许任何ArcSDE的用户进行连接和编辑数据2。由于多用户的并发操作,对同一版本修改或版本合并时将有可能发生冲突。冲突会在多用户对同一空间要素进行不同更新时发生,此时需要进行版本调和。3.版本管理的设计与实现3.1版本管理的基本实现方式数据库缺省的状态版本(SDE.DEFAULT)是所有版本的父版本,各用户按照实际任务需要新建或删除版本,出现了相应的父版本和子版本。整个SDE中的所有版本构成一个树状结构,根据父子之间的关系形成了不同的实现方式。作者将版本管理中的基本实现方式总结为以下三种 (图1):图1 版本管理基本年实现方式Fig.1 Simple solutions to version management单独式:该实现方式只存在一个版本,一个或多个用户直接在该版本上编辑。多用户编辑被保存时,冲突会被识别。单独式最简洁,某用户的操作只要保存,其他用户就能看到其修改。多用户在编辑过程中互不影响,提高了工作进度。在对公共边界的修改时通常采用该流程单元。缺点是随用户的增多,容易造成数据的不准确或错误,甚至可能出现修改别人数据的现象。因此用户不易过多,且应保持良好的沟通。串联式:父版本上创建子版本,进而在该子版本上再创建子版本。串联式常用来存储不同时期的地理数据,版本用来表达不同历史时期的数据,每个时期的数据都继生于上一时期。串联式还可用于项目流程中的级别管理,不同版本代表不同级别用户编辑的数据,子部门的版本都是继生于其上级部门的。并联式:在父版本上创建多个子版本,子版本之间是并列关系。在地理信息系统中,各子版本通常代表空间上不同地域范围或功能单元的数据,父版本是子版本数据的总和。通过将子版本融合到父版本,实现分工合作。3.2本次实习的版本管理方式实际工作中常根据工作需要而采用混合模式,集单独式、串联式和并联式三种基本模式的特点。作者根据主程序测绘遥感数据快速获取与处理集成系统中多用户同时解译的需要及长事务编辑的特点,总结出实际情况中较为常用的一种混和式实现方式。该实现方式中,用户版本与特定的权限相关,有效实现了级别管理,提高了工作效率和数据质量。3.2.1版本树的建立实现版本管理首先要根据实际情况建立最初的版本树。本文创建的是一个两级操作模式,SDE为项目负责人,UserA、UserB、UserC是其下一级的用户,分别负责不同的区域的编辑。表1版本信息表 Tab.1 Version information版本创建者版本名称权限描述SDE父版本(SDE.DEFAULT)Protected代表整个区域范围最终整合的数据UserAApublic代表A用户对整体数据的修改集合UserBBpublic代表B用户对整体数据的修改集合UserCCpublic代表C用户对整体数据的修改集合SDE中间版本Protected代表整个区域范围整合数据的中间版本图2版本树示意图Fig. 2 Sketch of Version Tree版本树的顶端是“最终整体版本”,代表整个区域范围内的数据。SDE在整体版本的基础上新建子版本,命名为“中间版本”。用户UserA、UserB、UserC分别在“中间版本”的基础上新建自己的子版本A、B、C,自上而下形成如图2一样的版本树。各版本具体信息在表1中列出,五个版本中SDE相关版本的权限都是Protected,其余为Public版本。因此,该版本树为实现级别管理做好铺垫,只有上管理员(SDE)可以操作 “整体版本”和“中间版本”,其他用户只可以查看;对于版本A、B、C,只有下级用户UserA、UserB、UserC可以操作,SDE不但可以合并或查看还能修改。合适版本树的建立有利于实现良好的协同合作和项目管理。3.3版本协调及版本合并3.3.1版本协调用户在现有版本的基础上创建新版本后,在新版本上进行编辑修改工作,当操作完成后,需要将编辑后的版本提交到他的父版本中去。注意:由于多用户并发操作的存在,在提交更新父版本时将有可能发生冲突。冲突只会在多个用户对同一空间要素进行不同的更新时发生。我们可以通过图3来了解冲突是如何发生的。图3 版本冲突发生过程Fig.3 Conflict process of Event假设从T0时刻创建版本起,经过编辑工作到达T1时刻,再经过一定时间到达T2时刻。我们来看看这中间发生了什么,T0时刻:用户张三和用户李四分别从现有的版本A上创建版本B和C。此时3个版本的状态是一致的。T1时刻:用户张三在对版本B 进行编辑后,提交版本B 到版本A,而用户李四并不知道, 他继续在版本C上进行编辑工作。T2时刻:用户李四完成对版本C 的编辑工作后, 保存,最后提交版本C到版本A 中。而此时版本A 已经被张三更新过了。如果李四在版本C中对张三更新过的内容也进行了更新,那么冲突不可避免地发生了。在这里,我们姑且将T2时刻的版本A 称之为协调版本,版本B 和C称之为编辑版本,将T0时刻的版本A、B、C称之为编辑前版本。就冲突类型而言,具体有3种类型的冲突:编辑版本更新而且协调版本也更新(UpdataAndUp2date) ,编辑版本更新而协调版本删除(UpdateAndDelete) ,编辑版本删除而协调版本更新(DeleteAndUpdate) 。对于存在冲突的地物,它将存在3种不同的值:协调版本的值、编辑版本的值和编辑前版本的值。在冲突处理中,对于第一种冲突类型,我们要修改该冲突地物在两个版本中的值。对于存在的后2种冲突,我们需要先恢复他们在原来版本中的值,然后进行删除或修改操作。3.3.2版本合并的实现版本合并过程包括版本冲突判断、冲突处理和版本提交3个过程。在Arcengine中我们通过调用ArcGIS Engine中的IWorkspaceFactory接口的Open方法我们可以获取到SDE的连接。通过调用返回的IWorkspace接口的DataSetNames属性可以获取工作空间中所有的DataSet名,再调用IFeatureWorkspace接口的OpenFeatureDataset等方法来打开DataSet,进而获取每个DataSet中的FeatureClass集合。提取差异地物信息可以通过IVersionedEdit接口Reconcile()方法来实现,通过IConflictClass获得所有差异要素。并根据UpdateUpdates、DeleteUpdate、UpdateDelete三种情况分别可用Pre-ConcileVersion、ConflictVersion、CommonAncestorVersion三种版本作为解决方案,共有9种模式,见表2。表2版本协调处理模式Tab.2 Reconcile Resolve冲突情况 使用版本Pre-ConcileVersionConflictVersionCommonAncestorVersionUpdateUpdatecur-precur-concur-commUpdateDeletecon.del()cur.add(con)cur.add(comm)DeleteUpdate cur.add(pre)cur.del()cur-comm图4版本合并流程图Fig.4 The flowchart of version merging版本合并过程(如图41所示)包括版本冲突判断、冲突处理和版本提交3个过程。在版本冲突处理窗口中,用户可以查看每个冲突空间要素在3个版本中的属性值和几何图形,可以针对每一个要素指定选择哪种版本的值。其功能类似于ArcMap软件中的版本冲突处理功能。通过调用ArcGIS Engine 中IVersionEdit接口中的Reconcile方法我们可以进行版本的协调。如果有冲突,可以通过IConflictClass接口来获取不同类型的冲突地物。通过调用IConflictClass接口的RestoreRow方法来恢复被删除的地物, 通过IWorkspaceEdit、IFertureWorkspace、IVersionedWorkspace、IWorkspace、IFertureCursor、Ifeature2class、Ifeature等接口来编辑修改地物在版本中的值。最后通过调用IVersionEdit接口中的Post方法完成版本的提交。图5为多版本协调的用户界面。图5多版本协调界面Fig.5 RultiVersion Reconcile Interface4.总结在本次实习中我收获颇丰,对长事务编辑中版本管理的机制有了一个初步的了解,并采用ArcSDE与ArcEngine在程序上实现了多用户多版本的编辑。将本来分散的知识点融会贯通并付诸于实践,加深了对空间数据库、数据库原理方面知识的理解,锻炼了理论联系实际的能力;其次,我进一步了解了ArcEngine的数据版本接口在处理长事务处理方面的特点,并且我学会了Oracle+ArcSDE的基本配置及使用,为后期多用户遥感影像快速解译软件的实现工作打下了基础。由于是第一次接触长事务处理,实习过程中难免遇到问题,但都通过各种办法解决了,这使我分析问题和解决问题的能力得以提高,也进一步提高了同事之间的交流与合作能力。总之,虽然毕业实习即将结束,但是对于多版本协调的深入研究仍然是我们

温馨提示

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

评论

0/150

提交评论