摘要 本文描述分層管理器的原理、步驟、限制,並和oracle資料倉儲相結合實現了地學資料的有效儲存、管理以及大範圍資料的快速瀏覽。
關鍵字 分層管理器 元資料 快速瀏覽
前言21世紀是資訊的世紀,綜合國力的競爭在很大程度上是資訊的競爭,更是資訊利用率的競爭。近年來,隨著「數字地球」和「數字國土」戰略的提出和實施,地學領域的海量資料飛速增長,資料的儲存、分析、管理和處理變得日益複雜。隨著oracle技術的成熟,尤其是8.15本版後oracle spatial的出現,資料倉儲在海量資料儲存、分析和表達方面有著無可比擬的優勢。同時,由於資訊量的巨大,傳統的資料儲存和顯示方式在大範圍資料快速瀏覽方面顯得力不從心,這樣有必要改變空間資料的儲存方式,載入需要的空間資料部分,避免不必要資料的反覆載入和解除安裝。
分層管理器
1、分層管理器架構
分層管理器是實現大範圍資料的快速瀏覽的關鍵部分,它控制了逐層細化表的結構和元資料的定義和賦值,定義了元件表中的關鍵資訊,給出了空間資料的**、資料探勘規則、圖層載入範圍和圖形編輯、輸出和儲存。分層管理器有兩部分組成,分別為:
a) 一組儲存於oracle資料倉儲中的空間資料表,用於逐層細化圖層中的每個詳細資訊層,這些表稱為元件表;
b) 乙個空表,包含該錶的結構定義和描述元件表的特殊元資料,該錶稱為逐層細化表。任何逐層細化應用程式均需要逐層細化表,從中可以了解逐層細化圖層中各層的層次關鍵字描述,以及它們之間的層次關聯方式。進行分層時,分層管理器作為程式的一部分,確定需要新增的子圖元所在的圖層及其關鍵字,以便確定在逐層細化圖層中需要新增和刪除的圖元資訊。
逐層細化圖層是一種特殊的地圖圖層,它是有自己表結構的空白圖層,並用元資料規定了所有載入圖層的一些規則和限制,所顯示出來的地圖資訊是按照元資料規定的規則從其它表或資料庫中提取出來的。在地圖中顯示逐層細化圖層時,分層管理器會建立乙個臨時表,然後將元件表中的圖元複製到該臨時表中。逐層細化圖層中顯示的圖元實際上是元件表中圖元的副本。這樣就可以靈活的在圖層上面載入需要的資訊。在應用程式終止時,將丟棄該臨時表,為了儲存有用的專題圖資訊,可以對提取出來的圖層進行儲存。此時,如果使用者檢視圖層資訊時,逐層細化圖層仍將是單個圖層。
逐層細化表的要求作為分層管理器的組織核心部分,它定義了元資料關鍵字和三個標準列:關鍵字、層和標籤。並有著自己的一套語法:
(1) 關鍵字 begin_metadata 標記逐層細化表中元資料部分的開頭。
(2) 每行元資料報含兩個元素:關鍵字和值。所有關鍵字和值均使用雙引號引起來。
(3) 逐層細化表必須包含 /isdrilldown 關鍵字,該關鍵字的值必須為 true。
(4) 每個關鍵字以「/」(反斜線)開頭。
(5) 元資料關鍵字可以在層次結構中巢狀。層次結構中的每一層以反斜線 (/) 標記。
(6) 元資料報括 /ddmap/componentmaps/ 關鍵字層次結構。在該層次結構中為每個元件表指定四個元資料關鍵字。
分層管理器的分層原理圖如圖1所示,從圖中可以看出,分層管理器有兩部分組成:元件表和逐層細化表組成,分層管理器根據系統的要求以資料探勘的方式從oracle資料倉儲中提取資料,形成元件表中的某個圖層,然後確定需要載入圖層的名稱和圖層中的部分,並載入到逐層細化表中。如果是第一次載入,此時的逐層細化表是空白圖層,在載入過程中,逐層細化表不斷的進行圖元資訊的增加和刪除,這樣會出現每個元件表中的部分資訊顯示在逐層細化表所示的圖層中。這樣輸出所需要的圖層,並對它進行編輯,由於逐層細化表中資料是個元件表中的副本,需要對編輯後的圖層進行另存,形成專題圖。
分層管理器首先形成空白圖層,通過分層管理器用資料探勘工具從oracle資料倉儲中提取資料,根據分層管理器的元資料規則形成一級的圖層,在該圖層中,通過響應事件,以確定載入二級圖層的圖層名稱和該圖層中的載入部分,相應的載入**、四級圖層資料,在載入的同時,就形成了各種專題圖。當然,分層管理器功能的實現是通過gis元件(mapx、mo、ao等)和程式語言(vb、vc、delphi等)來實現的。
2、分層管理器開發步驟
分層管理器應用程式需要進行許多設定和準備。主要步驟彙總如下:
(1)獲取多層逐層細化圖層時要使用的各個表的資料。
(2)建立乙個包含特殊列和特殊元資料的新的空逐層細化表(.tab 檔案)。元資料為每個元件表指定乙個層名,同時標識元件表中的重要列標識列和標題列。
(3)將逐層細化表加入地圖。例如,將逐層細化表加入您使用的geoset,或通過編碼方法將逐層細化表加入地圖。
(4)在應用程式中新增使用者介面元素,響應逐層細化事件。
(5)新增**,響應使用者對逐層細化工具的使用(也就是說編寫分層管理器)。
(6)該**需要檢測使用者已選擇的圖元;確定需要新增的子圖元和需要刪除的圖元;呼叫應用程式來實現分層或彙總地圖圖元。
例項分析
由於遙感影響資料量特別巨大,對於資料的儲存、管理、分析和有用圖形部分顯示就顯得非常困難,這需要用關係——物件資料庫對資料進行儲存。在圖形顯示時,為了使取得有用圖層資訊,減少載入時間和提高編輯效率,需要對圖形進行分層顯示,即用到了前面介紹的分層管理器技術。本文用vb作為程式語言,mapx作為gis元件進行二次開發來實現分層管理技術。
1、構建分層管理器
構建逐層細化表,其表結構為:
definition table
type native charset "windowslatin1"
fields 3
key char (32);
level char (32);
label char (32) ;
元資料關鍵字和對應值為:
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"
…(其他各元件層的關鍵字和值與此相同)
"/ddmap/hierarchymanager/isdll" = "true"
"/ddmap/hierarchymanager/id" = "somedll.dll"
"/ddmap/hierarchymanager/initiallevel" = " tab_ynp "
end_metadata
2、分層管理器的實現
使用 createcustomtool 方法實現逐層細化工具,定義為:map1.createcustomtool customdrilldownexpandtool, mitooltypepoint, midrilldownexpandcursor, midrilldowncontractcursor, midrilldowncontractcursor
每次使用自定義逐層細化工具均會觸發 toolused 事件。在 toolused 事件過程中,您將需要執行產生逐層細化行為的**。該過程主要分為四個步驟:
(1)使用 selectbypoint 或 searchatpoint 之類的方法確定使用者單擊的地圖圖元。
(2)確定應取代使用者單擊的圖元的子圖元集。例如,可以使用乙個或多個巢狀的 case 語句確定哪些子圖元取代所選的父圖元。
(3)提取空間資料。根據前述條件,用sql語言從資料倉儲中提取資訊,如:select goloc form yn. tab_hq_kc where prix=68
(4)呼叫 drilldownaddfeatures 方法將子圖元加入地圖。
(5)呼叫 drilldownremovefeatures 方法從地圖中刪除父圖元(使用者單擊的圖元)。
(6)對顯示圖層進行編輯,並把編輯結果儲存。
3、結果分析
從例項的結果可以看出,oracle資料倉儲能夠方便的對空間資料進行儲存、分析、管理和輸出,資料探勘技術的應用能夠靈活訪問資料,而不需要載入整個資料表中的所有資料,分層管理器的應用實現了空間資料大範圍快速瀏覽和不同主題圖層的部分疊加,實際應用中有著非常方便的應用。
結論高效地利用現有的海量資料是目前面臨的難題之一。oracle資料倉儲技術是專門針對海量資料的管理和應用的技術,它在物件-關係型資料庫、功能強大的dbms和支援視覺化檢索方面有著非常明顯的優勢。地學資料倉儲的理論在今年的時間應用中不斷完善,本文在資料倉儲的儲存、分析和表達層方面把理論和實際應用相結合,結合分層管理gis二次開發,開發出基於oracle資料倉儲的分層管理系統,它結合了資料倉儲和分層管理的優點,在地學空間資料應用方面進行了有益的嘗試。
資料倉儲分層
下面的內容是基於參考中的文件進行的二次讀書筆記。傳統行業的資料倉儲工程師,開始嘗試架構工程領域比較流行的er模型 維度模型方式,構建出乙個四層的模型架構 阿里在構建er時碰到了較大的挑戰,主要是業務快速發展,人員快速變化 業務知識功底的不夠全面,導致er模型產出困難。阿里得出了乙個結論 在不太成熟 ...
資料倉儲分層
資料倉儲更多代表的是一種對資料的管理和使用的方式,它是一整套包括了etl 排程 建模在內的完整的理論體系。現在所謂的大資料更多的是一種資料量級的增大和工具的上的更新。兩者並無衝突,相反,而是一種更好的結合。資料倉儲在構建過程中通常都需要進行分層處理。業務不同,分層的技術處理手段也不同。分層的主要原因...
資料倉儲分層
資料倉儲分層的主要原因是在管理資料的時候,能對資料有乙個更加清晰的掌控,詳細來講,主要有下面幾個原因 為什麼最低要分三層呢?在實際的生產環境中,資料倉儲的資料一般會有多個 資料可能比較亂,有很多的髒資料,資料的單位可能會不一樣等原因,我們要對資料進行分析或者對資料進行聚合等操作顯然不那麼方便,這時候...