Oracle數(shù)據(jù)倉(cāng)庫(kù)的分層管理器解決方案開(kāi)發(fā)者網(wǎng)絡(luò)Oracle
關(guān)鍵字 分層管理器 元數(shù)據(jù) 快速瀏覽
前言
21世紀(jì)是信息的世紀(jì),綜合國(guó)力的競(jìng)爭(zhēng)在很大程度上是信息的競(jìng)爭(zhēng),更是信息利用率的競(jìng)爭(zhēng)。近年來(lái),隨著“數(shù)字地球”和“數(shù)字國(guó)土”戰(zhàn)略的提出和實(shí)施,地學(xué)領(lǐng)域的海量數(shù)據(jù)飛速增長(zhǎng),數(shù)據(jù)的存儲(chǔ)、分析、管理和處理變得日益復(fù)雜。隨著Oracle技術(shù)的成熟,尤其是8.15本版后Oracle Spatial的出現(xiàn),數(shù)據(jù)倉(cāng)庫(kù)在海量數(shù)據(jù)存儲(chǔ)、分析和表達(dá)方面有著無(wú)可比擬的優(yōu)勢(shì)。同時(shí),由于信息量的巨大,傳統(tǒng)的數(shù)據(jù)存儲(chǔ)和顯示方式在大范圍數(shù)據(jù)快速瀏覽方面顯得力不從心,這樣有必要改變空間數(shù)據(jù)的存儲(chǔ)方式,加載需要的空間數(shù)據(jù)部分,避免不必要數(shù)據(jù)的反復(fù)加載和卸載。
分層管理器
1、分層管理器架構(gòu)
分層管理器是實(shí)現(xiàn)大范圍數(shù)據(jù)的快速瀏覽的關(guān)鍵部分,它控制了逐層細(xì)化表的結(jié)構(gòu)和元數(shù)據(jù)的定義和賦值,定義了組件表中的關(guān)鍵信息,給出了空間數(shù)據(jù)的來(lái)源、數(shù)據(jù)挖掘規(guī)則、圖層加載范圍和圖形編輯、輸出和保存。分層管理器有兩部分組成,分別為:
a) 一組存儲(chǔ)于Oracle數(shù)據(jù)倉(cāng)庫(kù)中的空間數(shù)據(jù)表,用于逐層細(xì)化圖層中的每個(gè)詳細(xì)信息層,這些表稱為組件表;
b) 一個(gè)空表,包含該表的結(jié)構(gòu)定義和描述組件表的特殊元數(shù)據(jù),該表稱為逐層細(xì)化表。任何逐層細(xì)化應(yīng)用程序均需要逐層細(xì)化表,從中可以了解逐層細(xì)化圖層中各層的層次關(guān)鍵字描述,以及它們之間的層次關(guān)聯(lián)方式。進(jìn)行分層時(shí),分層管理器作為程序的一部分,確定需要添加的子圖元所在的圖層及其關(guān)鍵字,以便確定在逐層細(xì)化圖層中需要添加和刪除的圖元信息。
逐層細(xì)化圖層是一種特殊的地圖圖層,它是有自己表結(jié)構(gòu)的空白圖層,并用元數(shù)據(jù)規(guī)定了所有加載圖層的一些規(guī)則和限制,所顯示出來(lái)的地圖信息是按照元數(shù)據(jù)規(guī)定的規(guī)則從其它表或數(shù)據(jù)庫(kù)中提取出來(lái)的。在地圖中顯示逐層細(xì)化圖層時(shí),分層管理器會(huì)創(chuàng)建一個(gè)臨時(shí)表,然后將組件表中的圖元復(fù)制到該臨時(shí)表中。逐層細(xì)化圖層中顯示的圖元實(shí)際上是組件表中圖元的副本。這樣就可以靈活的在圖層上面加載需要的信息。在應(yīng)用程序終止時(shí),將丟棄該臨時(shí)表,為了保存有用的專題圖信息,可以對(duì)提取出來(lái)的圖層進(jìn)行保存。此時(shí),如果用戶查看圖層信息時(shí),逐層細(xì)化圖層仍將是單個(gè)圖層。
逐層細(xì)化表的要求作為分層管理器的組織核心部分,它定義了元數(shù)據(jù)關(guān)鍵字和三個(gè)標(biāo)準(zhǔn)列:關(guān)鍵字、層和標(biāo)簽。并有著自己的一套語(yǔ)法:
(1) 關(guān)鍵字 begin_metadata 標(biāo)記逐層細(xì)化表中元數(shù)據(jù)部分的開(kāi)頭。
(2) 每行元數(shù)據(jù)包含兩個(gè)元素:關(guān)鍵字和值。所有關(guān)鍵字和值均使用雙引號(hào)引起來(lái)。
(3) 逐層細(xì)化表必須包含 \IsDrilldown 關(guān)鍵字,該關(guān)鍵字的值必須為 True。
(4) 每個(gè)關(guān)鍵字以“\”(反斜線)開(kāi)頭。
(5) 元數(shù)據(jù)關(guān)鍵字可以在層次結(jié)構(gòu)中嵌套。層次結(jié)構(gòu)中的每一層以反斜線 (\) 標(biāo)記。
(6) 元數(shù)據(jù)包括 \DDMap\ComponentMaps\ 關(guān)鍵字層次結(jié)構(gòu)。在該層次結(jié)構(gòu)中為每個(gè)組件表指定四個(gè)元數(shù)據(jù)關(guān)鍵字。

分層管理器的分層原理圖如圖1所示,從圖中可以看出,分層管理器有兩部分組成:組件表和逐層細(xì)化表組成,分層管理器根據(jù)系統(tǒng)的要求以數(shù)據(jù)挖掘的方式從Oracle數(shù)據(jù)倉(cāng)庫(kù)中提取數(shù)據(jù),形成組件表中的某個(gè)圖層,然后確定需要加載圖層的名稱和圖層中的部分,并加載到逐層細(xì)化表中。如果是第一次加載,此時(shí)的逐層細(xì)化表是空白圖層,在加載過(guò)程中,逐層細(xì)化表不斷的進(jìn)行圖元信息的增加和刪除,這樣會(huì)出現(xiàn)每個(gè)組件表中的部分信息顯示在逐層細(xì)化表所示的圖層中。這樣輸出所需要的圖層,并對(duì)它進(jìn)行編輯,由于逐層細(xì)化表中數(shù)據(jù)是個(gè)組件表中的副本,需要對(duì)編輯后的圖層進(jìn)行另存,形成專題圖。
分層管理器首先形成空白圖層,通過(guò)分層管理器用數(shù)據(jù)挖掘工具從Oracle數(shù)據(jù)倉(cāng)庫(kù)中提取數(shù)據(jù),根據(jù)分層管理器的元數(shù)據(jù)規(guī)則形成一級(jí)的圖層,在該圖層中,通過(guò)響應(yīng)事件,以確定加載二級(jí)圖層的圖層名稱和該圖層中的加載部分,相應(yīng)的加載三級(jí)、四級(jí)圖層數(shù)據(jù),在加載的同時(shí),就形成了各種專題圖。當(dāng)然,分層管理器功能的實(shí)現(xiàn)是通過(guò)GIS組件(MapX、MO、AO等)和編程語(yǔ)言(VB、VC、Delphi等)來(lái)實(shí)現(xiàn)的。
[NextPage]
2、分層管理器開(kāi)發(fā)步驟
分層管理器應(yīng)用程序需要進(jìn)行許多設(shè)置和準(zhǔn)備。主要步驟匯總?cè)缦拢?
(1)獲取多層逐層細(xì)化圖層時(shí)要使用的各個(gè)表的數(shù)據(jù)。
(2)創(chuàng)建一個(gè)包含特殊列和特殊元數(shù)據(jù)的新的空逐層細(xì)化表(.tab 文件)。元數(shù)據(jù)為每個(gè)組件表指定一個(gè)層名,同時(shí)標(biāo)識(shí)組件表中的重要列標(biāo)識(shí)列和標(biāo)題列。
(3)將逐層細(xì)化表加入地圖。例如,將逐層細(xì)化表加入您使用的Geoset,或通過(guò)編碼方法將逐層細(xì)化表加入地圖。
(4)在應(yīng)用程序中添加用戶界面元素,響應(yīng)逐層細(xì)化事件。
(5)添加代碼,響應(yīng)用戶對(duì)逐層細(xì)化工具的使用(也就是說(shuō)編寫(xiě)分層管理器)。
(6)該代碼需要檢測(cè)用戶已選擇的圖元;確定需要添加的子圖元和需要?jiǎng)h除的圖元;調(diào)用應(yīng)用程序來(lái)實(shí)現(xiàn)分層或匯總地圖圖元。
實(shí)例分析
由于遙感影響數(shù)據(jù)量特別巨大,對(duì)于數(shù)據(jù)的存儲(chǔ)、管理、分析和有用圖形部分顯示就顯得非常困難,這需要用關(guān)系——對(duì)象數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)。在圖形顯示時(shí),為了使取得有用圖層信息,減少加載時(shí)間和提高編輯效率,需要對(duì)圖形進(jìn)行分層顯示,即用到了前面介紹的分層管理器技術(shù)。本文用VB作為編程語(yǔ)言,MapX作為GIS組件進(jìn)行二次開(kāi)發(fā)來(lái)實(shí)現(xiàn)分層管理技術(shù)。
1、構(gòu)建分層管理器
構(gòu)建逐層細(xì)化表,其表結(jié)構(gòu)為:
Definition Table
Type Native Charset "WindowsLatin1"
Fields 3
Key Char (32);
Level Char (32);
Label Char (32) ;
元數(shù)據(jù)關(guān)鍵字和對(duì)應(yīng)值為:
begin_metadata
"\IsDrilldown" = "TRUE"
"\DDMap\ComponentMaps\One\File" = " Tab_YNP.TAB"
"\DDMap\ComponentMaps\One\LevelID" = " Tab_YNP "
"\DDMap\ComponentMaps\One\FeatureIDCol" = "3"
"\DDMap\ComponentMaps\One\FeatureCaptionCol" = "1"
…(其他各組件層的關(guān)鍵字和值與此相同)
"\DDMap\HierarchyManager\IsDLL" = "TRUE"
"\DDMap\HierarchyManager\ID" = "SomeDLL.dll"
"\DDMap\HierarchyManager\InitialLevel" = " Tab_YNP "
end_metadata
2、分層管理器的實(shí)現(xiàn)
使用 CreateCustomTool 方法實(shí)現(xiàn)逐層細(xì)化工具,定義為:Map1.CreateCustomTool customDrilldownExpandTool, miToolTypePoint, miDrilldownExpandCursor, miDrilldownContractCursor, miDrilldownContractCursor
每次使用自定義逐層細(xì)化工具均會(huì)觸發(fā) ToolUsed 事件。在 ToolUsed 事件過(guò)程中,您將需要正在看的ORACLE教程是:Oracle數(shù)據(jù)倉(cāng)庫(kù)的分層管理器解決方案開(kāi)發(fā)者網(wǎng)絡(luò)Oracle。執(zhí)行產(chǎn)生逐層細(xì)化行為的代碼。該過(guò)程主要分為四個(gè)步驟:
(1)使用 SelectByPoint 或 SearchAtPoint 之類的方法確定用戶單擊的地圖圖元。
(2)確定應(yīng)取代用戶單擊的圖元的子圖元集。例如,可以使用一個(gè)或多個(gè)嵌套的 Case 語(yǔ)句確定哪些子圖元取代所選的父圖元。
(3)提取空間數(shù)據(jù)。根據(jù)前述條件,用SQL語(yǔ)言從數(shù)據(jù)倉(cāng)庫(kù)中提取信息,如:select goloc form YN. Tab_HQ_KC where Prix=68
(4)調(diào)用 DrilldownAddFeatures 方法將子圖元加入地圖。
(5)調(diào)用 DrilldownRemoveFeatures 方法從地圖中刪除父圖元(用戶單擊的圖元)。
(6)對(duì)顯示圖層進(jìn)行編輯,并把編輯結(jié)果保存。
3、結(jié)果分析
從實(shí)例的結(jié)果可以看出,Oracle數(shù)據(jù)倉(cāng)庫(kù)能夠方便的對(duì)空間數(shù)據(jù)進(jìn)行存儲(chǔ)、分析、管理和輸出,數(shù)據(jù)挖掘技術(shù)的應(yīng)用能夠靈活存取數(shù)據(jù),而不需要加載整個(gè)數(shù)據(jù)表中的所有數(shù)據(jù),分層管理器的應(yīng)用實(shí)現(xiàn)了空間數(shù)據(jù)大范圍快速瀏覽和不同主題圖層的部分疊加,實(shí)際應(yīng)用中有著非常方便的應(yīng)用。
結(jié)論
高效地利用現(xiàn)有的海量數(shù)據(jù)是目前面臨的難題之一。Oracle數(shù)據(jù)倉(cāng)庫(kù)技術(shù)是專門(mén)針對(duì)海量數(shù)據(jù)的管理和應(yīng)用的技術(shù),它在對(duì)象-關(guān)系型數(shù)據(jù)庫(kù)、功能強(qiáng)大的DBMS和支持可視化檢索方面有著非常明顯的優(yōu)勢(shì)。地學(xué)數(shù)據(jù)倉(cāng)庫(kù)的理論在今年的時(shí)間應(yīng)用中不斷完善,本文在數(shù)據(jù)倉(cāng)庫(kù)的存儲(chǔ)、分析和表達(dá)層方面把理論和實(shí)際應(yīng)用相結(jié)合,結(jié)合分層管理GIS二次開(kāi)發(fā),開(kāi)發(fā)出基于Oracle數(shù)據(jù)倉(cāng)庫(kù)的分層管理系統(tǒng),它結(jié)合了數(shù)據(jù)倉(cāng)庫(kù)和分層管理的優(yōu)點(diǎn),在地學(xué)空間數(shù)據(jù)應(yīng)用方面進(jìn)行了有益的嘗試。
上一頁(yè)
相關(guān)文章
Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)丟失恢復(fù)的幾種方法總結(jié)
相信大家無(wú)論是開(kāi)發(fā)、測(cè)試還是運(yùn)維過(guò)程中,都可能會(huì)因?yàn)檎`操作、連錯(cuò)數(shù)據(jù)庫(kù)、用錯(cuò)用戶、語(yǔ)句條件有誤等原因,導(dǎo)致錯(cuò)誤刪除、錯(cuò)誤更新等問(wèn)題。當(dāng)你捶胸頓足或嚇得腿軟時(shí),肯定希望有辦法來(lái)恢復(fù)這些數(shù)據(jù)。oracle就提供了一些強(qiáng)大的方法或機(jī)制,可以幫到有需要的你。2016-12-12
Oracle刪除字段中的空格、回車及指定字符的實(shí)例代碼
本文給大家分享Oracle刪除字段中的空格、回車及指定字符的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下2017-03-03
Oracle去重4種實(shí)現(xiàn)方式小結(jié)
這篇文章主要給大家介紹了關(guān)于Oracle去重4種實(shí)現(xiàn)方式的相關(guān)資料,在Oracle數(shù)據(jù)庫(kù)中有時(shí)候我們需要查詢多個(gè)列并去除重復(fù)值,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
oracle刪除數(shù)據(jù)但表空間占用率沒(méi)有減小的情況
這篇文章主要介紹了oracle刪除數(shù)據(jù)但表空間占用率沒(méi)有減小的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Oracle to_char 日期轉(zhuǎn)換字符串語(yǔ)句分享
這篇文章主要介紹了Oracle to_char 日期轉(zhuǎn)換字符串語(yǔ)句,別處挖過(guò)來(lái)的,真是太長(zhǎng)了,學(xué)習(xí)oracle的朋友可以收藏下2014-08-08
oracle連接數(shù)據(jù)庫(kù)報(bào)錯(cuò)ORA-12170:TNS連接超時(shí)解決辦法
這篇文章主要給大家介紹了關(guān)于oracle連接數(shù)據(jù)庫(kù)報(bào)錯(cuò)ORA-12170:TNS連接超時(shí)的解決辦法,ORA-12170是Oracle數(shù)據(jù)庫(kù)連接錯(cuò)誤,表示數(shù)據(jù)庫(kù)連接超時(shí),文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
怎么才能限制SQL Server只能讓指定的機(jī)器連接
怎么才能限制SQL Server只能讓指定的機(jī)器連接...2007-03-03
Oracle 創(chuàng)建監(jiān)控賬戶 提高工作效率
有很多Oracle服務(wù)器,需要天天查看TableSpace,比較麻煩了。2009-10-10
PLSQL Developer連接Oracle11g 64位數(shù)據(jù)庫(kù)配置詳解(圖文)
這篇文章主要介紹了PLSQL Developer連接Oracle11g 64位數(shù)據(jù)庫(kù)配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

