關(guān)健,王曉靜
(撫順市勘察測(cè)繪院,遼寧撫順 113008)
ArcSDE數(shù)據(jù)的應(yīng)用
——?dú)v史庫(kù)更新過(guò)程
關(guān)健?,王曉靜
(撫順市勘察測(cè)繪院,遼寧撫順 113008)
介紹了ArcSDE數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)和歷史庫(kù)更新的原理,主要說(shuō)明ArcSDE數(shù)據(jù)在ArcGIS中歷史庫(kù)更新的過(guò)程。
ArcSDE數(shù)據(jù)庫(kù);ArcGIS;歷史庫(kù);數(shù)據(jù)更新
隨著城市建設(shè)和經(jīng)濟(jì)社會(huì)的不斷發(fā)展,城市面貌在無(wú)時(shí)無(wú)刻地發(fā)生著改變,我們必須準(zhǔn)確、及時(shí)地跟蹤這種變化,將其及時(shí)反映到空間基礎(chǔ)數(shù)據(jù)庫(kù)中,只有這樣,才能滿足各行各業(yè)對(duì)城市空間基礎(chǔ)數(shù)據(jù)的需求,所建設(shè)的數(shù)字城市空間基礎(chǔ)數(shù)據(jù)庫(kù)才有生命力。簡(jiǎn)單地說(shuō),數(shù)據(jù)更新就是用新的數(shù)據(jù)取代舊的數(shù)據(jù)。城市空間基礎(chǔ)數(shù)據(jù)庫(kù)更新的核心問(wèn)題有兩個(gè):一是如何用新的數(shù)據(jù)取代數(shù)據(jù)庫(kù)中已有的數(shù)據(jù);二是如何保存歷史數(shù)據(jù),并根據(jù)需要進(jìn)行歷史數(shù)據(jù)的回溯。我院現(xiàn)階段地形圖數(shù)據(jù)更新方法是采用分幅更新的方法,采取這種方法的缺點(diǎn)是,產(chǎn)生大量的數(shù)據(jù)文件,數(shù)據(jù)的調(diào)用和漫游要頻繁地聯(lián)接各個(gè)圖幅文件,當(dāng)范圍較大、圖幅數(shù)很多時(shí),將導(dǎo)致數(shù)據(jù)庫(kù)的聯(lián)接速度非常慢,以至于不可用。因此,對(duì)于這種范圍大、數(shù)據(jù)量大的基礎(chǔ)數(shù)據(jù),如1∶500地形圖數(shù)據(jù),采用分要素(即分層)組織進(jìn)行。在ArcGIS下建庫(kù)管理的方法更科學(xué)、實(shí)用,ArcGIS 9.2新增加歷史庫(kù)更新的功能,可以避免分幅存儲(chǔ)的弊端,提高系統(tǒng)運(yùn)行效率。本文主要介紹ArcSDE數(shù)據(jù)在ArcGIS中歷史庫(kù)更新的過(guò)程。
ArcSDE在多用戶DBMS上新建一個(gè)SDE服務(wù)時(shí)產(chǎn)生了一個(gè)多用戶GeoDatabase模型,為了實(shí)現(xiàn)該模型,ArcSDE會(huì)在DBMS中新建互相關(guān)聯(lián)的61個(gè)字典表和多個(gè)觸發(fā)器對(duì)象。
以SQL Server作為數(shù)據(jù)庫(kù)為例,ArcSDE在SQL Server中建立的字典表分為兩部分,一是以GDB開(kāi)頭的系統(tǒng)表,它們與數(shù)據(jù)存儲(chǔ)有關(guān);其他均為輔助表,用于記錄顯示信息、XML、License許可等信息。
在系統(tǒng)表中,有如下幾個(gè)重要的字典表:
GDB_OBJECTCLASSES表,該表記錄存儲(chǔ)在SDE中所有的對(duì)象類(objectclass)信息,包括這些對(duì)象類在數(shù)據(jù)庫(kù)中的唯一索引號(hào)。
GDB_FEATURECLASSES表,該表中記錄的對(duì)象類均為要素類;GDB_FEATUREDATASET表,記錄GeoDatabase中存在的要素?cái)?shù)據(jù)集。
圖1 一個(gè)要素類的組成關(guān)系圖
GEOMETRY_COLUMNS表是一個(gè)關(guān)聯(lián)表,用于關(guān)聯(lián)一個(gè)要素類的B表和F表。要素類是一個(gè)邏輯概念,它并不是一張表組成的,而是通過(guò)如下幾個(gè)表共同維護(hù),以要素類Test為例,它的組成表包括:
(1)Business Table——即B表,業(yè)務(wù)表的表名與要素類名相同,為Test。它在邏輯上表現(xiàn)要素類,它存儲(chǔ)了要素類所有的非空間信息和空間字段SHAPE,該字段并不存儲(chǔ)實(shí)際的空間數(shù)據(jù),而是一個(gè)指向該要素類F表的索引值。
(2)Feature Table——即F表,它存儲(chǔ)一個(gè)要素類的空間信息和元數(shù)據(jù)。這些表以F開(kāi)頭,如F110,110則是要素類在SDE中的唯一索引號(hào)。要素類中的空間信息由F表的POINTS字段存儲(chǔ),它是Long Raw類型,用于保存二進(jìn)制文件。
(3)Spatial Index Table——即S表,空間索引表,存儲(chǔ)索引相關(guān)的信息,ArcSDE使用網(wǎng)絡(luò)索引機(jī)制。
(4)Delta Table——如果一個(gè)要素類被注冊(cè)為版本(Version),則就會(huì)出現(xiàn)Delta表,這種表有兩種類型,即A表——Add Table,用于記錄被添加的要素類和D表,用于記錄被刪除的要素類。
當(dāng)用戶通過(guò)ArcSDE在一個(gè)要素類中編輯要素的時(shí)候,B、F和S表(如果使用了版本機(jī)制,還有Delta表)會(huì)通過(guò)一種被稱為Trigger(觸發(fā)器)的過(guò)程性約束進(jìn)行互動(dòng)。如B表中刪除一條要素后,F(xiàn)表和S表中的相應(yīng)記錄也會(huì)被觸發(fā)器刪除。
ArcSDE數(shù)據(jù)進(jìn)行注冊(cè),注冊(cè)后創(chuàng)建歷史圖層,歷史圖層的數(shù)據(jù)是原圖層的拷貝,但可以看到多了3個(gè)字段:GDB_FROM_DATE,GDB_TO_DATE,GDB_ARCHIVE_OID。看到這3個(gè)字段,前面兩個(gè)字段際是指明了圖形對(duì)象的存活時(shí)間,GDB_FROM_DATE即圖形的創(chuàng)建時(shí)間,GDB_TO_DATE是圖形的刪除或修改時(shí)間。圖形的操作可分為增、刪、改三種類型,修改又可以看成是先刪除再新增一個(gè)圖形對(duì)象,所以所有的操作又可歸為增、刪兩種操作,這就是那兩個(gè)字段的由來(lái)。GDB_ARCHIVE_OID,是對(duì)象 ID編號(hào)。通過(guò)ArcSDE實(shí)現(xiàn)的版本空間數(shù)據(jù)庫(kù)不會(huì)從物理上刪除數(shù)據(jù),它通過(guò)Delta表來(lái)監(jiān)測(cè)不同版本情況下的要素變化,在歷史圖層上記載圖形的刪除時(shí)間。在版本Geo-Database數(shù)據(jù)庫(kù)中,對(duì)一個(gè)要素類的編輯有如下幾種情況:
(1)插入一條要素,該要素的信息將被記錄在A表中;
(2)刪除一條要素,該要素的信息將被記錄在D表中;
(3)更新一條要素,更新要素是一個(gè)先刪除后插入的過(guò)程,ArcSDE會(huì)先在D表中記錄舊要素的信息,然后在A表中記錄新要素的信息。
首先需要安裝必要的軟件,主要有 SQL Server 2005、ArcGIS 9.2 Desktop、ArcSDE9 For Sql Server。更新歷史庫(kù)的具體步驟如下:
第一步,要建立數(shù)據(jù)連接 Add Spatial Database Connection,將地形圖數(shù)據(jù)導(dǎo)入新建數(shù)據(jù)集(Feature DataSet)中;
第二步,版本注冊(cè),打開(kāi)ArcCatalog新建一個(gè)到默認(rèn)版本的連接,然后選擇該圖層,點(diǎn)擊右鍵,在彈出菜單中點(diǎn)擊Register As Versioned,這一點(diǎn)與9.1版本中一樣的,只有注冊(cè)版本,才能進(jìn)行下一步“創(chuàng)建歷史庫(kù)”;
第三步,創(chuàng)建歷史庫(kù),在 ArcCatalog中選擇該圖層,點(diǎn)擊右鍵,發(fā)現(xiàn)Archiving,包含兩個(gè)子菜單,Enable Archiving和Disable Archiving。點(diǎn)擊Enable Archiving,這時(shí)系統(tǒng)會(huì)自動(dòng)為該圖層創(chuàng)建一個(gè)對(duì)應(yīng)的歷史圖層,歷史圖層的名稱為SDE.SDE.ZD_H。
第四步,啟用歷史編輯選項(xiàng),在ArcCatalog中,點(diǎn)擊Tools菜單下的Options,在“選項(xiàng)”窗口中,切換到Geoprocessing頁(yè),選中Log geoprocessing operations to as historical model,這樣我們?cè)诰庉媹D形時(shí),編輯過(guò)程中產(chǎn)生的歷史數(shù)據(jù)會(huì)自動(dòng)記錄到歷史圖層中。
第五步,編輯圖形,全部建完,就可以進(jìn)行數(shù)據(jù)更新了,打開(kāi)ArcMap,選擇圖層,將有變化的圖形進(jìn)行刪除,增加更新的圖形,編輯完成后,Save Edit;
第六步,新建一個(gè)到歷史數(shù)據(jù)庫(kù)的連接,在Arc-Catalog或ArcMap的選擇數(shù)據(jù)對(duì)話框中都可以完成。在ArcMap中點(diǎn)Source,在圖層上點(diǎn)右鍵,選擇Change Version,在Version Type中選擇Historical,或在ArcCatalog中,在圖層上點(diǎn)右鍵,選擇Connection Properties,選擇Change我們選擇The connection refers to a historical version,并選擇是連接到歷史標(biāo)記還是指定一個(gè)時(shí)間點(diǎn)。
第七步:歷史數(shù)據(jù)瀏覽,連接建好了之后,在Arc-Map我們用該連接打開(kāi)數(shù)據(jù)sde.sde.zd。在ArcMap工具欄上點(diǎn)擊右鍵,點(diǎn)擊Geodabase History,會(huì)出現(xiàn)歷史庫(kù)工具條,如圖,該工具條有3個(gè)按鈕,分別是:
(1)Geodatabase History Viewer:即歷史數(shù)據(jù)瀏覽工具。
(2)Add Historical Archive:即添加歷史圖層到地圖上。
(3)Historical Marker Manager:即歷史標(biāo)記管理器。
點(diǎn)擊Add Historical Archive工具按鈕,會(huì)將選中圖層對(duì)應(yīng)的歷史圖層添加到地圖窗口中,可以看到,歷史圖層包括了編輯過(guò)程中產(chǎn)生的所有數(shù)據(jù)。查看屬性,可以看到它的數(shù)據(jù)源為SDE.SDE.ZD_H,還可以到字段列表中查看新增的字段情況。筆者創(chuàng)建了三個(gè)歷史標(biāo)簽,分別是“初始狀態(tài)”,“新建AB”,“刪除A移動(dòng)B”,點(diǎn)擊Historical Marker Manager工具按鈕,這樣就會(huì)一目了然,如圖2所示。
點(diǎn)擊Geodatabase History Viewer,會(huì)出現(xiàn)圖3所示界面。如果你是用歷史連接添加數(shù)據(jù),這個(gè)界面會(huì)處于不可用的狀態(tài)。
圖2 管理、編輯歷史標(biāo)簽
圖3 選擇瀏覽歷史數(shù)據(jù)
在Historical Date and Time中,可以選擇一個(gè)歷史標(biāo)記,也可以選擇一個(gè)具體的時(shí)間,點(diǎn)擊Apply按鈕,就可以查看該歷史時(shí)點(diǎn)的數(shù)據(jù)了。如圖4、5、6所示,顯示的是不同歷史時(shí)點(diǎn)的圖形狀況。
圖4 時(shí)間:16:20:09初始狀態(tài)
圖5 時(shí)間:16:22:50創(chuàng)建圖形A、B
圖6 時(shí)間:16:26:06刪除圖形A、移動(dòng)B
ArcSDE是目前最流行的空間數(shù)據(jù)管理軟件之一,它抽象了空間數(shù)據(jù)對(duì)象模型,使用戶可以利用標(biāo)準(zhǔn)DBMS存儲(chǔ)和管理海量的空間數(shù)據(jù)。通過(guò)ArcGIS平臺(tái)可以直接按日期屬性查詢,查詢某一時(shí)期的地理數(shù)據(jù),這樣不但保證數(shù)據(jù)的現(xiàn)勢(shì)性,還可以瀏覽任意歷史時(shí)間數(shù)據(jù)??臻g數(shù)據(jù)庫(kù)的存儲(chǔ)和管理是一個(gè)復(fù)雜而長(zhǎng)期的動(dòng)態(tài)過(guò)程,還需要我們不斷地去研究,在以后的工作中逐漸去改進(jìn)。
[1]吳秀芹,張洪巖,李瑞改等.ArcGIS9地理信息系統(tǒng)應(yīng)用與實(shí)踐.北京:清華大學(xué)出版社,2007
[2]郭微,韓曉竹.城市基礎(chǔ)地理信息數(shù)據(jù)在ArcSDE中的更新研究.遼寧測(cè)繪,2008(1)
ArcSDE Application Data-the Update Process History Database
Guan Jian,Wang XiaoJing
(Fushun Surveying and Mapping Institute,F(xiàn)ushun 113008,China)
This paper introduces the logic of ArcSDE database structure and update the principles of the history of the Treasury,inter alia,arcgis in ArcSDE data in the process of updating the history database.
ArcSDE database;ArcGIS;the history of the Treasury;Data Update
1672-8262(2010)02-62-03
P208
B
2009—07—16
關(guān)健(1978—),女,軟件設(shè)計(jì)工程師,現(xiàn)從事數(shù)據(jù)管理及GIS開(kāi)發(fā)應(yīng)用工作。