熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle數據倉庫的分層管理器解決方案

2013-11-13 15:58:41  來源: Oracle 
摘要 本文描述分層管理器的原理步驟限制並和Oracle數據倉庫相結合實現了地學數據的有效存儲管理以及大范圍數據的快速浏覽

  關鍵字 分層管理器 元數據 快速浏覽
  
  前言

  世紀是信息的世紀綜合國力的競爭在很大程度上是信息的競爭更是信息利用率的競爭近年來隨著數字地球數字國土戰略的提出和實施地學領域的海量數據飛速增長數據的存儲分析管理和處理變得日益復雜隨著Oracle技術的成熟尤其是本版後Oracle Spatial的出現數據倉庫在海量數據存儲分析和表達方面有著無可比擬的優勢同時由於信息量的巨大傳統的數據存儲和顯示方式在大范圍數據快速浏覽方面顯得力不從心這樣有必要改變空間數據的存儲方式加載需要的空間數據部分避免不必要數據的反復加載和卸載

  分層管理器

  分層管理器架構

  分層管理器是實現大范圍數據的快速浏覽的關鍵部分它控制了逐層細化表的結構和元數據的定義和賦值定義了組件表中的關鍵信息給出了空間數據的來源數據挖掘規則圖層加載范圍和圖形編輯輸出和保存分層管理器有兩部分組成分別為

  a) 一組存儲於Oracle數據倉庫中的空間數據表用於逐層細化圖層中的每個詳細信息層這些表稱為組件表

  b) 一個空表包含該表的結構定義和描述組件表的特殊元數據該表稱為逐層細化表任何逐層細化應用程序均需要逐層細化表從中可以了解逐層細化圖層中各層的層次關鍵字描述以及它們之間的層次關聯方式進行分層時分層管理器作為程序的一部分確定需要添加的子圖元所在的圖層及其關鍵字以便確定在逐層細化圖層中需要添加和刪除的圖元信息

  逐層細化圖層是一種特殊的地圖圖層它是有自己表結構的空白圖層並用元數據規定了所有加載圖層的一些規則和限制所顯示出來的地圖信息是按照元數據規定的規則從其它表或數據庫中提取出來的在地圖中顯示逐層細化圖層時分層管理器會創建一個臨時表然後將組件表中的圖元復制到該臨時表中逐層細化圖層中顯示的圖元實際上是組件表中圖元的副本這樣就可以靈活的在圖層上面加載需要的信息在應用程序終止時將丟棄該臨時表為了保存有用的專題圖信息可以對提取出來的圖層進行保存此時如果用戶查看圖層信息時逐層細化圖層仍將是單個圖層

  逐層細化表的要求作為分層管理器的組織核心部分它定義了元數據關鍵字和三個標准列關鍵字層和標簽並有著自己的一套語法

  () 關鍵字 begin_metadata 標記逐層細化表中元數據部分的開頭

  () 每行元數據包含兩個元素關鍵字和值所有關鍵字和值均使用雙引號引起來

  () 逐層細化表必須包含 \IsDrilldown 關鍵字該關鍵字的值必須為 True

  () 每個關鍵字以\(反斜線)開頭

  () 元數據關鍵字可以在層次結構中嵌套層次結構中的每一層以反斜線 (\) 標記

  () 元數據包括 \DDMap\ComponentMaps\ 關鍵字層次結構在該層次結構中為每個組件表指定四個元數據關鍵字

  

  分層管理器的分層原理圖如圖所示從圖中可以看出分層管理器有兩部分組成組件表和逐層細化表組成分層管理器根據系統的要求以數據挖掘的方式從Oracle數據倉庫中提取數據形成組件表中的某個圖層然後確定需要加載圖層的名稱和圖層中的部分並加載到逐層細化表中如果是第一次加載此時的逐層細化表是空白圖層在加載過程中逐層細化表不斷的進行圖元信息的增加和刪除這樣會出現每個組件表中的部分信息顯示在逐層細化表所示的圖層中這樣輸出所需要的圖層並對它進行編輯由於逐層細化表中數據是個組件表中的副本需要對編輯後的圖層進行另存形成專題圖

  分層管理器首先形成空白圖層通過分層管理器用數據挖掘工具從Oracle數據倉庫中提取數據根據分層管理器的元數據規則形成一級的圖層在該圖層中通過響應事件以確定加載二級圖層的圖層名稱和該圖層中的加載部分相應的加載三級四級圖層數據在加載的同時就形成了各種專題圖當然分層管理器功能的實現是通過GIS組件(MapXMOAO等)和編程語言(VBVCDelphi等)來實現的

分層管理器開發步驟

  分層管理器應用程序需要進行許多設置和准備主要步驟匯總如下

  ()獲取多層逐層細化圖層時要使用的各個表的數據

  ()創建一個包含特殊列和特殊元數據的新的空逐層細化表(tab 文件)元數據為每個組件表指定一個層名同時標識組件表中的重要列標識列和標題列

  ()將逐層細化表加入地圖例如將逐層細化表加入您使用的Geoset或通過編碼方法將逐層細化表加入地圖

  ()在應用程序中添加用戶界面元素響應逐層細化事件

  ()添加代碼響應用戶對逐層細化工具的使用(也就是說編寫分層管理器)

  ()該代碼需要檢測用戶已選擇的圖元確定需要添加的子圖元和需要刪除的圖元調用應用程序來實現分層或匯總地圖圖元

  實例分析

  由於遙感影響數據量特別巨大對於數據的存儲管理分析和有用圖形部分顯示就顯得非常困難這需要用關系——對象數據庫對數據進行存儲在圖形顯示時為了使取得有用圖層信息減少加載時間和提高編輯效率需要對圖形進行分層顯示即用到了前面介紹的分層管理器技術本文用VB作為編程語言MapX作為GIS組件進行二次開發來實現分層管理技術

  構建分層管理器

  構建逐層細化表其表結構為

Definition Table

Type Native Charset WindowsLatin

Fields

Key Char ();

Level Char ();

Label Char () ;

  元數據關鍵字和對應值為

begin_metadata

\IsDrilldown = TRUE

\DDMap\ComponentMaps\One\File = Tab_YNPTAB

\DDMap\ComponentMaps\One\LevelID = Tab_YNP

\DDMap\ComponentMaps\One\FeatureIDCol =

\DDMap\ComponentMaps\One\FeatureCaptionCol =

…(其他各組件層的關鍵字和值與此相同)

\DDMap\HierarchyManager\IsDLL = TRUE

\DDMap\HierarchyManager\ID = SomeDLLdll

\DDMap\HierarchyManager\InitialLevel = Tab_YNP

end_metadata

  分層管理器的實現

  使用 CreateCustomTool 方法實現逐層細化工具定義為MapCreateCustomTool customDrilldownExpandTool miToolTypePoint miDrilldownExpandCursor miDrilldownContractCursor miDrilldownContractCursor

  每次使用自定義逐層細化工具均會觸發 ToolUsed 事件在 ToolUsed 事件過程中您將需要執行產生逐層細化行為的代碼該過程主要分為四個步驟

  ()使用 SelectByPoint 或 SearchAtPoint 之類的方法確定用戶單擊的地圖圖元

  ()確定應取代用戶單擊的圖元的子圖元集例如可以使用一個或多個嵌套的 Case 語句確定哪些子圖元取代所選的父圖元

  ()提取空間數據根據前述條件用SQL語言從數據倉庫中提取信息select goloc form YN Tab_HQ_KC where Prix=

  ()調用 DrilldownAddFeatures 方法將子圖元加入地圖

  ()調用 DrilldownRemoveFeatures 方法從地圖中刪除父圖元(用戶單擊的圖元)

  ()對顯示圖層進行編輯並把編輯結果保存

  結果分析

  從實例的結果可以看出Oracle數據倉庫能夠方便的對空間數據進行存儲分析管理和輸出數據挖掘技術的應用能夠靈活存取數據而不需要加載整個數據表中的所有數據分層管理器的應用實現了空間數據大范圍快速浏覽和不同主題圖層的部分疊加實際應用中有著非常方便的應用

  結論

  高效地利用現有的海量數據是目前面臨的難題之一Oracle數據倉庫技術是專門針對海量數據的管理和應用的技術它在對象關系型數據庫功能強大的DBMS和支持可視化檢索方面有著非常明顯的優勢地學數據倉庫的理論在今年的時間應用中不斷完善本文在數據倉庫的存儲分析和表達層方面把理論和實際應用相結合結合分層管理GIS二次開發開發出基於Oracle數據倉庫的分層管理系統它結合了數據倉庫和分層管理的優點在地學空間數據應用方面進行了有益的嘗試


From:http://tw.wingwit.com/Article/program/Oracle/201311/17617.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.