城市DLG數(shù)據(jù)庫元數(shù)據(jù)組織與管理研究
城市DLG數(shù)據(jù)庫元數(shù)據(jù)組織與管理研究
城市DLG數(shù)據(jù)庫元數(shù)據(jù)組織與管理研究(四)
4.7.2.2元數(shù)據(jù)庫更新
從元數(shù)據(jù)更新的角度本文將元數(shù)據(jù)的內(nèi)容分為:(l)穩(wěn)定的元數(shù)據(jù),主要指一旦生成其元數(shù)據(jù)值就很少改變,如數(shù)據(jù)質(zhì)量信息、空間參考信息、元數(shù)據(jù)參考信息及數(shù)據(jù)格式信息等。(2)可同步元數(shù)據(jù),該部分元數(shù)據(jù)依賴于空間數(shù)據(jù),數(shù)據(jù)更新后可同步元數(shù)據(jù)值就要進行相應(yīng)的更新,否則就無法準確的描述該空間數(shù)據(jù)。(3)動態(tài)元數(shù)據(jù),主要指數(shù)據(jù)更新信息元數(shù)據(jù)子集,該部分元數(shù)據(jù)內(nèi)隨著數(shù)據(jù)的不斷更新而增長,是增量式元數(shù)據(jù),該部分元數(shù)據(jù)值由系統(tǒng)生成,不允許修改。數(shù)據(jù)更新信息元數(shù)據(jù)子集包含數(shù)據(jù)更新方式、更新范圍、更新內(nèi)容和更新的資料源等信息,這些信息有助于數(shù)據(jù)生產(chǎn)和管理部門對城市DLG數(shù)據(jù)庫進行數(shù)據(jù)更新控制,避免重復(fù)更新。城市DLG數(shù)據(jù)庫各類元數(shù)據(jù)并非獨立的,而是自上而下存在著一定的繼承關(guān)系,因而元數(shù)據(jù)更新也不是獨立進行的。如,當某個要素圖層的數(shù)據(jù)被更新后,不但要更新要素類級元數(shù)據(jù),還要進行數(shù)據(jù)庫級元數(shù)據(jù)、要素集級元數(shù)據(jù)和圖幅級元數(shù)據(jù)的更新。為維護元數(shù)據(jù)庫與空間數(shù)據(jù)庫的關(guān)聯(lián)性,必要時一定要進行相應(yīng)關(guān)聯(lián)信息的更新。圖幅級元數(shù)據(jù)更新情況比較復(fù)雜,在DLG數(shù)據(jù)庫中DLG數(shù)據(jù)是無縫存儲的,圖幅所對應(yīng)的是一定的空間位置和范圍。圖幅元數(shù)據(jù)的更新不但與數(shù)據(jù)更新內(nèi)容、更新方式和更新范圍有關(guān)還要考慮更新資料源。城市DLG數(shù)據(jù)庫更新后,數(shù)據(jù)圖層與圖幅級元數(shù)據(jù)的關(guān)系及其復(fù)雜,同一圖幅內(nèi)不同的圖層對應(yīng)不同的圖幅級元數(shù)據(jù),同一圖層內(nèi)不同的范圍對應(yīng)不同的圖幅級元數(shù)據(jù)。
4.73元數(shù)據(jù)庫同步更新實現(xiàn)
4.73.1自動更新傳播機制
自動更新傳播就是當系統(tǒng)中一個對象發(fā)生改變時,其它與之關(guān)聯(lián)或依賴它的對象將被通知利用其更新信息進行相應(yīng)的操作及時更新自身信息以保持與相應(yīng)對象的一致性和同步性,并維護二者之間的相關(guān)約束規(guī)則〔56]。自動更新傳播是通過消息機制來實現(xiàn)的',無論何時當一個對象發(fā)生改變時,它將向與之關(guān)聯(lián)的對象發(fā)送消息,通知它們自動更新。我們所考慮的主要問題是,當城市DLG數(shù)據(jù)庫被更新時,如何向元數(shù)據(jù)庫傳播更新。在進行城市DLG數(shù)據(jù)庫更新操作時必然會觸發(fā)相應(yīng)的Geodatabase數(shù)據(jù)模型對象事件,城市DLG數(shù)據(jù)庫元數(shù)據(jù)組織與管理研究
GeoDatabase類庫為開發(fā)者提供了豐富的事件接口,通過事件接口我們就可以訪問和處理這些對象事件,編寫事件處理程序。事件處理程序用來監(jiān)測和響應(yīng)對象事件,事件處理本質(zhì)上是一個對象通知其他對象發(fā)生了某事件的一個過程,所以可以應(yīng)用事件處理程序進行城市DLG數(shù)據(jù)庫與元數(shù)據(jù)庫之間的更新傳播。事件處理程序不可能獨立存在,若要實現(xiàn)這些事件處理程序還需要一定機制的支持,可以通過支持這些事件處理的類擴展和工作空間擴展來實現(xiàn)更新的傳播,它們是擴展Geodatabase數(shù)據(jù)模型行為的兩種重要方式。所以本文將通過擴展GeedatabaS。數(shù)據(jù)模型行為,實現(xiàn)城市DLG元數(shù)據(jù)庫的同步更新,也就說通過為DLG數(shù)據(jù)庫進行行為建模,使其具有了自動更新其元數(shù)據(jù)庫的行為功育旨。
4.73.2擴展GeoDatabase數(shù)據(jù)模型
Geodatabase數(shù)據(jù)模型引入了地理空間要素的行為、規(guī)則和關(guān)系,當處理Geodatabase中的要素時,對其基本的行為和必須滿足的規(guī)則,無需通過程序編碼來實現(xiàn),對其特殊的行為和規(guī)則,則可以通過數(shù)據(jù)模型模型擴展進行客戶化定義。
(1)要素類擴展
ArcInfo中最高形式的定制是創(chuàng)建自定義要素。要素某些復(fù)雜或特殊行為不能用現(xiàn)有的規(guī)則來表達是,可以通過要素類擴展 (FeatureClassExtensions)進行要素類特殊行為的定制。要素類是對對象類的繼承,對象類沒有空間特征,但每個對象類都有其屬性、行為和規(guī)則。對象類的行為是用行為類來實現(xiàn)的,這些行為存儲在一個動態(tài)鏈接庫中,與C伽(組件對象模型)體系一致「51’。要素類擴展是對類擴展的繼承。類擴展是一種最重要和最簡單的擴展地理數(shù)據(jù)模型行為的(Geodatabase)方法。類擴展是一種自定義的方式是由于它基于要素類本身,通常類擴展提供以下幾種功能:定義復(fù)雜的驗證規(guī)則、處理編輯事件、增強屬性對話框、自定義要素類渲染、自動生成表格和要素類的結(jié)構(gòu)描述信息等。我們想要定制的要素類行為是,當要素類模式被更新時實現(xiàn)元數(shù)據(jù)庫更新,涉及的事件接口為IobjectClasSSchemaEvents,要素類模式更新所觸發(fā)的具體事件為:添加字段事件,當為一個對象類添加一個新字段時便觸發(fā)該事件;刪除字段事件,當刪除一個對象類字段時便觸發(fā)該事件。類擴展相對于應(yīng)用定制有其優(yōu)勢,也有不足。類擴展在任何情況下都是有效的,并不依賴于具體的應(yīng)用,但是一個對象類只能有一個類擴展,要實現(xiàn)多項功能只能進行代碼融合。若要將定義的類擴展應(yīng)用于城市DLG數(shù)據(jù)庫中的要素類,需要經(jīng)過以下配置:首先將該類擴展的COM組件注冊到ESRI的組件分類管理器中,再將想要定制的要素類的參數(shù)EXTCLSID值設(shè)置為該COM組件的全球唯一標識碼,那么該要素類就具有當其模式發(fā)生改變時自動更新與之相連的元數(shù)據(jù)庫的行為了。
(2)Geodatabase工作空間擴展
工作空間擴展是擴展Geodatabase行為的另一種方法,這些自定義擴展功能應(yīng)用于整個數(shù)據(jù)庫而非單個數(shù)據(jù)集,就如類擴展,工作空間擴展也只能應(yīng)用于地理數(shù)據(jù)模型(Geodatabase)。工作空間擴展支持自定義接口,可以實現(xiàn)工作空間編輯事件、版本事件和數(shù)據(jù)集創(chuàng)建、刪除和重命名事件處理,隱藏用戶無權(quán)瀏覽或編輯的要素集或要素類。版本是 ArcInf。軟件在多用戶關(guān)系數(shù)據(jù)庫基礎(chǔ)上,依托于ArcSDE服務(wù)而提供的長事務(wù)處理工具,有了版本機制就不用去復(fù)制或鎖定空間數(shù)據(jù)庫,一樣能夠?qū)崿F(xiàn)Geodatabase的多用戶編輯。所有的AreSDEGeodatabase均具有默Default)版本,所有版本的最原始的源就是Default版本。arogisg.1版本對存儲在ArcSDE中的空間數(shù)據(jù)只提供版本編輯功能,到了9.2才增加了非版本化編輯功能,以及不完全版本化編輯功能。對ArcSDE數(shù)據(jù)庫的編輯操作一般都是基于完全版本化的,如果不注冊版本和注冊為不完全版本化就會損失很多功能,如數(shù)據(jù)歸檔和數(shù)據(jù)庫復(fù)制等。非版本編輯一般用于特殊情況下,如存在第三方客戶端的情況下提供的一個解決方案。版本是Geodatabase的某時刻的狀態(tài),經(jīng)過編輯后不同版本所表現(xiàn)的要素視圖一般是不同的,只有Default版本的數(shù)據(jù)發(fā)生變化時才認為DLG數(shù)據(jù)庫被更新了。ArcSDE能夠通過提交版本更新的方式來維護和更新Default版本,也可以對其直接編輯。更新ArcSDE數(shù)據(jù)庫中的數(shù)據(jù)時,一般都要先創(chuàng)建編輯版本,對編輯版本進行城市DLG數(shù)據(jù)庫元數(shù)據(jù)組織與管理研究更新,確認更新無誤后再提交給默認版本。但如果工作單元都是小規(guī)模的,也會直接對默認版本進行編輯更新。所以可以通過處理版本事件和工作空間編輯事件,及時響應(yīng)城市DLG數(shù)據(jù)庫數(shù)據(jù)更新,實現(xiàn)元數(shù)據(jù)庫同步更新。針對上述兩種情況分別定義了:Default版本提交更新工作空間擴展,用來實現(xiàn)版本事件處理序和Default版本編輯更新工作空間擴展,用來實現(xiàn)工作空間編輯事件處理程序。Defaul微本編輯更新
Geodatabase各版本之間的本質(zhì)區(qū)別在于行狀態(tài)而不是數(shù)據(jù)庫方案,數(shù)據(jù)庫方案的變化不受版本限制,可以快速應(yīng)用到Geodatabase的所有版本中。當為城市DLG數(shù)據(jù)庫添加、刪除或重命名要素類、要素集時,就會改變數(shù)據(jù)庫方案并觸發(fā)工作空間事件(添加數(shù)據(jù)集事件、刪除數(shù)據(jù)集事件或重命名數(shù)據(jù)集事件),通過定義工作空間擴展可以處理這些事件,實現(xiàn)數(shù)據(jù)庫方案更新時自動更新元數(shù)據(jù)庫。只要城市 DLG數(shù)據(jù)庫發(fā)上了上述三種變化,就會觸發(fā)相應(yīng)事件自動執(zhí)行事件處理程序。如果添加的數(shù)37城市DLG數(shù)據(jù)庫元數(shù)據(jù)組織與管理研究據(jù)集并不是我們所感興趣或者只是一種輔助數(shù)據(jù),便沒有必要為其創(chuàng)建元數(shù)據(jù),可以通過交互功能由用戶確定要不要為該數(shù)據(jù)集創(chuàng)建元數(shù)據(jù)。
一般有兩種方法配置工作空間擴展,一是注冊到某個Geodatabase數(shù)據(jù)庫中,它對所有訪問該地理空間數(shù)據(jù)庫所有用戶有效;一是注冊到ESRI的組件分類管理器中的 GeodatabaseworkspaceExtensions中,它對創(chuàng)建的所有Geodatabase有效。一般情況都采第一種注冊方式,因為擴展功能都是針對特定的數(shù)據(jù)庫而定制的。進行數(shù)據(jù)庫連接時便會初始化己被注冊的自定義工作空間擴展,當觸發(fā)相應(yīng)事件時自動執(zhí)行該事件處理程序完成元數(shù)據(jù)庫的更新。
4.73.3元數(shù)據(jù)庫同步更新實現(xiàn)流程
元數(shù)據(jù)庫同步更新是一個復(fù)雜的過程,除了擴展Geodatabase數(shù)據(jù)模型行為,本文還對己開發(fā)實現(xiàn)的圖幅更新和任意范圍更新功能進行了擴展,通過截獲操作記錄數(shù)據(jù)更新內(nèi)容、更新范圍和更新方式,元數(shù)據(jù)庫更新時會讀取這些更新信息并生成相應(yīng)的元數(shù)據(jù)值。這些信息可以更好的反映城市DLG數(shù)據(jù)庫的更新狀況,有助于達到控制更新的目的,避免重復(fù)更新。元數(shù)據(jù)值的獲取方式有兩種,一是當用戶完成對空間數(shù)據(jù)的更新后,程序自動獲取需要的元數(shù)據(jù)值,一次性地完成所有可同步元數(shù)據(jù)值的提取并更新,可稱為隱式同步更新,通常對要素類或要素集元數(shù)據(jù)的更新就是隱式同步更新;另一種方式就是在元數(shù)據(jù)同步更新時,需更新的元數(shù)據(jù)內(nèi)容由用戶提供,經(jīng)過元數(shù)據(jù)內(nèi)容的提取、轉(zhuǎn)換后更新元數(shù)據(jù),可稱為交互同步更新,對圖幅級元數(shù)據(jù)的更新通常采用上述兩種方式的結(jié)合,但以交互同步更新方式為主。城市DLG數(shù)據(jù)庫元數(shù)據(jù)組織與管理研究要素類擴展工作空間擴展
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 yyfangchan@163.com (舉報時請帶上具體的網(wǎng)址) 舉報,一經(jīng)查實,本站將立刻刪除