基于Geodatabase模型的矢量历史数据管理
2015-02-07盛琦
盛 琦
(1.浙江省地理信息中心,浙江 杭州 310012)
基于Geodatabase模型的矢量历史数据管理
盛 琦1
(1.浙江省地理信息中心,浙江 杭州 310012)
在ArcSDE存档机制的历史数据管理方法基础上,提出了基于属性扩展的历史数据管理方法,并以浙江省基础地理信息系统为实例,从设计原理、更新流程、历史数据管理3个方面对该方法进行了详细介绍。研究认为,与ArcSDE存档机制相比,属性扩展的历史数据管理方法的优势在于能在多种库体中进行管理、回滚、备份和迁移,同时提高了数据更新的工作效率。
属性扩展;历史管理;存档机制;Geodatabase
基础测绘数据是涉及国家安全的重要战略性信息资源,同时也是国家空间信息基础设施建设的重要内容。在基础测绘数据的管理、应用过程中需要记录每次的数据更改信息及各个历史版本,这些信息有助于对要素进行时空变化分析,给政府决策提供针对性的科学依据。随着测绘行业的蓬勃发展,基础测绘数据的更新变得非常频繁,而同时其历史管理的难度则不断加大,如何有效地管理基础测绘数据的历史信息已成为测绘行业亟待解决的问题[1-3]。
目前,关于基础测绘数据的历史管理的研究相对较少,且集中在基于ArcSDE的存档机制研究上[4-8]。基于存档机制的核心思想是通过数据的生存周期来管理历史数据,但该方法在工作效率和数据稳定性上受限于ArcSDE[9-11]。使用该方法,历史数据与现势数据的关联依赖于ArcSDE环境,无法对数据进行备份和迁移,导致数据安全得不到保障,软硬件无法进行升级;另一方面,该方法只提供了回溯功能,而未提供回滚功能,在数据生产过程中,多次更新后,若某次更新有误,则必然会导致数据生产的返工。为了解决上述问题,本文在基于ArcSDE存档机制的历史数据管理研究的基础上,提出了基于属性扩展的历史数据管理方法。该方法能在多种库体中管理历史数据,同时具备历史数据回溯、回滚、备份和迁移的功能,并且提高了数据更新的工作效率,是实际生产工作中的创新,也为基础测绘数据的历史管理研究提供了有益参考。
1 基于ArcSDE存档机制的历史数据管理
存档是将空间数据库的所有变化都保存下来,记录其变化的时间和变化前后的状态,基于ArcSDE存档机制能够实现无冗余空间历史数据备份,实现任意时刻数据的查看,以及某时间段内历史数据动态回放显示[1]。
1.1 基本原理
该方法首先对数据启用存档前会为数据集创建一个新存档类。启用存档时,将数据集或对象类的 Default版本中的属性及行信息复制到该存档类中。存档类与原始数据集具有相同的架构,但新增3个属性,分别记录数据生存期的起始时间、终止时间和唯一标识。
启用数据集存档后,保存或提交到 Default版本的所有更改还会另外在存档类中进行保存。当启用存档时,表示Default版本的所有行都将按同一时间戳被复制到存档类。所有行都打上了一个时间戳,终止时间为一个理论最大值(12/31/9999)。并且,无论何时,只要某一个要素的终止时间是该理论最大值,表示它为当前现势数据。当编辑内容保存或者提交到Default版本时,ArcSDE会自动将改动作用到存档类。
1.2 数据更新
数据更新是以新要素替换数据库中与之相对应的旧要素的过程。具体而言,新增要素时,复制一份新增要素到存档类,起始时间赋值为当前系统时间,终止时间赋值为理论最大值;修改要素时,存档类中修改前的要素终止时间改为当前系统时间,复制修改后的要素到存档类中,生存期属性赋值同新增要素处理方式一致;删除要素时,将存档类中需要被删除的要素的终止时间改为当前系统时间。每一次的数据更新,都会产生历史数据。
1.3 历史数据管理
该方法利用了ArcSDE提供的历史标记查看历史数据。选择历史标记的方法有2种:①从历史标记列表中挑选;②从特定日期和时间中挑选。选择历史标记后,就可以查看该标记对应的历史数据。同时该方法还允许直接设置存档表中的属性过滤条件来显示需要查看的历史数据。
2 基于属性扩展的历史数据管理
2.1 设计原理
基于属性扩展的历史数据管理方法借鉴了ArcSDE存档机制[12],通过扩展Geodatabase矢量数据的属性字段并完善数据更新流程,实现了基础测绘数据在多种库体中进行历史管理、回滚、备份和迁移的目的。此外,该方法较ArcSDE存档机制在数据迁移和稳定性等方面均具备本质差别,ArcSDE存档机制本质上是不支持数据迁移的,脱离原环境历史数据与现势数据的关联也就不复存在且极易受数据异常等影响导致历史信息的丢失。基于属性扩展的历史数据管理方法支持数据在ArcSDE和File Geodatabase之间进行迁移,较局限于ArcSDE环境下的归档管理更为稳定。该方法的具体设计原理如下:
1)属性扩展。基础空间要素数据库中的要素类的属性设计遵循《浙江省省级基础地理信息系统——空间数据库要素类、子类设计》及其补充规定。在此基础上,每类数据增加几个字段,如表1。
2)辅助表设计。为了记录基础空间要素数据库的更新信息及管理历史数据,需建立更新版本辅助表(ZJGIS_UPDVR)见表2。
3)版本号说明。FROM_VERSION表示要素生存期内起始版本的版本号,从0起编,TO_VERSION表示要素生存期内终止版本的版本号,如果是最新的数据,其值为99999。如首批数据在完成初始入库后其FROM_VERSION为0,TO_VERSION为99999。更新数据在入库后,在更新范围内新入库的数据其FROM_VERSION为1,TO_VERSION为99999,在更新范围内保存为历史数据的要素其FROM_ VERSION为0,TO_VERSION为1,即其从版本0诞生至版本1消亡。
表1 要素类新增字段表
表2 更新版本辅助表
2.2 更新流程
实现基于属性扩展的历史数据管理必须满足一定的更新流程,该流程包括:更新环境初始化、更新数据初始化、新建更新业务、更新数据入库以及关闭更新业务。
更新环境初始化是在待更新数据库中创建一个要素类,记录每次更新的业务信息以及更新范围。
更新数据初始化包含2个操作:①为所有数据添加[FROM_VERSION]和[TO_VERSION]字段;②对[FROM_VERSION]字段赋值0,对[TO_VERSION]字段赋值99999。
新建更新业务主要是填写更新的元数据信息,同时将更新范围内的数据“压入”历史。通过对更新范围内的数据修改其TO_VERSION字段,来标记数据是否将要消亡。对于跨越更新范围边界的要素,将该要素的TO_VERSION设为当前版本,并复制其更新范围外的部分赋FROM_VERSION为当前版本号,TO_VERSION为99999,以保证任何时刻的历史数据都是完整的。
更新数据入库功能将本地GDB数据更新源,通过调用ArcGIS提供的FeatureClassToFeatureClass的GP工具,导入到相应的图层中,实现更新数据的入库。
流程控制方面,既包含程序自动控制也包含人工干预。程序自动控制是指更新完成后,通过关闭更新业务,将本次更新业务的更新状态设为“已完成”,并且在结束更新业务之前,系统自动在基础库中修改From_Version和To_Version为空的要素,From_version设为当前版本号,To_Version设为99999。人工干预是指作业员可以根据更新的日志信息,判断数据更新业务的成败,以决定是否重新进行数据更新工作。
2.3 历史数据管理
1)历史数据回溯。数据更新即产生历史数据,回溯是查看历史数据在某个历史时刻的状态。基于属性扩展的历史数据回溯有2种方式:①选定业务版本号;②选定历史时刻。
回溯功能的具体实现与存档机制查看某时刻的方法类似,区别在于存档机制是通过时间字段进行筛选,属性扩展是通过数字(版本号)字段进行筛选。从执行效率上看,通过数字进行查询的属性扩展优于存档机制[13]。图1反映了同一个要素在不同历史时刻的情况。
图1 历史数据回溯对比图
2)历史数据回滚。回滚就是使数据恢复到某一个历史时刻的状态,当某时刻的数据有误或者不满足质量要求时,需要将数据恢复到该时刻之前的状态,即删除错误时刻之后创建的数据,并将在该时刻消亡的数据进行恢复。基于ArcSDE存档机制的方法在进行历史数据管理时没有实现数据回滚,在数据生产过程中,多次更新后,若某次更新有误,则必然会导致数据生产的返工。基于属性扩展的方法进行数据更新时对数据进行标记版本,而不是对数据进行物理删除,所以能够实现历史数据回滚。
3)离线备份。离线备份是将指定历史版本之前的数据导出存储。数据多次更新后,历史数据信息量不断增加最终会影响到回溯、回滚以及更新的工作效率,因此有必要将备而不用的历史数据进行离线备份。基于ArcSDE存档机制的方法能够实现历史数据的离线备份,但具体实施步骤非常复杂,而基于属性扩展的方法实现离线备份非常简便,仅需将在指定历史版本之前的数据选中并导出即可。
4)数据迁移。随着计算机技术的迅猛发展,软硬件的升级逐渐常态化,而无论是硬件设备还是软件版本的升级都必须进行数据的迁移。基于ArcSDE存档机制的方法依赖于SDE环境,一旦脱离该环境,则会破坏现势数据与历史数据之间的关系,无法继续进行历史数据的管理,所以每一次的数据迁移,都会导致历史数据的丢失。基于属性扩展的历史数据管理方法通过扩展Geodatabase矢量数据的属性字段以及业务辅助表进行历史数据维护,而这些信息包含于数据本身,因此可以在ArcSDE、本地GDB、MDB等任意Geodatabase格式下进行数据迁移。此外,属性扩展的方法也能适用于文件级数据库,且其效率和稳定性均优于ArcSDE。
3 结 语
本文在基于ArcSDE存档机制的历史数据管理的基础上,提出了基于属性扩展的历史数据管理方法,为历史数据的管理研究提供了有益参考。与ArcSDE存档机制相比,该方法具备了能将历史数据进行回溯、回滚、离线备份和迁移,减少数据库冗余等优点。同时该方法不受ArcSDE性能限制,其效率高于基于ArcSDE存档机制的历史数据管理方法。该方法已经在浙江省基础地理信息系统中得到广泛的应用。
基于属性扩展的历史数据管理方法仍有不足之处,首先该方法基于自定义属性扩展实现历史管理,在其他数据处理环境下对数据进行编辑不会自动维护历史数据;其次该方法放弃了多用户操作模式,使数据更新只能单线程操作,在后续研究中有待在以上方面继续深入,使该方法为基础测绘数据管理工作作出更多贡献。
[1] 李娜,魏瑞娟,张月香,等.基于ArcGIS Engine的SDE数据库版本管理机历史归档的研究与实现[J].测绘与空间地理信息,2012,35(2):148-150
[2] 金宝婷, 左小清.浅议空间数据的版本管理[J].科技情报开发与经济,2008,18(32) :158-160
[3] 熊丽华,杨峰.基于ArcSDE的空间数据库技术的应用研究[J].计算机应用,2004,24(3):90-91
[4] 刘波, 李大军, 田为春,等.基于ArcSDE的版本管理和版本合并的算法设计与实现[J].安徽农业科学,2010,38(2): 1 033-1 035
[5] 杜红悦, 刘先林, 宫辉力.基于ArcSDE的空间数据综合管理系统设计与实现[J].测绘科学,2009,34(5):171-173
[6] 邹时林,陈红华,谢刚生,等.基于ArcSDE的版本管理与历史回溯设计与实现[J].东华理工大学学报:自然科学版,2008,31(4):357-360
[7] 张冲,吴健平,钱大君.基于ArcSDE的GIS 版本管理应用研究[J].甘肃联合大学学报:自然科学版,2007,21(2):66-70
[8] 夏宇,朱欣焰,呙维.基于ArcSDE 的空间数据版本管理问题研究[J].计算机工程与应用,2007,43(14):14-17
[9] 朱顺痣. 基于 Geodatabase 城市综合地下管线管理系统的研究与实践[D].厦门:厦门大学, 2007
[10] 操震洲,李清泉.基于ArcSDE和ArcGIS Engine的版本管理系统的设计和实现[J].测绘与空间地理信息,2006,29(1):76-78
[11] 孟浩东,贾有良.利用ArcSDE和ArcObjects管理宗地历史数据[J].测绘通报,2002,12(6):57-60
[12] 文学东,钟文军,祝方雄,等. 基于 Geodatabase 的 CAD 到ArcGIS 数据入库研究[J]. 测绘科学, 2006,31(6):100-102
[13] 薛存金, 周成虎, 苏奋振, 等. 面向过程的时空数据模型研究[J]. 测绘学报, 2010,39(1): 95-101
P208
B
1672-4623(2015)05-0079-03
10.3969/j.issn.1672-4623.2015.05.026
盛琦,工程师,主要从事地理信息系统软件开发及项目管理工作。
2014-06-04。
项目来源:国家自然科学基金资助项目(41171301)。