許泉立,易俊華
(1.云南師范大學 旅游與地理科學學院,云南 昆明650092; 2.西部資源環境GIS技術教育部工程研究中心,云南 昆明650092;3.云南省航測遙感信息院,云南 昆明650032)
面向基礎測繪的空間數據版本管理工具研發
許泉立1,2,易俊華3
(1.云南師范大學 旅游與地理科學學院,云南 昆明650092; 2.西部資源環境GIS技術教育部工程研究中心,云南 昆明650092;3.云南省航測遙感信息院,云南 昆明650032)

以ESRI公司的空間數據庫服務端產品ArcSDE為平臺,利用ArcEngine開發組件,討論了版本管理技術在基礎測繪空間管理中的應用原理、模式、方法及其設計與實現過程,最后給出了軟件開發的界面及其主要功能。
ArcSDE;ArcEngine;版本管理;長事務處理;回溯
近幾年,空間數據庫技術,特別是面向對象的空間數據庫技術已經從理論邁向實際應用,諸如空間數據圖文表一體化無縫管理和多版本管理的技術為空間數據管理和維護提供了一種較好的解決機制[1-3]。版本管理能夠很好地支持地理空間數據編輯中遇到的“長事務處理”需求,同時通過引入版本沖突檢測和處理機制,較好地支持空間數據分布式編輯的長事務處理需求,并且可以無限保留歷史數據的快照備份,方便實現不同歷史時期數據的回溯[4,5]。本文利用空間數據引擎中間件ArcSDE和oracle數據庫,以基礎測繪生產部門為應用對象,探討海量空間數據版本管理的原理和實現策略、模式及其設計與實現過程,為版本管理在實際基礎測繪數據生產和管理中的運用提供管理思路和解決方案。
ArcSDE是ESRI公司推出的優秀空間數據引擎中間件,它具有一套完整的空間數據版本管理機制和策略,較好地解決了空間數據的并發訪問和多用戶編輯問題。利用其理念和技術,可以設計并開發空間數據版本管理工具,從而提升空間數據管理與編輯的效率[6]。
版本管理的實質是以某個數據作為基準數據,只記錄變化的情況和信息,不重復記錄不變的數據。在數據庫中,使用特定的表來分別記錄特征和對象被添加、刪除或修改的情況。因此,版本管理并不是簡單的數據復制,而是變化數據的快照和記錄。當ArcSDE服務器的一個實例第一次啟動時,就建立了數據庫缺省的狀態和版本(SDE.DEFAULT),它是所有版本的父版本,在它或它的子版本之下可以創建新版本。創建之初,子版本與父版本的數據狀態相同[7-8]。
多用戶編輯是版本管理的另一個特色,它通過對不同版本用戶權限的規定,靈活方便地定制(約束或者允許)針對該用戶和版本下空間數據的訪問或編輯權限。這種機制不僅有利于統一不同級別版本之間的聯絡和協作,而且可以大大提高版本管理中的安全性。ArcSDE中提供了3種用戶級別的版本權限,其描述如表1所示。

表1 ArcSDE版本管理中的用戶權限
另外,對于空間數據編輯中經常遇到的同要素編輯矛盾,ArcSDE也給出了專門的沖突檢測和處理方法,并且將最后的決定權交給沖突雙方的上級版本(用戶)來協調解決,較好地規避了并發用戶空間數據編輯的問題,提高了基礎測繪生產的效率。
2.1 版本管理模式設計
ArcSDE中默認Default是所有版本的祖先,其他創建的所有版本都是它的子版本,父版本與子版本之間組成一種樹狀關系,稱之為“版本樹”。ArcSDE提供了3種基本的版本管理模式來實現這些關系,分別是集中式、串聯式和并聯式。集中式又稱為單獨式,是最簡單的版本管理模式。該模式下只有一個版本,所有的用戶都直接在該版本上訪問和編輯空間數據。這種模式無法獨立完成空間數據編輯中的“長事務處理”要求。串聯式是一種簡單的版本繼承關系,可以無限擴展下去,所得子版本都歸屬于最近的父版本,直到它們最初的祖先版本為止。串聯式可以用于管理不同時期的空間數據。并聯式衍生出一系列一級子版本,這些子版本之間在級別上是并聯的,都歸屬于同一個父版本。這種版本模式適合管理不同地域的地理空間數據,有利于多用戶的分工合作,提高工作效率。
在實際中,版本模式的實現通常不是單一的,而是混合的,這樣才能夠充分發揮各種模式的優點,實現版本管理的高效運作。以航測遙感院的實際組織結構設置為例,版本管理的實際模式如圖1所示。

圖1 版本管理的混合模式
其中橫向為并聯式,豎向則為串聯式,而所有版本最終提交給一個父版本(Default)。版本的管理等級與實際的測繪生產管理級別相對應,分別部署不同的版本管理用戶,從而達到“實時互動,逐級決策,保障質量,安全生產”的測繪生產目標。決策層往往是對測繪任務進行下達和安排的領導層,這可能包括院行政中心部門和技術總監部門;監督層往往是生產任務的第一線部門,可能包括各分院、生產管理部門和質量監督部門等。為了引入協作機制,還可為技術開發和信息中心等輔助部門部署版本用戶,但原則上該版本只有瀏覽權限,而沒有編輯權限。作業層往往是一線工作人員,一般是一人一號,有時可以設置作業小組,每個小組分配一個版本帳號。
上述模式較好地規避了實際測繪生產中一些固有矛盾(比如多用戶編輯、重復生產、管理混亂等),將監督機制引入生產過程,分工明確,責權清晰,能有效提升基礎測繪部門的實際生產效率和安全性。
2.2 版本管理的應用策略
ArcSDE的版本管理有2種應用策略,即平臺托管式和系統開發式。平臺托管式就是在ArcGIS的桌面版本中嵌入版本管理工具,其優點是直觀、實用、便捷;缺點是不能完全滿足用戶的需求。系統開發式是指通過軟件開發和系統集成的方法來實現版本管理,優點是功能強大,定制靈活,缺點是基礎開發工作量較大,實現周期相對較長。系統開發還可視具體情況分別選用不同的開發模式,表2列舉了基于ArcSDE的版本管理應用策略及其說明。
具體采用哪種應用模式需要根據實際情況而定。一般情況下,如果生產規模偏小,數據版本本身不復雜,建議使用平臺托管式;如果生產規模較大,作業部門較多,建議使用系統開發式。

表2 版本管理的應用策略比較

圖2 版本管理的驅動及作用流程
2.3 版本管理的實施步驟
2.3.1 安裝和部署ArcSDE服務
一般情況下,ArcSDE可以和關系數據庫安裝在同一臺服務器上,該方法具有維護方便、節約成本和部署快捷等優點。
ArcSDE的安裝按照提示進行即可,部署的主要任務是創建服務和啟動服務,這既可以通過視窗操作實現,也可以通過sdeservice和sdemon提供的命令行實現,例如:
c:sdeservice-o create-d ORACLE,ORACLE_SID -p PASSWORD –n
其中,ORACLE表示鏈接的關系數據庫類型,ORACLE_SID表示與哪個數據庫實例建立鏈接。可以用O_oneBase表示一分院,O_twoBase表示二分院等,PASSWORD表示該數據庫的訪問密碼。
2.3.2 驅動版本管理功能
不管是平臺托管式還是軟件開發式,版本管理首先都是一個事務處理過程,這個過程應該包含了基礎測繪數據生產中所應該具有的版本管理功能。以云南省某測繪產品生產部門的應用為例,該部門空間數據版本管理的驅動和作用流程如圖2所示。
2.3.3 基于版本的數據備份與恢復[9,10]
數據的備份與恢復是基礎測繪產品生產和管理中不可缺少的重要環節,可從整體和局部來分別處理。整體備份與恢復主要通過關系數據庫本身提供的功能來實現,選擇何種備份方案依據具體情況而定。針對我院的實際情況,建議采用差異備份和增量備份即可,這樣不僅維護量小,而且節約備份的成本。局部備份則可依賴ArcSDE提供的技術支持完成。局部備份主要的操作對象是重要局部數據,比如大地控制點、元數據信息等。該操作需要利用ArcSDE提供的sdeexport命令完成,例如以下命令過程就是對版本號為Default的存儲在空間數據庫中的Road(道路)數據進行備份和恢復操作。
①將指定圖層的特定版本備份到備份文件:
sdeexport -o create -l Road,shape -f d: oad.exp -V Default -i O_oneBase -u sde -p sde
此操作將名為O_oneBase(一分院)的sde服務(ArcSDE for Oracle)內的指定圖層“Road”的Default版本備份到文件d: oad.exp中。
②拷貝備份文件到目標服務器上。
③將備份文件恢復至目標關系數據庫中:
sdeimport -o create -l MainRoad,shape -f d: oad.exp -i O_twoBase -u sde -p sde
此操作將備份文件恢復到名為O_twoBase(二分院)的sde服務(ArcSDE for Oracle)中,圖層名為:MainRoad。
2.3.4 版本管理工具的實現方法
總體來講,系統在技術實現上采用了組件GIS的設計與開發思想,利用ESRI的ArcEngine組件庫,實現了基于ArcSDE for oracle的空間數據版本管理工具軟件(如圖3)。

圖3 空間數據版本管理的技術實現機制
從圖3可以看出,基于AO/AE的組件GIS開發技術在系統的技術實現中起著至關重要的作用,也是系統技術實現的難點和重點。以下是版本創建和版本刪除等功能的實現示例。
對于版本創建和刪除,涉及到的組件接口主要是IversionedWorkspace和Iversion。第一個接口主要為版本創建指定一個已經存在的空間數據庫的邏輯位置,然后由Iversion接口創建一個新版本。
①版本創建
Dim pVerWorkspace As IVersionedWorkspace
’預先已經配置好的數據庫空間
Set pVerWorkspace = m_Workspace
Dim pVersion As IVersion
’給定一個父版本
Set pVersion = pVerWorkspace.FindVersion (“FVer”)
’在當前父版本的基礎上創建子版本
pVersion.CreateVersion (“NewVer”)
’重新定位到這個剛剛創建的子版本
Set pVersion = pVerWorkspace.FindVersion(“NewVer”)
’給這個子版本配置訪問權限,這里以“公共”為例
pVersion.Access = esriVersionAccessPublic
’描述剛剛創建的子版本
pVersion.Description = “版本描述”
②版本刪除
Dim pVersion As IVersion
Dim pVersionWS As IVersionedWorkspace
Set pVersionWS = m_Workspace
’找到版本號為“NewVer”版本信息
Set pVersion = pVersionWS.FindVersion (“NewVer”)
’刪除該版本
pVersion.Delete
類似的,可以用上述方式開發完成空間數據版本管理最核心功能,利用ArcEngine開發的基于ArcSDE的版本管理工具的界面與主要功能如圖4所示。

圖4 版本管理工具界面與功能
本文探討了基于ArcSDE的版本管理技術在實際數據生產和管理中的實現機制,并以云南省某基礎測繪數據生產部門的實際情況設計了版本管理技術的應用模式、策略和實施步驟等,部署了以ArcSDE和Oracle數據庫為核心的版本管理軟硬件需求,給版本管理技術在實際測繪數據生產中的應用建議了一套較為完整的設計方案。最后,還根據當前版本管理實現技術的趨勢,給出了利用組件GIS和ArcEngine的基礎測繪空間數據版本管理工具的技術路線和技術方法,并給出了具體的實驗結果(軟件界面和主要功能),為推進基礎測繪產品和成果的科學化管理提供了應用工具。
[1] 晁輝. 淺析新形勢下基礎測繪成果管理中存在的問題及對策[J].才智,2011(9):240-241
[2] 萬宏德,李軍吉. 淺析基礎測繪項目實施過程中的管理工作[J].地理空間信息, 2012,10(3): 175-176
[3] 王飛.基礎測繪成果管理系統與空間數據庫動態更新研究[D].江西:江西理工大學,2008
[4] 何保國,朱國賓. 基于版本管理的多用戶并發編輯控制策略研究[J]. 地理空間信息,2007,5(4):1-4
[5] 汪匯兵,唐新明,洪志剛. 版本差量式時空數據模型研究[J].測繪科學,2006(5):131-133
[6] 夏宇,朱欣焰,咼維. 基于ArcSDE的空間數據版本管理問題研究[J]. 計算機工程與應用,2007(14):14-16
[7] 張沖,吳健平,錢大君. 基于ArcSDE的GIS版本管理應用研究[J].甘肅聯合大學學報:自然科學版,2007(21):65-70
[8] 操震洲,李清泉. 基于ArcSDE和ArcGIS Engine的版本管理系統的設計和實現[J].測繪與空間地理信息,2006 ,29(2):75-78
[9] 孟成,彭明軍,石騫. Oracle+ArcSDE模式下空間數據庫用戶監控技術研究[J]. 地理空間信息,2013,11(4):43-45
[10] 夏小裕,文鴻雁,蔣霖,等. 基于Oracle Spatial的基礎測繪信息管理、發布系統設計及實現[J]. 桂林工學院學報,2006(1):69-72
[11] 楊昆,許泉立,彭雙云,等.基于GIS的警務決策支持系統的研究與開發[J].測繪科學,2006(3): 106-108
P208
B
1672-4623(2014)05-0013-04
10.3969/j.issn.1672-4623.2014.05.005
許泉立,博士,從事地理信息系統與地理模擬。
2013-10-30。
項目來源:云南省科技計劃資助項目(2011XX2005);云南省教育廳科技資助項目(2011Y307)。