嵌入式Linux下基于MiniGUI的GIS實(shí)現
此外,系統采用了一些數據壓縮方法。對數據的壓縮方法通??煞譃閷ψ鴺它c(diǎn)有損壓縮和坐標點(diǎn)無(wú)損壓縮。由于嵌入式設備的存儲器容量有限,而GIS系統數據量很大,為提高系統性能,通常這兩種壓縮方法都采用。次序是先進(jìn)行有損壓縮刪除不必要的點(diǎn),然后再進(jìn)行無(wú)損壓縮,將空間數據變?yōu)橄鄬ψ鴺?,以減少單個(gè)坐標點(diǎn)的存儲空間。具體采用的方法如下。
1)刪除在一條筆直的道路上的中間結點(diǎn),只保留首尾兩點(diǎn)。
2)將雙精度型或浮點(diǎn)型的坐標映射為整型坐標,數據量可以減少一半。
3)每一條弧段(包括區域邊界和線(xiàn)狀地物)只記錄其起點(diǎn)坐標(x,y),其后續點(diǎn)坐標用相鄰兩點(diǎn)間的x、y的偏移量代替,即弧段除起始點(diǎn)以外的其它后續點(diǎn)只需用短整型記錄,這樣就可以將數據量壓縮到原來(lái)的1/4左右。
4.2 顯示速度
為提高地圖顯示和刷新速度,采用了以下處理技術(shù)。
1)引入一個(gè)內存DC,首先利用內存DC繪制地圖。當需要顯示地圖時(shí),利用BitBlt函數將內存DC中的地圖復制到顯示DC上。
2)系統引入變量m_pCSections和IDS。變量m_pCSections是一個(gè)鏈表,該鏈表中每個(gè)元素代表上次顯示時(shí)讀取的圖塊頭信息。IDS也是一個(gè)鏈表,其中每個(gè)元素為m_pCSections中與當前視窗有交集的圖塊的ID號。具體處理步驟如下:
(1) 對m_pCSections中每一個(gè)元素,判斷它與當前視窗是否有交集,若沒(méi)有交集,則從m_pCSections中刪除該元素。
(2) 對m_pCSections中的每個(gè)元素,將它的ID號添加到鏈表IDS中。
(3) 對數據集中的每個(gè)圖塊,循環(huán)執行以下操作:
判斷該圖塊的ID號是否在IDS中,若在,則從IDS中將該ID號刪除,繼續處理下一圖塊。
若不在,則從數據文件中讀取該圖塊的圖塊頭信息,根據它的圖塊頭信息判斷該圖塊與當前視窗是否有交集。若交集不為空,則從數據文件中讀取該圖塊的具體圖層信息;若交集為空,則釋放為該圖塊頭信息分配的存儲空間。
3)數據文件中存放每一條線(xiàn)段和面的最小外擴矩形的左上角和右下角信息,這樣,就不需在程序中求它的最小外擴矩形,提高了顯示速度。
4.3 界面設計
由于嵌入式設備的顯示屏幕通常很小,分辨率也不高,而顯示一幅較滿(mǎn)意的地圖又需要一定的屏幕空間,這就需要盡量減少其它元素占用的空間以將盡可能多的區域留給地圖顯示。為此,在嵌入式系統中通常將界面元素設計為按需顯示。為此,系統中將菜單設計為彈出式菜單,僅當用戶(hù)需要時(shí)才彈出以使用戶(hù)執行所需的功能。
5 結束語(yǔ)
系統利用MiniGUI在Linux上實(shí)現了一個(gè)嵌入式GIS,該系統能完成電子地圖的顯示、放大、縮小、漫游等基本功能。但如何實(shí)現GPS導航、信息查詢(xún)、GSM/GPRS通信等功能還需進(jìn)一步研究。
本文創(chuàng )新點(diǎn):本文提供了一種面向手持設備的GIS的實(shí)現方案—采用MiniGUI在嵌入式Linux上實(shí)現GIS,并提供了一種提高地圖顯示和漫游速度的處理方法。
參考文獻
[1] 汪亞雷, 余春暄. 基于嵌入式Linux的MapInfo格式地圖顯示[J]. 微計算機信息, 2006,10-2:184-186.
[2] 周立功. ARM嵌入式MiniGUI初步與應用開(kāi)發(fā)范例[M]. 北京:北京航空航天大學(xué)出版社,2006, 7-144.
[3] 北京飛漫軟件技術(shù)有限公司. MiniGUI編程指南, 2004.
[4] 北京飛漫軟件技術(shù)有限公司. MiniGUI用戶(hù)手冊, 2004.
評論