盛 琦
(1.浙江省地理信息中心,浙江 杭州 310012)
基于Geodatabase模型的矢量歷史數(shù)據(jù)管理
盛 琦1
(1.浙江省地理信息中心,浙江 杭州 310012)
在ArcSDE存檔機(jī)制的歷史數(shù)據(jù)管理方法基礎(chǔ)上,提出了基于屬性擴(kuò)展的歷史數(shù)據(jù)管理方法,并以浙江省基礎(chǔ)地理信息系統(tǒng)為實(shí)例,從設(shè)計(jì)原理、更新流程、歷史數(shù)據(jù)管理3個(gè)方面對(duì)該方法進(jìn)行了詳細(xì)介紹。研究認(rèn)為,與ArcSDE存檔機(jī)制相比,屬性擴(kuò)展的歷史數(shù)據(jù)管理方法的優(yōu)勢(shì)在于能在多種庫(kù)體中進(jìn)行管理、回滾、備份和遷移,同時(shí)提高了數(shù)據(jù)更新的工作效率。
屬性擴(kuò)展;歷史管理;存檔機(jī)制;Geodatabase
基礎(chǔ)測(cè)繪數(shù)據(jù)是涉及國(guó)家安全的重要戰(zhàn)略性信息資源,同時(shí)也是國(guó)家空間信息基礎(chǔ)設(shè)施建設(shè)的重要內(nèi)容。在基礎(chǔ)測(cè)繪數(shù)據(jù)的管理、應(yīng)用過(guò)程中需要記錄每次的數(shù)據(jù)更改信息及各個(gè)歷史版本,這些信息有助于對(duì)要素進(jìn)行時(shí)空變化分析,給政府決策提供針對(duì)性的科學(xué)依據(jù)。隨著測(cè)繪行業(yè)的蓬勃發(fā)展,基礎(chǔ)測(cè)繪數(shù)據(jù)的更新變得非常頻繁,而同時(shí)其歷史管理的難度則不斷加大,如何有效地管理基礎(chǔ)測(cè)繪數(shù)據(jù)的歷史信息已成為測(cè)繪行業(yè)亟待解決的問(wèn)題[1-3]。
目前,關(guān)于基礎(chǔ)測(cè)繪數(shù)據(jù)的歷史管理的研究相對(duì)較少,且集中在基于ArcSDE的存檔機(jī)制研究上[4-8]?;诖鏅n機(jī)制的核心思想是通過(guò)數(shù)據(jù)的生存周期來(lái)管理歷史數(shù)據(jù),但該方法在工作效率和數(shù)據(jù)穩(wěn)定性上受限于ArcSDE[9-11]。使用該方法,歷史數(shù)據(jù)與現(xiàn)勢(shì)數(shù)據(jù)的關(guān)聯(lián)依賴于ArcSDE環(huán)境,無(wú)法對(duì)數(shù)據(jù)進(jìn)行備份和遷移,導(dǎo)致數(shù)據(jù)安全得不到保障,軟硬件無(wú)法進(jìn)行升級(jí);另一方面,該方法只提供了回溯功能,而未提供回滾功能,在數(shù)據(jù)生產(chǎn)過(guò)程中,多次更新后,若某次更新有誤,則必然會(huì)導(dǎo)致數(shù)據(jù)生產(chǎn)的返工。為了解決上述問(wèn)題,本文在基于ArcSDE存檔機(jī)制的歷史數(shù)據(jù)管理研究的基礎(chǔ)上,提出了基于屬性擴(kuò)展的歷史數(shù)據(jù)管理方法。該方法能在多種庫(kù)體中管理歷史數(shù)據(jù),同時(shí)具備歷史數(shù)據(jù)回溯、回滾、備份和遷移的功能,并且提高了數(shù)據(jù)更新的工作效率,是實(shí)際生產(chǎn)工作中的創(chuàng)新,也為基礎(chǔ)測(cè)繪數(shù)據(jù)的歷史管理研究提供了有益參考。
存檔是將空間數(shù)據(jù)庫(kù)的所有變化都保存下來(lái),記錄其變化的時(shí)間和變化前后的狀態(tài),基于ArcSDE存檔機(jī)制能夠?qū)崿F(xiàn)無(wú)冗余空間歷史數(shù)據(jù)備份,實(shí)現(xiàn)任意時(shí)刻數(shù)據(jù)的查看,以及某時(shí)間段內(nèi)歷史數(shù)據(jù)動(dòng)態(tài)回放顯示[1]。
1.1 基本原理
該方法首先對(duì)數(shù)據(jù)啟用存檔前會(huì)為數(shù)據(jù)集創(chuàng)建一個(gè)新存檔類。啟用存檔時(shí),將數(shù)據(jù)集或?qū)ο箢惖?Default版本中的屬性及行信息復(fù)制到該存檔類中。存檔類與原始數(shù)據(jù)集具有相同的架構(gòu),但新增3個(gè)屬性,分別記錄數(shù)據(jù)生存期的起始時(shí)間、終止時(shí)間和唯一標(biāo)識(shí)。
啟用數(shù)據(jù)集存檔后,保存或提交到 Default版本的所有更改還會(huì)另外在存檔類中進(jìn)行保存。當(dāng)啟用存檔時(shí),表示Default版本的所有行都將按同一時(shí)間戳被復(fù)制到存檔類。所有行都打上了一個(gè)時(shí)間戳,終止時(shí)間為一個(gè)理論最大值(12/31/9999)。并且,無(wú)論何時(shí),只要某一個(gè)要素的終止時(shí)間是該理論最大值,表示它為當(dāng)前現(xiàn)勢(shì)數(shù)據(jù)。當(dāng)編輯內(nèi)容保存或者提交到Default版本時(shí),ArcSDE會(huì)自動(dòng)將改動(dòng)作用到存檔類。
1.2 數(shù)據(jù)更新
數(shù)據(jù)更新是以新要素替換數(shù)據(jù)庫(kù)中與之相對(duì)應(yīng)的舊要素的過(guò)程。具體而言,新增要素時(shí),復(fù)制一份新增要素到存檔類,起始時(shí)間賦值為當(dāng)前系統(tǒng)時(shí)間,終止時(shí)間賦值為理論最大值;修改要素時(shí),存檔類中修改前的要素終止時(shí)間改為當(dāng)前系統(tǒng)時(shí)間,復(fù)制修改后的要素到存檔類中,生存期屬性賦值同新增要素處理方式一致;刪除要素時(shí),將存檔類中需要被刪除的要素的終止時(shí)間改為當(dāng)前系統(tǒng)時(shí)間。每一次的數(shù)據(jù)更新,都會(huì)產(chǎn)生歷史數(shù)據(jù)。
1.3 歷史數(shù)據(jù)管理
該方法利用了ArcSDE提供的歷史標(biāo)記查看歷史數(shù)據(jù)。選擇歷史標(biāo)記的方法有2種:①?gòu)臍v史標(biāo)記列表中挑選;②從特定日期和時(shí)間中挑選。選擇歷史標(biāo)記后,就可以查看該標(biāo)記對(duì)應(yīng)的歷史數(shù)據(jù)。同時(shí)該方法還允許直接設(shè)置存檔表中的屬性過(guò)濾條件來(lái)顯示需要查看的歷史數(shù)據(jù)。
2.1 設(shè)計(jì)原理
基于屬性擴(kuò)展的歷史數(shù)據(jù)管理方法借鑒了ArcSDE存檔機(jī)制[12],通過(guò)擴(kuò)展Geodatabase矢量數(shù)據(jù)的屬性字段并完善數(shù)據(jù)更新流程,實(shí)現(xiàn)了基礎(chǔ)測(cè)繪數(shù)據(jù)在多種庫(kù)體中進(jìn)行歷史管理、回滾、備份和遷移的目的。此外,該方法較ArcSDE存檔機(jī)制在數(shù)據(jù)遷移和穩(wěn)定性等方面均具備本質(zhì)差別,ArcSDE存檔機(jī)制本質(zhì)上是不支持?jǐn)?shù)據(jù)遷移的,脫離原環(huán)境歷史數(shù)據(jù)與現(xiàn)勢(shì)數(shù)據(jù)的關(guān)聯(lián)也就不復(fù)存在且極易受數(shù)據(jù)異常等影響導(dǎo)致歷史信息的丟失?;趯傩詳U(kuò)展的歷史數(shù)據(jù)管理方法支持?jǐn)?shù)據(jù)在ArcSDE和File Geodatabase之間進(jìn)行遷移,較局限于ArcSDE環(huán)境下的歸檔管理更為穩(wěn)定。該方法的具體設(shè)計(jì)原理如下:
1)屬性擴(kuò)展?;A(chǔ)空間要素?cái)?shù)據(jù)庫(kù)中的要素類的屬性設(shè)計(jì)遵循《浙江省省級(jí)基礎(chǔ)地理信息系統(tǒng)——空間數(shù)據(jù)庫(kù)要素類、子類設(shè)計(jì)》及其補(bǔ)充規(guī)定。在此基礎(chǔ)上,每類數(shù)據(jù)增加幾個(gè)字段,如表1。
2)輔助表設(shè)計(jì)。為了記錄基礎(chǔ)空間要素?cái)?shù)據(jù)庫(kù)的更新信息及管理歷史數(shù)據(jù),需建立更新版本輔助表(ZJGIS_UPDVR)見(jiàn)表2。
3)版本號(hào)說(shuō)明。FROM_VERSION表示要素生存期內(nèi)起始版本的版本號(hào),從0起編,TO_VERSION表示要素生存期內(nèi)終止版本的版本號(hào),如果是最新的數(shù)據(jù),其值為99999。如首批數(shù)據(jù)在完成初始入庫(kù)后其FROM_VERSION為0,TO_VERSION為99999。更新數(shù)據(jù)在入庫(kù)后,在更新范圍內(nèi)新入庫(kù)的數(shù)據(jù)其FROM_VERSION為1,TO_VERSION為99999,在更新范圍內(nèi)保存為歷史數(shù)據(jù)的要素其FROM_ VERSION為0,TO_VERSION為1,即其從版本0誕生至版本1消亡。
表1 要素類新增字段表
表2 更新版本輔助表
2.2 更新流程
實(shí)現(xiàn)基于屬性擴(kuò)展的歷史數(shù)據(jù)管理必須滿足一定的更新流程,該流程包括:更新環(huán)境初始化、更新數(shù)據(jù)初始化、新建更新業(yè)務(wù)、更新數(shù)據(jù)入庫(kù)以及關(guān)閉更新業(yè)務(wù)。
更新環(huán)境初始化是在待更新數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)要素類,記錄每次更新的業(yè)務(wù)信息以及更新范圍。
更新數(shù)據(jù)初始化包含2個(gè)操作:①為所有數(shù)據(jù)添加[FROM_VERSION]和[TO_VERSION]字段;②對(duì)[FROM_VERSION]字段賦值0,對(duì)[TO_VERSION]字段賦值99999。
新建更新業(yè)務(wù)主要是填寫更新的元數(shù)據(jù)信息,同時(shí)將更新范圍內(nèi)的數(shù)據(jù)“壓入”歷史。通過(guò)對(duì)更新范圍內(nèi)的數(shù)據(jù)修改其TO_VERSION字段,來(lái)標(biāo)記數(shù)據(jù)是否將要消亡。對(duì)于跨越更新范圍邊界的要素,將該要素的TO_VERSION設(shè)為當(dāng)前版本,并復(fù)制其更新范圍外的部分賦FROM_VERSION為當(dāng)前版本號(hào),TO_VERSION為99999,以保證任何時(shí)刻的歷史數(shù)據(jù)都是完整的。
更新數(shù)據(jù)入庫(kù)功能將本地GDB數(shù)據(jù)更新源,通過(guò)調(diào)用ArcGIS提供的FeatureClassToFeatureClass的GP工具,導(dǎo)入到相應(yīng)的圖層中,實(shí)現(xiàn)更新數(shù)據(jù)的入庫(kù)。
流程控制方面,既包含程序自動(dòng)控制也包含人工干預(yù)。程序自動(dòng)控制是指更新完成后,通過(guò)關(guān)閉更新業(yè)務(wù),將本次更新業(yè)務(wù)的更新?tīng)顟B(tài)設(shè)為“已完成”,并且在結(jié)束更新業(yè)務(wù)之前,系統(tǒng)自動(dòng)在基礎(chǔ)庫(kù)中修改From_Version和To_Version為空的要素,F(xiàn)rom_version設(shè)為當(dāng)前版本號(hào),To_Version設(shè)為99999。人工干預(yù)是指作業(yè)員可以根據(jù)更新的日志信息,判斷數(shù)據(jù)更新業(yè)務(wù)的成敗,以決定是否重新進(jìn)行數(shù)據(jù)更新工作。
2.3 歷史數(shù)據(jù)管理
1)歷史數(shù)據(jù)回溯。數(shù)據(jù)更新即產(chǎn)生歷史數(shù)據(jù),回溯是查看歷史數(shù)據(jù)在某個(gè)歷史時(shí)刻的狀態(tài)。基于屬性擴(kuò)展的歷史數(shù)據(jù)回溯有2種方式:①選定業(yè)務(wù)版本號(hào);②選定歷史時(shí)刻。
回溯功能的具體實(shí)現(xiàn)與存檔機(jī)制查看某時(shí)刻的方法類似,區(qū)別在于存檔機(jī)制是通過(guò)時(shí)間字段進(jìn)行篩選,屬性擴(kuò)展是通過(guò)數(shù)字(版本號(hào))字段進(jìn)行篩選。從執(zhí)行效率上看,通過(guò)數(shù)字進(jìn)行查詢的屬性擴(kuò)展優(yōu)于存檔機(jī)制[13]。圖1反映了同一個(gè)要素在不同歷史時(shí)刻的情況。
圖1 歷史數(shù)據(jù)回溯對(duì)比圖
2)歷史數(shù)據(jù)回滾?;貪L就是使數(shù)據(jù)恢復(fù)到某一個(gè)歷史時(shí)刻的狀態(tài),當(dāng)某時(shí)刻的數(shù)據(jù)有誤或者不滿足質(zhì)量要求時(shí),需要將數(shù)據(jù)恢復(fù)到該時(shí)刻之前的狀態(tài),即刪除錯(cuò)誤時(shí)刻之后創(chuàng)建的數(shù)據(jù),并將在該時(shí)刻消亡的數(shù)據(jù)進(jìn)行恢復(fù)?;贏rcSDE存檔機(jī)制的方法在進(jìn)行歷史數(shù)據(jù)管理時(shí)沒(méi)有實(shí)現(xiàn)數(shù)據(jù)回滾,在數(shù)據(jù)生產(chǎn)過(guò)程中,多次更新后,若某次更新有誤,則必然會(huì)導(dǎo)致數(shù)據(jù)生產(chǎn)的返工?;趯傩詳U(kuò)展的方法進(jìn)行數(shù)據(jù)更新時(shí)對(duì)數(shù)據(jù)進(jìn)行標(biāo)記版本,而不是對(duì)數(shù)據(jù)進(jìn)行物理刪除,所以能夠?qū)崿F(xiàn)歷史數(shù)據(jù)回滾。
3)離線備份。離線備份是將指定歷史版本之前的數(shù)據(jù)導(dǎo)出存儲(chǔ)。數(shù)據(jù)多次更新后,歷史數(shù)據(jù)信息量不斷增加最終會(huì)影響到回溯、回滾以及更新的工作效率,因此有必要將備而不用的歷史數(shù)據(jù)進(jìn)行離線備份?;贏rcSDE存檔機(jī)制的方法能夠?qū)崿F(xiàn)歷史數(shù)據(jù)的離線備份,但具體實(shí)施步驟非常復(fù)雜,而基于屬性擴(kuò)展的方法實(shí)現(xiàn)離線備份非常簡(jiǎn)便,僅需將在指定歷史版本之前的數(shù)據(jù)選中并導(dǎo)出即可。
4)數(shù)據(jù)遷移。隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展,軟硬件的升級(jí)逐漸常態(tài)化,而無(wú)論是硬件設(shè)備還是軟件版本的升級(jí)都必須進(jìn)行數(shù)據(jù)的遷移。基于ArcSDE存檔機(jī)制的方法依賴于SDE環(huán)境,一旦脫離該環(huán)境,則會(huì)破壞現(xiàn)勢(shì)數(shù)據(jù)與歷史數(shù)據(jù)之間的關(guān)系,無(wú)法繼續(xù)進(jìn)行歷史數(shù)據(jù)的管理,所以每一次的數(shù)據(jù)遷移,都會(huì)導(dǎo)致歷史數(shù)據(jù)的丟失?;趯傩詳U(kuò)展的歷史數(shù)據(jù)管理方法通過(guò)擴(kuò)展Geodatabase矢量數(shù)據(jù)的屬性字段以及業(yè)務(wù)輔助表進(jìn)行歷史數(shù)據(jù)維護(hù),而這些信息包含于數(shù)據(jù)本身,因此可以在ArcSDE、本地GDB、MDB等任意Geodatabase格式下進(jìn)行數(shù)據(jù)遷移。此外,屬性擴(kuò)展的方法也能適用于文件級(jí)數(shù)據(jù)庫(kù),且其效率和穩(wěn)定性均優(yōu)于ArcSDE。
本文在基于ArcSDE存檔機(jī)制的歷史數(shù)據(jù)管理的基礎(chǔ)上,提出了基于屬性擴(kuò)展的歷史數(shù)據(jù)管理方法,為歷史數(shù)據(jù)的管理研究提供了有益參考。與ArcSDE存檔機(jī)制相比,該方法具備了能將歷史數(shù)據(jù)進(jìn)行回溯、回滾、離線備份和遷移,減少數(shù)據(jù)庫(kù)冗余等優(yōu)點(diǎn)。同時(shí)該方法不受ArcSDE性能限制,其效率高于基于ArcSDE存檔機(jī)制的歷史數(shù)據(jù)管理方法。該方法已經(jīng)在浙江省基礎(chǔ)地理信息系統(tǒng)中得到廣泛的應(yīng)用。
基于屬性擴(kuò)展的歷史數(shù)據(jù)管理方法仍有不足之處,首先該方法基于自定義屬性擴(kuò)展實(shí)現(xiàn)歷史管理,在其他數(shù)據(jù)處理環(huán)境下對(duì)數(shù)據(jù)進(jìn)行編輯不會(huì)自動(dòng)維護(hù)歷史數(shù)據(jù);其次該方法放棄了多用戶操作模式,使數(shù)據(jù)更新只能單線程操作,在后續(xù)研究中有待在以上方面繼續(xù)深入,使該方法為基礎(chǔ)測(cè)繪數(shù)據(jù)管理工作作出更多貢獻(xiàn)。
[1] 李娜,魏瑞娟,張?jiān)孪?,等.基于ArcGIS Engine的SDE數(shù)據(jù)庫(kù)版本管理機(jī)歷史歸檔的研究與實(shí)現(xiàn)[J].測(cè)繪與空間地理信息,2012,35(2):148-150
[2] 金寶婷, 左小清.淺議空間數(shù)據(jù)的版本管理[J].科技情報(bào)開(kāi)發(fā)與經(jīng)濟(jì),2008,18(32) :158-160
[3] 熊麗華,楊峰.基于ArcSDE的空間數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用,2004,24(3):90-91
[4] 劉波, 李大軍, 田為春,等.基于ArcSDE的版本管理和版本合并的算法設(shè)計(jì)與實(shí)現(xiàn)[J].安徽農(nóng)業(yè)科學(xué),2010,38(2): 1 033-1 035
[5] 杜紅悅, 劉先林, 宮輝力.基于ArcSDE的空間數(shù)據(jù)綜合管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)繪科學(xué),2009,34(5):171-173
[6] 鄒時(shí)林,陳紅華,謝剛生,等.基于ArcSDE的版本管理與歷史回溯設(shè)計(jì)與實(shí)現(xiàn)[J].東華理工大學(xué)學(xué)報(bào):自然科學(xué)版,2008,31(4):357-360
[7] 張沖,吳健平,錢大君.基于ArcSDE的GIS 版本管理應(yīng)用研究[J].甘肅聯(lián)合大學(xué)學(xué)報(bào):自然科學(xué)版,2007,21(2):66-70
[8] 夏宇,朱欣焰,咼維.基于ArcSDE 的空間數(shù)據(jù)版本管理問(wèn)題研究[J].計(jì)算機(jī)工程與應(yīng)用,2007,43(14):14-17
[9] 朱順痣. 基于 Geodatabase 城市綜合地下管線管理系統(tǒng)的研究與實(shí)踐[D].廈門:廈門大學(xué), 2007
[10] 操震洲,李清泉.基于ArcSDE和ArcGIS Engine的版本管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J].測(cè)繪與空間地理信息,2006,29(1):76-78
[11] 孟浩東,賈有良.利用ArcSDE和ArcObjects管理宗地歷史數(shù)據(jù)[J].測(cè)繪通報(bào),2002,12(6):57-60
[12] 文學(xué)東,鐘文軍,祝方雄,等. 基于 Geodatabase 的 CAD 到ArcGIS 數(shù)據(jù)入庫(kù)研究[J]. 測(cè)繪科學(xué), 2006,31(6):100-102
[13] 薛存金, 周成虎, 蘇奮振, 等. 面向過(guò)程的時(shí)空數(shù)據(jù)模型研究[J]. 測(cè)繪學(xué)報(bào), 2010,39(1): 95-101
P208
B
1672-4623(2015)05-0079-03
10.3969/j.issn.1672-4623.2015.05.026
盛琦,工程師,主要從事地理信息系統(tǒng)軟件開(kāi)發(fā)及項(xiàng)目管理工作。
2014-06-04。
項(xiàng)目來(lái)源:國(guó)家自然科學(xué)基金資助項(xiàng)目(41171301)。