許泉立,易俊華
(1.云南師范大學(xué) 旅游與地理科學(xué)學(xué)院,云南 昆明650092; 2.西部資源環(huán)境GIS技術(shù)教育部工程研究中心,云南 昆明650092;3.云南省航測(cè)遙感信息院,云南 昆明650032)
面向基礎(chǔ)測(cè)繪的空間數(shù)據(jù)版本管理工具研發(fā)
許泉立1,2,易俊華3
(1.云南師范大學(xué) 旅游與地理科學(xué)學(xué)院,云南 昆明650092; 2.西部資源環(huán)境GIS技術(shù)教育部工程研究中心,云南 昆明650092;3.云南省航測(cè)遙感信息院,云南 昆明650032)
以ESRI公司的空間數(shù)據(jù)庫(kù)服務(wù)端產(chǎn)品ArcSDE為平臺(tái),利用ArcEngine開(kāi)發(fā)組件,討論了版本管理技術(shù)在基礎(chǔ)測(cè)繪空間管理中的應(yīng)用原理、模式、方法及其設(shè)計(jì)與實(shí)現(xiàn)過(guò)程,最后給出了軟件開(kāi)發(fā)的界面及其主要功能。
ArcSDE;ArcEngine;版本管理;長(zhǎng)事務(wù)處理;回溯
近幾年,空間數(shù)據(jù)庫(kù)技術(shù),特別是面向?qū)ο蟮目臻g數(shù)據(jù)庫(kù)技術(shù)已經(jīng)從理論邁向?qū)嶋H應(yīng)用,諸如空間數(shù)據(jù)圖文表一體化無(wú)縫管理和多版本管理的技術(shù)為空間數(shù)據(jù)管理和維護(hù)提供了一種較好的解決機(jī)制[1-3]。版本管理能夠很好地支持地理空間數(shù)據(jù)編輯中遇到的“長(zhǎng)事務(wù)處理”需求,同時(shí)通過(guò)引入版本沖突檢測(cè)和處理機(jī)制,較好地支持空間數(shù)據(jù)分布式編輯的長(zhǎng)事務(wù)處理需求,并且可以無(wú)限保留歷史數(shù)據(jù)的快照備份,方便實(shí)現(xiàn)不同歷史時(shí)期數(shù)據(jù)的回溯[4,5]。本文利用空間數(shù)據(jù)引擎中間件ArcSDE和oracle數(shù)據(jù)庫(kù),以基礎(chǔ)測(cè)繪生產(chǎn)部門(mén)為應(yīng)用對(duì)象,探討海量空間數(shù)據(jù)版本管理的原理和實(shí)現(xiàn)策略、模式及其設(shè)計(jì)與實(shí)現(xiàn)過(guò)程,為版本管理在實(shí)際基礎(chǔ)測(cè)繪數(shù)據(jù)生產(chǎn)和管理中的運(yùn)用提供管理思路和解決方案。
ArcSDE是ESRI公司推出的優(yōu)秀空間數(shù)據(jù)引擎中間件,它具有一套完整的空間數(shù)據(jù)版本管理機(jī)制和策略,較好地解決了空間數(shù)據(jù)的并發(fā)訪問(wèn)和多用戶編輯問(wèn)題。利用其理念和技術(shù),可以設(shè)計(jì)并開(kāi)發(fā)空間數(shù)據(jù)版本管理工具,從而提升空間數(shù)據(jù)管理與編輯的效率[6]。
版本管理的實(shí)質(zhì)是以某個(gè)數(shù)據(jù)作為基準(zhǔn)數(shù)據(jù),只記錄變化的情況和信息,不重復(fù)記錄不變的數(shù)據(jù)。在數(shù)據(jù)庫(kù)中,使用特定的表來(lái)分別記錄特征和對(duì)象被添加、刪除或修改的情況。因此,版本管理并不是簡(jiǎn)單的數(shù)據(jù)復(fù)制,而是變化數(shù)據(jù)的快照和記錄。當(dāng)ArcSDE服務(wù)器的一個(gè)實(shí)例第一次啟動(dòng)時(shí),就建立了數(shù)據(jù)庫(kù)缺省的狀態(tài)和版本(SDE.DEFAULT),它是所有版本的父版本,在它或它的子版本之下可以創(chuàng)建新版本。創(chuàng)建之初,子版本與父版本的數(shù)據(jù)狀態(tài)相同[7-8]。
多用戶編輯是版本管理的另一個(gè)特色,它通過(guò)對(duì)不同版本用戶權(quán)限的規(guī)定,靈活方便地定制(約束或者允許)針對(duì)該用戶和版本下空間數(shù)據(jù)的訪問(wèn)或編輯權(quán)限。這種機(jī)制不僅有利于統(tǒng)一不同級(jí)別版本之間的聯(lián)絡(luò)和協(xié)作,而且可以大大提高版本管理中的安全性。ArcSDE中提供了3種用戶級(jí)別的版本權(quán)限,其描述如表1所示。
表1 ArcSDE版本管理中的用戶權(quán)限
另外,對(duì)于空間數(shù)據(jù)編輯中經(jīng)常遇到的同要素編輯矛盾,ArcSDE也給出了專(zhuān)門(mén)的沖突檢測(cè)和處理方法,并且將最后的決定權(quán)交給沖突雙方的上級(jí)版本(用戶)來(lái)協(xié)調(diào)解決,較好地規(guī)避了并發(fā)用戶空間數(shù)據(jù)編輯的問(wèn)題,提高了基礎(chǔ)測(cè)繪生產(chǎn)的效率。
2.1 版本管理模式設(shè)計(jì)
ArcSDE中默認(rèn)Default是所有版本的祖先,其他創(chuàng)建的所有版本都是它的子版本,父版本與子版本之間組成一種樹(shù)狀關(guān)系,稱(chēng)之為“版本樹(shù)”。ArcSDE提供了3種基本的版本管理模式來(lái)實(shí)現(xiàn)這些關(guān)系,分別是集中式、串聯(lián)式和并聯(lián)式。集中式又稱(chēng)為單獨(dú)式,是最簡(jiǎn)單的版本管理模式。該模式下只有一個(gè)版本,所有的用戶都直接在該版本上訪問(wèn)和編輯空間數(shù)據(jù)。這種模式無(wú)法獨(dú)立完成空間數(shù)據(jù)編輯中的“長(zhǎng)事務(wù)處理”要求。串聯(lián)式是一種簡(jiǎn)單的版本繼承關(guān)系,可以無(wú)限擴(kuò)展下去,所得子版本都?xì)w屬于最近的父版本,直到它們最初的祖先版本為止。串聯(lián)式可以用于管理不同時(shí)期的空間數(shù)據(jù)。并聯(lián)式衍生出一系列一級(jí)子版本,這些子版本之間在級(jí)別上是并聯(lián)的,都?xì)w屬于同一個(gè)父版本。這種版本模式適合管理不同地域的地理空間數(shù)據(jù),有利于多用戶的分工合作,提高工作效率。
在實(shí)際中,版本模式的實(shí)現(xiàn)通常不是單一的,而是混合的,這樣才能夠充分發(fā)揮各種模式的優(yōu)點(diǎn),實(shí)現(xiàn)版本管理的高效運(yùn)作。以航測(cè)遙感院的實(shí)際組織結(jié)構(gòu)設(shè)置為例,版本管理的實(shí)際模式如圖1所示。
圖1 版本管理的混合模式
其中橫向?yàn)椴⒙?lián)式,豎向則為串聯(lián)式,而所有版本最終提交給一個(gè)父版本(Default)。版本的管理等級(jí)與實(shí)際的測(cè)繪生產(chǎn)管理級(jí)別相對(duì)應(yīng),分別部署不同的版本管理用戶,從而達(dá)到“實(shí)時(shí)互動(dòng),逐級(jí)決策,保障質(zhì)量,安全生產(chǎn)”的測(cè)繪生產(chǎn)目標(biāo)。決策層往往是對(duì)測(cè)繪任務(wù)進(jìn)行下達(dá)和安排的領(lǐng)導(dǎo)層,這可能包括院行政中心部門(mén)和技術(shù)總監(jiān)部門(mén);監(jiān)督層往往是生產(chǎn)任務(wù)的第一線部門(mén),可能包括各分院、生產(chǎn)管理部門(mén)和質(zhì)量監(jiān)督部門(mén)等。為了引入?yún)f(xié)作機(jī)制,還可為技術(shù)開(kāi)發(fā)和信息中心等輔助部門(mén)部署版本用戶,但原則上該版本只有瀏覽權(quán)限,而沒(méi)有編輯權(quán)限。作業(yè)層往往是一線工作人員,一般是一人一號(hào),有時(shí)可以設(shè)置作業(yè)小組,每個(gè)小組分配一個(gè)版本帳號(hào)。
上述模式較好地規(guī)避了實(shí)際測(cè)繪生產(chǎn)中一些固有矛盾(比如多用戶編輯、重復(fù)生產(chǎn)、管理混亂等),將監(jiān)督機(jī)制引入生產(chǎn)過(guò)程,分工明確,責(zé)權(quán)清晰,能有效提升基礎(chǔ)測(cè)繪部門(mén)的實(shí)際生產(chǎn)效率和安全性。
2.2 版本管理的應(yīng)用策略
ArcSDE的版本管理有2種應(yīng)用策略,即平臺(tái)托管式和系統(tǒng)開(kāi)發(fā)式。平臺(tái)托管式就是在ArcGIS的桌面版本中嵌入版本管理工具,其優(yōu)點(diǎn)是直觀、實(shí)用、便捷;缺點(diǎn)是不能完全滿足用戶的需求。系統(tǒng)開(kāi)發(fā)式是指通過(guò)軟件開(kāi)發(fā)和系統(tǒng)集成的方法來(lái)實(shí)現(xiàn)版本管理,優(yōu)點(diǎn)是功能強(qiáng)大,定制靈活,缺點(diǎn)是基礎(chǔ)開(kāi)發(fā)工作量較大,實(shí)現(xiàn)周期相對(duì)較長(zhǎng)。系統(tǒng)開(kāi)發(fā)還可視具體情況分別選用不同的開(kāi)發(fā)模式,表2列舉了基于ArcSDE的版本管理應(yīng)用策略及其說(shuō)明。
具體采用哪種應(yīng)用模式需要根據(jù)實(shí)際情況而定。一般情況下,如果生產(chǎn)規(guī)模偏小,數(shù)據(jù)版本本身不復(fù)雜,建議使用平臺(tái)托管式;如果生產(chǎn)規(guī)模較大,作業(yè)部門(mén)較多,建議使用系統(tǒng)開(kāi)發(fā)式。
表2 版本管理的應(yīng)用策略比較
圖2 版本管理的驅(qū)動(dòng)及作用流程
2.3 版本管理的實(shí)施步驟
2.3.1 安裝和部署ArcSDE服務(wù)
一般情況下,ArcSDE可以和關(guān)系數(shù)據(jù)庫(kù)安裝在同一臺(tái)服務(wù)器上,該方法具有維護(hù)方便、節(jié)約成本和部署快捷等優(yōu)點(diǎn)。
ArcSDE的安裝按照提示進(jìn)行即可,部署的主要任務(wù)是創(chuàng)建服務(wù)和啟動(dòng)服務(wù),這既可以通過(guò)視窗操作實(shí)現(xiàn),也可以通過(guò)sdeservice和sdemon提供的命令行實(shí)現(xiàn),例如:
c:sdeservice-o create-d ORACLE,ORACLE_SID -p PASSWORD –n
其中,ORACLE表示鏈接的關(guān)系數(shù)據(jù)庫(kù)類(lèi)型,ORACLE_SID表示與哪個(gè)數(shù)據(jù)庫(kù)實(shí)例建立鏈接??梢杂肙_oneBase表示一分院,O_twoBase表示二分院等,PASSWORD表示該數(shù)據(jù)庫(kù)的訪問(wèn)密碼。
2.3.2 驅(qū)動(dòng)版本管理功能
不管是平臺(tái)托管式還是軟件開(kāi)發(fā)式,版本管理首先都是一個(gè)事務(wù)處理過(guò)程,這個(gè)過(guò)程應(yīng)該包含了基礎(chǔ)測(cè)繪數(shù)據(jù)生產(chǎn)中所應(yīng)該具有的版本管理功能。以云南省某測(cè)繪產(chǎn)品生產(chǎn)部門(mén)的應(yīng)用為例,該部門(mén)空間數(shù)據(jù)版本管理的驅(qū)動(dòng)和作用流程如圖2所示。
2.3.3 基于版本的數(shù)據(jù)備份與恢復(fù)[9,10]
數(shù)據(jù)的備份與恢復(fù)是基礎(chǔ)測(cè)繪產(chǎn)品生產(chǎn)和管理中不可缺少的重要環(huán)節(jié),可從整體和局部來(lái)分別處理。整體備份與恢復(fù)主要通過(guò)關(guān)系數(shù)據(jù)庫(kù)本身提供的功能來(lái)實(shí)現(xiàn),選擇何種備份方案依據(jù)具體情況而定。針對(duì)我院的實(shí)際情況,建議采用差異備份和增量備份即可,這樣不僅維護(hù)量小,而且節(jié)約備份的成本。局部備份則可依賴(lài)ArcSDE提供的技術(shù)支持完成。局部備份主要的操作對(duì)象是重要局部數(shù)據(jù),比如大地控制點(diǎn)、元數(shù)據(jù)信息等。該操作需要利用ArcSDE提供的sdeexport命令完成,例如以下命令過(guò)程就是對(duì)版本號(hào)為Default的存儲(chǔ)在空間數(shù)據(jù)庫(kù)中的Road(道路)數(shù)據(jù)進(jìn)行備份和恢復(fù)操作。
①將指定圖層的特定版本備份到備份文件:
sdeexport -o create -l Road,shape -f d: oad.exp -V Default -i O_oneBase -u sde -p sde
此操作將名為O_oneBase(一分院)的sde服務(wù)(ArcSDE for Oracle)內(nèi)的指定圖層“Road”的Default版本備份到文件d: oad.exp中。
②拷貝備份文件到目標(biāo)服務(wù)器上。
③將備份文件恢復(fù)至目標(biāo)關(guān)系數(shù)據(jù)庫(kù)中:
sdeimport -o create -l MainRoad,shape -f d: oad.exp -i O_twoBase -u sde -p sde
此操作將備份文件恢復(fù)到名為O_twoBase(二分院)的sde服務(wù)(ArcSDE for Oracle)中,圖層名為:MainRoad。
2.3.4 版本管理工具的實(shí)現(xiàn)方法
總體來(lái)講,系統(tǒng)在技術(shù)實(shí)現(xiàn)上采用了組件GIS的設(shè)計(jì)與開(kāi)發(fā)思想,利用ESRI的ArcEngine組件庫(kù),實(shí)現(xiàn)了基于ArcSDE for oracle的空間數(shù)據(jù)版本管理工具軟件(如圖3)。
圖3 空間數(shù)據(jù)版本管理的技術(shù)實(shí)現(xiàn)機(jī)制
從圖3可以看出,基于AO/AE的組件GIS開(kāi)發(fā)技術(shù)在系統(tǒng)的技術(shù)實(shí)現(xiàn)中起著至關(guān)重要的作用,也是系統(tǒng)技術(shù)實(shí)現(xiàn)的難點(diǎn)和重點(diǎn)。以下是版本創(chuàng)建和版本刪除等功能的實(shí)現(xiàn)示例。
對(duì)于版本創(chuàng)建和刪除,涉及到的組件接口主要是IversionedWorkspace和Iversion。第一個(gè)接口主要為版本創(chuàng)建指定一個(gè)已經(jīng)存在的空間數(shù)據(jù)庫(kù)的邏輯位置,然后由Iversion接口創(chuàng)建一個(gè)新版本。
①版本創(chuàng)建
Dim pVerWorkspace As IVersionedWorkspace
’預(yù)先已經(jīng)配置好的數(shù)據(jù)庫(kù)空間
Set pVerWorkspace = m_Workspace
Dim pVersion As IVersion
’給定一個(gè)父版本
Set pVersion = pVerWorkspace.FindVersion (“FVer”)
’在當(dāng)前父版本的基礎(chǔ)上創(chuàng)建子版本
pVersion.CreateVersion (“NewVer”)
’重新定位到這個(gè)剛剛創(chuàng)建的子版本
Set pVersion = pVerWorkspace.FindVersion(“NewVer”)
’給這個(gè)子版本配置訪問(wèn)權(quán)限,這里以“公共”為例
pVersion.Access = esriVersionAccessPublic
’描述剛剛創(chuàng)建的子版本
pVersion.Description = “版本描述”
②版本刪除
Dim pVersion As IVersion
Dim pVersionWS As IVersionedWorkspace
Set pVersionWS = m_Workspace
’找到版本號(hào)為“NewVer”版本信息
Set pVersion = pVersionWS.FindVersion (“NewVer”)
’刪除該版本
pVersion.Delete
類(lèi)似的,可以用上述方式開(kāi)發(fā)完成空間數(shù)據(jù)版本管理最核心功能,利用ArcEngine開(kāi)發(fā)的基于ArcSDE的版本管理工具的界面與主要功能如圖4所示。
圖4 版本管理工具界面與功能
本文探討了基于ArcSDE的版本管理技術(shù)在實(shí)際數(shù)據(jù)生產(chǎn)和管理中的實(shí)現(xiàn)機(jī)制,并以云南省某基礎(chǔ)測(cè)繪數(shù)據(jù)生產(chǎn)部門(mén)的實(shí)際情況設(shè)計(jì)了版本管理技術(shù)的應(yīng)用模式、策略和實(shí)施步驟等,部署了以ArcSDE和Oracle數(shù)據(jù)庫(kù)為核心的版本管理軟硬件需求,給版本管理技術(shù)在實(shí)際測(cè)繪數(shù)據(jù)生產(chǎn)中的應(yīng)用建議了一套較為完整的設(shè)計(jì)方案。最后,還根據(jù)當(dāng)前版本管理實(shí)現(xiàn)技術(shù)的趨勢(shì),給出了利用組件GIS和ArcEngine的基礎(chǔ)測(cè)繪空間數(shù)據(jù)版本管理工具的技術(shù)路線和技術(shù)方法,并給出了具體的實(shí)驗(yàn)結(jié)果(軟件界面和主要功能),為推進(jìn)基礎(chǔ)測(cè)繪產(chǎn)品和成果的科學(xué)化管理提供了應(yīng)用工具。
[1] 晁輝. 淺析新形勢(shì)下基礎(chǔ)測(cè)繪成果管理中存在的問(wèn)題及對(duì)策[J].才智,2011(9):240-241
[2] 萬(wàn)宏德,李軍吉. 淺析基礎(chǔ)測(cè)繪項(xiàng)目實(shí)施過(guò)程中的管理工作[J].地理空間信息, 2012,10(3): 175-176
[3] 王飛.基礎(chǔ)測(cè)繪成果管理系統(tǒng)與空間數(shù)據(jù)庫(kù)動(dòng)態(tài)更新研究[D].江西:江西理工大學(xué),2008
[4] 何保國(guó),朱國(guó)賓. 基于版本管理的多用戶并發(fā)編輯控制策略研究[J]. 地理空間信息,2007,5(4):1-4
[5] 汪匯兵,唐新明,洪志剛. 版本差量式時(shí)空數(shù)據(jù)模型研究[J].測(cè)繪科學(xué),2006(5):131-133
[6] 夏宇,朱欣焰,咼維. 基于ArcSDE的空間數(shù)據(jù)版本管理問(wèn)題研究[J]. 計(jì)算機(jī)工程與應(yīng)用,2007(14):14-16
[7] 張沖,吳健平,錢(qián)大君. 基于ArcSDE的GIS版本管理應(yīng)用研究[J].甘肅聯(lián)合大學(xué)學(xué)報(bào):自然科學(xué)版,2007(21):65-70
[8] 操震洲,李清泉. 基于ArcSDE和ArcGIS Engine的版本管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J].測(cè)繪與空間地理信息,2006 ,29(2):75-78
[9] 孟成,彭明軍,石騫. Oracle+ArcSDE模式下空間數(shù)據(jù)庫(kù)用戶監(jiān)控技術(shù)研究[J]. 地理空間信息,2013,11(4):43-45
[10] 夏小裕,文鴻雁,蔣霖,等. 基于Oracle Spatial的基礎(chǔ)測(cè)繪信息管理、發(fā)布系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)[J]. 桂林工學(xué)院學(xué)報(bào),2006(1):69-72
[11] 楊昆,許泉立,彭雙云,等.基于GIS的警務(wù)決策支持系統(tǒng)的研究與開(kāi)發(fā)[J].測(cè)繪科學(xué),2006(3): 106-108
P208
B
1672-4623(2014)05-0013-04
10.3969/j.issn.1672-4623.2014.05.005
許泉立,博士,從事地理信息系統(tǒng)與地理模擬。
2013-10-30。
項(xiàng)目來(lái)源:云南省科技計(jì)劃資助項(xiàng)目(2011XX2005);云南省教育廳科技資助項(xiàng)目(2011Y307)。