摘要:針對地圖瀏覽中的顯示速度問題,該文提出了一種新的地圖瀏覽方法,利用內存映射畫圖的思想設計了一個小型的圖形支撐環境,這個支撐環境能夠利用內存緩沖區快速的處理數據并實時輸出數據,結合API一級的輸出函數,能夠實現地圖的快速顯示。這種方法克服了傳統地圖瀏覽中的顯示速度慢的問題,在不借助圖形支撐軟件的情況下,達到了很快的顯示速度,實現了快速瀏覽地圖的目標。其中,內存映射畫圖思想的應用是該文的創新點。
關鍵詞:映射;內存;內存映射;地圖;地圖學
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)24-7060-02
隨著現代地圖學的發展,電子地圖正日益成為一種技術成熟和應用有效的地圖產品形式,走入人們的生活,并得到廣泛的應用。但目前的地圖瀏覽軟件或多或少都存在一定的問題,特別是速度方面的問題,有的在顯示速度上還不是很令人滿意,有的軟件則采用了圖形支撐軟件來幫助其實現圖像的快速顯示,速度是達到了用戶的要求,但整個軟件顯得龐大和臃腫。因此,對快速瀏覽地圖的方法研究其意義是顯而易見的,本論文的目標也正在于此。
1 概述
論文中詳細給出了電子地圖中顯示速度問題的解決方案,包括小型圖形支撐環境的具體設計,內存映射畫圖思想的基本原理和具體應用,內存中圖像數據的存取方案,以及移動、放大縮小等操作的實現。實踐證明,這種新的地圖瀏覽方法在速度上達到了不亞于opengl的效果,是一種完全可行的新的地圖快速瀏覽方法。
2 小型圖形支撐環境的基本思想
這個小型圖形支撐環境負責處理所有的數據和操作,在這個圖形支撐環境中,內存映射畫圖思想是關鍵。內存映射畫圖是將各種圖元的繪制工作都在內存緩沖區中實現,然后進行輸出,其中,內存緩沖區是其中最重要的部分,負責處理整個支撐環境所用到的數據,所有的數據都是圍繞它進行的。當系統運行時,首先開辟一個內存緩沖區,在內存緩沖區中進行各種數據的處理,當圖元寫入時,根據圖元的形狀,運用掃描轉換算法,將圖元寫入到內存緩沖區中的某一區域,例如一條直線,就可以利用DDA算法或者是中點Bresenham算法將直線寫入內存緩沖區中。傳統的地圖瀏覽系統的輸出方案為:將內存中的圖像數據逐行掃描,一個點一個點的輸出,在這過程中需要不斷的調用輸出函數進行輸出,是一個系統資源消耗極大的過程,這是其速度較慢的主要原因。因此,本文根據內存緩沖區的應用設計了一種輸出方法,當需要對圖像進行輸出時,首先將該圖像在內存緩沖區中進行繪制,當繪制操作完成后,再調用API一級的輸出函數,將內存緩沖區中的數據一次性全部輸出,使得系統達到一個很高的輸出速度,這是采用內存緩沖區來進行數據處理的原因。該輸出方法是本文的核心,是能否實現圖像快速顯示的關鍵。內存緩沖區中的數據存取如圖圖1所示。
在具體設計中,為了實現小型圖形支撐環境,將這個圖形支撐環境所提供的功能封裝在一個類中,系統通過這個類來管理各種圖像數據,并通過成員函數之間的消息傳遞來處理各種操作,如幾何變換、圖元繪制等,這些都在該類申請的內存緩沖區中進行。當用戶進行操作時,系統通過其動作對內存緩沖區中的數據進行更新,然后確定輸出區域,調用輸出函數進行輸出。
以上是這個小型圖形支撐環境的基本思想,有了這個框架后,就可以進行地圖瀏覽的具體設計了。
3 地圖瀏覽的具體設計
系統運行時,首先讀取一個圖像文件進內存,然后開辟一個內存緩沖區,將內存中的圖像數據寫入內存緩沖區,然后選取內存緩沖區中圖像左上角大小和屏幕窗口相等的區域進行輸出,供用戶進行瀏覽和操作。當用戶對窗口中的圖像進行操作時,通過消息捕捉函數對其動作進行捕捉,然后系統立刻對內存緩沖區中的圖像數據進行更新,并根據用戶的操作確定輸出區域,然后調用API一級的函數對該區域進行映射輸出,該方法能夠快速的根據用戶的操作在窗口中更新圖像,達到不亞于OpenGL等圖像支撐軟件的速度效果。地圖瀏覽設計原理圖如圖2所示。
在移動操作中,當用戶對圖像進行拖動操作時,系統根據消息捕捉函數計算圖像的位移量,然后根據圖像位移量確定內存緩沖區中的某一輸出區域進行映射輸出。在此過程中,鼠標一發生動作,系統就能在屏幕窗口中更新圖像,達到了移動過程中圖像的實時顯示的要求。移動操作原理如圖3所示。
在放大縮小操作中,系統也是根據消息捕捉函數對用戶的操作進行捕捉,并判斷是放大操作還是縮小操作,然后調用函數對內存緩沖區中的圖像數據進行幾何變換,并確定一個新的輸出區域,最后調用API一級的輸出函數進行輸出。放大縮小操作原理如圖4所示。
4 總結
該文提出了一種新的地圖瀏覽方法,設計了一個小型圖形支撐環境,利用內存映射畫圖思想,在不借助類似Opengl等圖形支撐軟件的情況下,達到了不亞于Opengl的速度效果。
總體來說,本文所闡述的新方法在解決地圖瀏覽中的顯示速度問題上的效果是很明顯的。特別是對一些圖像處理要求簡單的系統來說,這些系統不需要很負責的圖像操作,只需要進行簡單的圖像的快速顯示,移動等操作,那么應用本文所提到的小型圖形支撐環境就可以很好的解決其問題。也希望該方法能夠對國內外的電子地圖學的發展起到一定的幫助作用。