面向嵌入式
gis的資料組織模型與訪問機制
陳玉進李泉
(南京跬步科技****,江蘇
南京210008 )
摘
要:地圖顯示效率,一直是嵌入式
gis系統的核心問題。一方面,嵌入式系統處理器效能低、記憶體容量小;另一方面,
gis資料量大、計算複雜。針對這一對突出的矛盾,本文提出了一種新的
gis資料組織模型與訪問機制,在
i/o階段,從邏輯和物理兩個層面最大限度地減少對冗餘資料的讀取和處理,保障地圖的快速顯示。
:嵌入式
gis、縱向分級、網格索引、
hilbert
排序、快取
中圖分類號:
tp311
1
引言
隨著嵌入式軟硬體技術的不斷發展,
gis執行平台也從
pc擴充套件到了嵌入式裝置,尤其是智慧型手機的普及,為嵌入式
gis在各行業的應用提供了條件。但是,
gis資料量大、計算複雜,給地圖快速顯示帶來很大的壓力,因此,在滿足需求的情況下,考慮用軟體方法提高資料檢索的效率、減少冗餘資料的讀取和處理,提高必要資料的處理能力。本文主要從
gis資料的組織模型、儲存和讀取層面來闡述。
2
嵌入式gis
資料組織模型
2.1
縱向分級顯示
gis資料按類別或等級不同分成不同的圖層,這些圖層疊加在一起形成一幅層次和內容豐富的地圖。而嵌入式裝置螢幕通常都比較小,能顯示的地圖內容和範圍有限,在同一螢幕上,顯示內容過多會造成圖元擁擠不堪,不但影響使用者讀圖的效果,而且使用者等待時間過長,給系統造成很大的負擔,因為,顯示內容過多,
i/o讀取次數增加,記憶體占用多,地圖座標到螢幕座標轉換的計算量增大,螢幕渲染的壓力也很大。鑑於此,地圖需要按可視範圍大小分級顯示,即視窗範圍大,只顯示概要圖層,隨著地圖放大,視窗範圍縮小,一些細節層次的圖層逐步被顯示出來。這樣,需要對地圖圖層按顯示級別進行分組,屬於同一縮放級別的歸為一組,不同縮放級別的歸為另外一組。具體實現就是,給每個顯示級別設定最大最小顯示比例尺範圍
max_zoom
和min_zoom
,當當前顯示比例尺符合條件
max_zoom>win_zoom>min_zoom
時,該級別對應的圖層組被顯示,顯示比例尺
=當前可視範圍實際寬度÷視窗寬度,當使用者不斷放大視窗顯示地圖時,顯示比例尺不斷縮小,以至於能夠顯示比較詳細的顯示級別圖層組。
2.2
橫向分塊索引
嵌入式裝置螢幕小,通常只顯示地圖上的一小塊區域,螢幕之外的地圖資料不參與顯示,也就沒有必要讀入記憶體參與計算。這就涉及到從地圖資料集合中,快速地選擇出當前螢幕參與顯示的資料子集。為此,需要對地圖資料建立空間索引,空間索引資料常駐記憶體,通過空間索引獲得地圖資料的檔案位址,再實際
i/o讀取所需要的地圖資料。目前空間索引種模擬較多,各有優缺點,實驗結果表明,面向查詢,網格索引效率最高,將整個圖幅範圍按網格進行劃分,對跨網格的線、面事先依網格裁減,裁減後生成的多個子圖元,分別儲存到不同的網格索引單元裡;由於線、面圖形的不規則,其他索引都在不同程度上存在冗餘資料的讀取和處理,降低了整個地圖顯示的效率。排程的時候,物理上,非併發的一次
i/o操作,只涉及到乙個物理儲存塊;邏輯上,以乙個網格索引裡的資料為單位來排程。所以,理論上,邏輯層排程的單位資料量等於乙個物理儲存塊的大小,效率達到最高,但通常無法做到,控制好邏輯層
i/o資料讀取的粒度,能保證較好的效率,這個引數需要針對不同資料進行測試。
2.3
資料組織模型
基於縱向上分級、橫向上分塊的策略,從邏輯層面上減少冗餘資料的讀取,為此,本文提出了一種新的資料組織模型——「多圖層共存同一邏輯檔案、同一顯示級別的多圖層共存同一網格、乙個顯示級別對應乙個網格索引」。
「多圖層共存同一邏輯檔案」——原本乙個圖層乙個檔案,現在若干個圖層合併到一起形成乙個檔案,這樣避免了顯示圖層過多帶來的多次訪問不同檔案、造成
i/o次數增多的弊端,使得顯示效率與圖層數量無關。
「同一顯示級別的多圖層共存同一網格」——縱向上,同一顯示級別的多圖層資料要一起被顯示,橫向上,同一網格裡的資料也是一起被顯示,因此,把同一顯示級別的多圖層資料組織到乙個網格下,且邏輯上進行分圖層組織。
「乙個顯示級別對應乙個網格索引」——以往乙個圖層乙個索引,現在乙個顯示級別乙個索引,首先判斷某個級別是否需要顯示,如果需要,則檢索此級別對應的網格索引,把處於當前視窗內的這一顯示級別的資料檢索出來,予以顯示。
3
嵌入式gis
資料檔案儲存
嵌入式gis資料組織模型,是從邏輯層面闡述了減少資料讀取和處理的規模、提高檢索有效資料的效率,但不能最終保證資料讀取效能,因為這個與資料檔案儲存方式有關。
i/o操作的單元是乙個物理儲存塊,較大概率一起被讀取的資料應盡量聚簇儲存,以提高一次
i/o操作獲取有效資料的能力,如果資料檔案記錄儲存無規律,或違背聚簇儲存的原則,勢必會增加
i/o操作的次數,讀取過多的冗餘資料,降低整個系統的效能。基於此,需要分析地圖資料聚簇的規律,並能實現資料聚簇儲存。
同一顯示級別的地圖資料,是按網格索引組織的,網格裡儲存了屬於同一顯示級別、位於同一空間網格的多圖層資料,網格之間按什麼順序來儲存?空間資料一起被顯示讀取的概率是資料之間空間距離的反函式,也就是說,距離近的地圖資料之間被一起顯示讀取的概率大於之間距離遠的,所以,這就要求網格索引中網格單元之間的儲存順序要遵循鄰近原則:靠得近的網格要臨近儲存。但是,網格索引是二維的,儲存器是一維的,需要把二維的網格按照鄰近原則對映到一維,且保持鄰近關係。
二維到一維的對映,不能完全保持空間鄰近關係。
hilbert
填充曲線,是一種比較好的二維到一維的對映排序方法,實現了網格陣列座標到一維排序序號的對映
n=f(x,y)
,通過這個對映函式,就可以確定網格單元在一維排序中的位置,且盡量照顧到了鄰近原則。
hilbert
填充曲線對映演算法,採用陳寧濤等所提出的迭代演算法,把「形」的問題轉化為具有「數」特徵的矩陣問題,因而可以轉化為矩陣運算,通過複製旋轉快速生成網格的編碼。
按hilbert
對映排序,實現了空間資料的聚簇儲存,從檔案物理儲存層面提高了
i/o效能。
嵌入式mysql資料
關於嵌入式mysql開發資料很少,有幾篇帖子只說自己編譯通過了,卻不說說關鍵的步驟。還是mysql的工程師厚道,給出了嵌入式mysql開發的ptt 根據ppt上詳細的介紹,你還會找到鏈結這是作者寫的乙個win32 dialog 嵌入式mysql 的demo,相當的給力。準備bd.cmd 和 errm...
非嵌入式與嵌入式的區別
非嵌入式是通過軟體控制硬體,軟硬體之間直接聯絡來實現要求。但是一旦硬體發生改變軟體也要改變,為了降低這種偶合度過高的問題,出現了嵌入式。嵌入式在軟體和硬體之間新增了作業系統,軟體通過控制作業系統進而控制硬體,硬體發生改變並不會導致軟體也發生改變,這為軟體開發人員節約了很多時間,並且嵌入式能在已有的硬...
嵌入式物件導向程式開發(1)
d2.26 嵌入式物件導向程式設計 嵌入式linuxc 開發 學習內容 c c with class 95 c中學過的資料型別 基本控制語句 函式 關鍵字 位運算 指標 陣列 1 c到c 公升級 語法公升級 2 c 物件導向的三大特點 封裝 繼承 多型 3 c 模板 4 c 異常處理 5 c 檔案處...