999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

地理信息系統繪圖緩沖區技術設計與實現

2012-07-25 11:05:00
計算機工程與設計 2012年3期

鄭 昊

(華北計算技術研究所,北京100083)

0 引 言

地理信息系統 (geographic information system,GIS)是在計算機硬、軟件系統支持下,對整個或部分地球表層(包括大氣層)空間中的有關地理分布數據進行采集、儲存、管理、運算、分析、顯示和描述的技術系統。地理信息系統最基礎也是最重要的功能是以圖形化的方式展示地圖信息,同時提供放大、縮小、漫游等地圖瀏覽功能。地圖瀏覽速度將直接影響到使用者的用戶體驗,一套能夠提供快速流暢地圖漫游的地理信息系統將會為用戶帶來極大方便。地圖瀏覽速度同時受到多方面因素的影響,如地圖訪問引擎的效率、地圖符號化的速度、地圖注記渲染水平等。根據影響繪圖效率的因素的不同也存在多種提高地圖繪圖效率的方法,如在地理信息數據訪問引擎中建立柵格金字塔和空間數據索引等。其中一個重要的手段就是通過繪圖緩沖區技術來提高地圖瀏覽效率。地理信息系統 (二期)(簡稱TerraMap)是一個大型的地理信息軟件開發和應用平臺。本文針對TerraMap所采用的繪圖緩沖區技術就行論述,TerraMap通過采用繪圖緩沖區技術解決了地圖瀏覽、地圖漫游、動目標顯示、專題圖制作等多種使用方式下的快速繪圖的問題。

1 繪圖緩沖區技術設計

1.1 雙緩沖區

我們知道,如果窗體在響應WM_PAINT消息的時候要進行復雜的圖形處理,那么窗體在重繪時由于過頻的刷新而引起閃爍現象。解決這一問題的有效方法就是雙緩沖技術。因為窗體在刷新時,總要有一個擦除原來圖像的過程OnEraseBkgnd,它利用背景色填充窗體繪圖區,然后在調用新的繪圖代碼進行重繪,這樣一擦一寫造成了圖像顏色的反差。當WM_PAINT的響應很頻繁的時候,這種反差也就越發明顯。于是我們就看到了閃爍現象。我們會很自然的想到,避免背景色的填充是最直接的辦法。但是那樣的話,窗體上會變的一團糟。因為每次繪制圖像的時候都沒有將原來的圖像清除,造成了圖像的殘留,于是窗體重繪時,畫面往往會變的亂七八糟。所以單純的禁止背景重繪是不夠的。我們還要進行重新繪圖,但要求速度很快,于是我們想到了使用BitBlt函數。它可以支持圖形塊的復制,速度很快。我們可以先在內存中作圖,然后用此函數將做好的圖復制到前臺,同時禁止背景刷新,這樣就消除了閃爍,以上也就是雙緩沖繪圖的基本的思路。所謂 “雙緩沖區”,顧名思義就是要有兩個緩沖區,一個叫 “前臺緩沖區”,一個叫 “后臺緩沖區”,如圖1所示。這兩個緩沖區,總是一個用于屏幕顯示,另一個用于后臺繪圖。當兩個緩沖區都操作完,再進行一次切換,解決閃爍問題。

圖1 雙緩沖區

對于一個地理信息系統僅僅通過雙緩沖區技術遠遠無法達到快速瀏覽目的。比如在地圖上進行鼠標點擊選取的時候,用戶看到的效果應該是被點擊選中的目標會突出顯示。在這種情況下,如果只有雙緩沖區技術,那么在 “后臺繪圖緩沖區”進行的操作是先把緩沖區用背景色 (如白色)填充,然后再把窗口中包含的全部要素 (植被、水系、交通、境界等)都重畫一邊,然后再把選中的目標用一個特殊的符號繪制,最后把繪制好的 “后臺緩沖區”與 “前臺緩沖區”進行交換。在這個過程中要把全部地理信息要素重新繪制一遍,這個過程是很耗時的。而對用戶而言,看到的只是被選中目標進行了突出顯示,整個背景地圖完全沒有變化,因此用戶無法接受點擊地圖后花費很長時間進行地圖背景重繪而又看不到地圖背景的變化。

再比如在地圖編輯的過程中,如果選中一個居民地層中的一個點目標,然后從已有的位置拖動到另一個位置。在拖動的過程中被拖動的目標的位置會不停的變化,在這個過程中如果只有雙緩沖區,那么繪圖過程將會很慢。每發生一次鼠標移動就會把 “后臺緩沖區”重新用背景色填充,然后把窗口中的全部地圖要素重繪繪制一邊,當繪制被編輯目標的時候,將按照新的位置進行繪制,最后再把“后臺緩沖區”和 “前臺緩沖區”進行交換完成繪制。可以看到這個過程中窗口中的全部地圖要素都會不停的重新繪制,因此繪圖效率會非常低。對于用戶來說,看到的只是一個目標在移動,顯然無法接受全部要素重繪的情況。

從以上討論可以看出對于地理信息系統而言,雙緩沖區技術遠遠無法滿足要求。為此,在TerraMap中采用了地圖緩沖區技術。

1.2 地圖緩沖區

地圖緩沖區不是指某一個具體的緩沖區,而是一組分工明確,相互配合的緩沖區組合在一起,共同解決地圖選擇和編輯過程中地圖快速繪制的技術。

從前面的討論可以看出雙緩沖區技術之所以效率低,是因為在很多情況下,地圖只是改變很小一部分,確必須把整個地圖重新繪制一遍。為此,我們想到通過創建一個“地圖緩沖區”把所有繪制好的相對固定的地圖數據放到新的 “地圖緩沖區”中,如圖2所示。

圖2 地圖緩沖區

在地圖緩沖區結構下的繪圖流程如下:

(1)每次繪制地圖的時候,把交通、水系、軍民地、境界等要素符號信息繪制到 “地圖緩沖區”;

(2)然后把 “地圖緩沖區”中的內容復制到 “后臺緩沖區”,在 “后臺緩沖區”繪制選中目標的符號;

(3)所有信息繪制好之后交換到 “前臺緩沖區”完成一次繪圖。

有了 “地圖緩沖區”,當通過鼠標操作選中一個目標的時候,由于底圖信息沒有發生改變,因此 “地圖緩沖區”中的內容沒有變化。只要把 “地圖緩沖區”中的內容重新復制到 “后臺緩沖區”,然后在 “后臺緩沖區”重新繪制選中目標,最后把繪制好的內容復制到 “前臺緩沖區”完成一次繪制。這個過程中由于 “地圖緩沖區中”的內容不再重新繪制,因此繪圖速度會大幅度提高。

1.3 圖層緩沖區

有了 “地圖緩沖區”并沒有完全解決問題,當需要進行數據編輯的時候,由于修改了地圖本身的數據,因此“地圖緩沖區”還需要重新繪制,因此繪圖時間還是較長。為此,對 “地圖緩沖區”結構進行修改,把 “地圖緩沖區”分為多個 “圖層緩沖區”,如圖3所示,圖層緩沖區的數量可以根據情況有所增減。

在 “圖層緩沖區”的結構下,繪圖流程如下:

圖3 圖層緩沖區

(1)根據圖層的上下次序和是否是被編輯的圖層可以把地圖圖層數據 (如境界、水系、居民地等)分別繪制到“圖層緩沖區1”到 “圖層緩沖區n”中,其中多個不被編輯的圖層可以繪制到一個圖層緩沖區 (也可以繪制到多個圖層緩沖區),每個被編輯的圖層繪制到一個緩沖區;

(2)然后至下而上把每個圖層緩沖區中的內容復制到“后臺緩沖區”,在 “后臺緩沖區”繪制選中目標的符號;

(3)所有信息繪制好之后交換到 “前臺緩沖區”完成一次繪圖。

我們以編輯交通層為例描述在地圖編輯過程中的繪圖過程,假設有兩個圖層緩沖區 (“圖層緩沖區1”和 “圖層緩沖區2”)交通層之外的圖層都繪制到 “圖層緩沖區2”,交通層數據繪制到 “圖層緩沖區1”。當編輯交通圖層數據后繪圖時,由于窗口顯示范圍沒有發生改變,交通層之外的其它圖層數據沒有發生改變,因此,“圖層緩沖區2”中的內容不必重畫,直接拷貝到 “后臺緩沖區”。修改后交通層的數據繪制到 “圖層緩沖區1”,再拷貝到 “后臺緩沖區”;最后交換到 “前臺緩沖區”,完成繪制。這個繪制過程中,繪制工作量最大的 “圖層緩沖區2”由于沒有修改而沒有進行實際繪制,因此繪圖速度會大為提高。可以看出由于有了圖層緩沖區的控制,解決了編輯過程中的繪圖速度問題。

圖層緩沖區的基本原理和地圖緩沖區相同,可以看作是對地圖緩沖區的擴展。而地圖緩沖區的結構可以看作是只有一個圖層緩沖區的特殊的圖層緩沖區結構。

1.4 組件緩沖區

圖層緩沖區技術解決了地圖數據選擇、地圖數據編輯過程中的繪圖速度問題,但是并沒有解決全部問題。基于地理信息系統的應用中使用最多的模式是以地圖為背景,在地圖之上繪制各種業務專題數據 (如氣象、水文、電磁等)。相對于地圖而言,用戶更為關心業務信息,會對業務信息進行選取、查詢、編輯。在這種使用模式下,前面提到的圖層緩沖區技術就不能完全勝任,業務數據要繪制在地圖數據之上,顯然業務數據不可能繪制在某一個圖層緩沖區中和地圖圖層交織在一起。如果把業務數據繪制在“后臺緩沖區”中,一個 “后臺緩沖區”無法解決所有的業務數據專題繪圖要求。為此,在現有的圖層緩沖區之上,我們提出了組件緩沖區的技術,如圖4所示。

圖4 組件緩沖區

在原有的 “后臺緩沖區”之上,增加了多個 “組件緩沖區”和一個 “屏幕緩沖區”,組件緩沖區用于分別存儲不同種類的業務數據,組件緩沖區的數量可以根據實際情況進行增減。在組件緩沖區結構下的繪圖流程如下:

(1)根據圖層的上下次序和是否是被編輯的圖層可以把地圖圖層數據 (如境界、水系、居民地等)分別繪制到“圖層緩沖區1”到 “圖層緩沖區n”中,其中多個不被編輯的圖層可以繪制到一個圖層緩沖區 (也可以繪制到多個圖層緩沖區),每個被編輯的圖層繪制到一個緩沖區;

(2)然后之下而上把每個圖層緩沖區中的內容復制到“后臺緩沖區”,在 “后臺緩沖區”繪制選中目標的符號,完成地圖數據的繪制;

(3)把每種專題數據 (或者說業務數據)分別繪制到不同的組件緩沖區,如氣象數據繪制到 “組件緩沖區n”,水文數據繪制到 “組件緩沖區2”,電磁數據繪制到 “組件緩沖區1”;

(4)從下至上把 “后臺緩沖區”和多個組件緩沖區的數據分別復制到 “屏幕緩沖區”;

(5)所有信息繪制好之后把 “屏幕緩沖區”中的位圖信息交換到 “前臺緩沖區”完成一次繪圖。

我們以氣象數據發生變化的繪制過程為例,說明系統的具體繪圖機制:

(1)當氣象數據發生變化后會觸發一次地圖繪圖事件;

(2)由于地圖數據沒有發生任何變化,因此 “后臺緩沖區”中的信息沒有變化,不需要重新繪制,直接復制到屏幕緩沖區;

(3)氣象數據發生了變化,重新繪制 “組件緩沖區n”,然后復制到屏幕緩沖區;

(4)水文數據沒有發生變化,直接把 “組件緩沖去2”的位圖信息復制到屏幕緩沖區;

(5)電磁數據沒有發生變化,直接把 “組件緩沖去1”的位圖信息復制到屏幕緩沖區;

(6)最后把 “屏幕緩沖區”中的位圖信息復制到 “前臺緩沖區”。

在這個過程中,只有數據發生修改的 “組件緩沖區n”進行了重繪工作,其它緩沖區中的數據都是直接復制,沒有實際繪制工作,因此繪圖速度會大大提高。

繪圖緩沖區技術是一整套緩沖區技術的組合包括雙緩沖區、地圖緩沖區、圖層緩沖區和組件緩沖區。不同種類緩沖區解決地圖繪制過程中遇到的不同的問題。有了繪圖緩沖區技術,可以有效提高不同使用方式下地圖數據的繪圖速度。下面,就繪圖緩沖區技術的具體實現技術進行闡述。

2 繪圖緩沖區技術實現

TerraMap地理信息系統中的繪圖緩沖區的實現是通過3個接口來完成:緩沖區接口 (IGF_DispBitmapBuffer)、圖層緩沖區控制接口 (IGIS_DispBitmapBufferController)和組件緩沖區控制接口 (IGF_DispComponentBitmap-BufferController),相互關系如圖5所示。

圖5 接口關系

2.1 緩沖區接口

緩沖區接口代表了位圖緩沖區,可以代表圖層緩沖區、后臺緩沖區、組件緩沖區、屏幕緩沖區和前臺緩沖區等一個具體的緩沖區。

通過 Create (int iWidth,int iHeight,int iColorBit-Count)可以創建一個緩沖區,并且設置緩沖區位圖的寬度、高度和顏色位數,其中顏色位數可以使24位也可以是32位。

通過 Reset (int iWidth,int iHeight,int iColorBit Count=0)可以重新設置位圖的寬度、高度和顏色位數。

通過GetBmpHandle()可以獲取具體的位圖句柄,拿到繪圖句柄就可以在緩沖區中進行繪圖,也可以獲取已經繪制好的位圖信息。

通過SetModified(bool bModified)可以設置緩沖區是否被修改過,前文提到的當地圖數據沒有發生改變的時候,就設置緩沖區為沒有修改,這樣就不必重新繪制緩沖區了。

通過SetTransparentColor(int iColor)可以設置圖層的透明色。在緩沖區復制的時候,不能把整個緩沖區位圖都復制到另一個緩沖區,否則會把已經繪制好的一些地圖數據覆蓋掉。為此在緩沖區中設置了透明色,當緩沖區中某個區域的顏色為透明色的時候,緩沖區復制的時候將不會繪制這塊區域。

2.2 圖層緩沖區控制接口

圖層緩沖區控制接口描述了有多個圖層緩沖區和一個后臺緩沖區組成緩沖區集合,用于解決地圖繪制中產生的繪圖速度問題。

通過GetBackgoundBufferPtr()可以獲取 “后臺緩沖區”,“后臺緩沖區”是一個IGF_DispBitmapBuffer接口。

通過GetBufferCount()可以獲取圖層緩沖區的數量。

通過GetBuffer(int iIndex)可以獲取某一個具體的圖層緩沖區,圖層緩沖區是一個IGF_DispBitmapBuffer接口。

通過InsertBuffer(int iIndex,const char* szName)可以增加一個圖層緩沖區。

通過DeleteBuffer(int iIndex)可以刪除某一個具體的緩沖區。

2.3 組件緩沖區控制接口

組件緩沖區控制接口代表了由后臺緩沖區、多個組件緩沖區和屏幕緩沖區組成的緩沖區集合,用于解決專題業務數據繪制過程中的速度問題。

通過GetScreenBufferPtr()可以獲取 “屏幕緩沖區”,“屏幕緩沖區”是一個IGF_DispBitmapBuffer接口。

通過GetBufferCount()可以獲取組件緩沖區的數量,組件緩沖區是一個IGF_DispBitmapBuffer接口。

通過GetBuffer(int iIndex)可以獲取某一個具體的組件緩沖區。

3 成 果

TerraMap所采用的繪圖緩沖區技術是針對地理信息系統中地圖繪制過程中碰到的各種影響繪圖速度問題,專門研制的一套技術并加以實現。由于繪圖緩沖區技術的應用,TerraMap在各種應用場景中 (地圖選取、編輯、專題數據選取、編輯等)都能夠提供很好的地圖繪制速度,滿足不同業務應用對地圖繪制的需求。繪圖緩沖區技術也可以應用在其它地理信息平臺的研制過程中。

4 結束語

對于地理信息系統這樣的以圖形處理為主要工作內容的軟件系統,緩沖區技術是一個必不可少的關鍵技術。任何地理信息系統都會或多或少的利用到緩沖區技術,在TerraMap中為了滿足各種具體應用的要求,對緩沖區技術進行了充分深入的研究,從多個層面解決不同層次的問題。本文提到的緩沖區技術的研究思路同樣適用于其它圖形處理軟件,如CAD軟件等,而不僅僅是地理信息系統中。只是其它系統中需要根據實際應用需求對緩沖區技術進行一定的調整,但是基本思路是一致的。

[1]NING Jinsheng,CHEN Junyong,LI Deren,et al.Introduction to surveying and mapping [M].Wuhan:Wuhan University Press,2009:9-17 (in Chinese). [寧津生,陳俊勇,李德仁,等.測繪學概論 [M].武漢:武漢大學出版社,2009:9-17.]

[2]LIN Aiwen.Physical geography [M].Wuhan:Wuhan University Press,2010:4-13 (in Chinese). [林愛文.自然地理學 [M].武漢:武漢大學出版社,2010:4-13.]

[3]GUO Qingsheng, HUANG Yuanlin,ZHENG Chunyan,et al.Spatial reasoning and incremental map generalization[M].Wuhan:Wuhan University Press,2007:7-17 (in Chinese).[郭慶勝,黃遠林,鄭春燕,等.空間推理與漸進式地圖綜合 [M].武漢:武漢大學出版社,2007:7-17.]

[4]ZHANG Xinchang,ZENG Guanghong,ZHANG Qingnian.Cities geographic information system [M].Beijing:Science Press,2006:25-74(in Chinese).[張新長,增廣鴻,張青年.城市地理信息系統 [M].北京:科學出版社,2006:25-74.]

[5]ZHANG Hong,WEN Yongning,LIU Aili.Geographic information system based algorithm [M].Beijing:Science Press,2007:15-44(in Chinese).[張宏,溫永寧,劉愛利.地理信息系統算法基礎 [M].北京:科學出版社,2007:15-44.]

[6]HUA Yixin,WANG Fei,GUO Xinghua,et al.General principles and techniques of operational picture[M].Beijing:PLA Publishing House,2007:21-46 (in Chinese). [華一新,王飛,郭興華,等.通用作戰圖原理與技術 [M].北京:解放軍出版社,2007:21-46.]

[7]XU Xiru.Remote sensing physics[M].Beijing:Peking University Press,2006:20-25 (in Chinese).[徐希孺.遙感物理[M].北京:北京大學出版社,2006:20-25.]

[8]ZHANG Baogang.Topographical maps of the six space-time database construction time element[M].Beijing:Surveying and Mapping Press,2009:2-4(in Chinese).[張保鋼.地形圖時空數據庫建設中的六個時間要素 [M].北京:測繪出版社,2009:2-4.]

[9]ZHANG Wei.Large scale digital topographic map database acquisition and construction of integrated system development[M].Beijing:Surveying and Mapping Press,2009:16-19(in Chinese).[張偉.大比例尺數字地形圖采集與建庫一體化系統研制 [M].北京:測繪出版社,2009:16-19.]

[10]DUAN Liqiong.Strengthen the universal conversion platform Forgeographical information systems reflections on the construction [M].Beijing:Surveying and Mapping Press,2009:28-30(in Chinese).[段麗瓊.加強地理信息系統通用轉換平臺建設的幾點思考 [M].北京:測繪出版社,2009:28-30.]

[11]YANG Yingwei.The public map service in the multi-scale spatial data production and maintenance [M].Beijing:Surveying and Mapping Press,2009:34-39 (in Chinese).[楊英偉.公眾地圖服務中多尺度空間數據生產與維護 [M].北京:測繪出版社,2009:34-39.]

[12]CHE Zhiqiang.GIS-based geological map spatial database[M].Beijing:Surveying and Mapping Press,2009:43-47(in Chinese).[車志強.基于GIS的地質圖空間數據庫建設[M].北京:測繪出版社,2009:43-47.]

[13]JIANG Botao.Ground sample distance map based on biopsy tissue model[M].Beijing:Surveying and Mapping Press,2009:804-807(in Chinese).[蔣波濤.基于地面采樣距離的地圖切片組織模型研究 [M].北京:測繪出版社,2009:804-807.]

[14]XU Yunhe.Plug-in design and implementation of GIS [M].Beijing:Surveying and Mapping Press,2009:816-823 (in Chinese). [徐云和.插件式GIS設計與實現 [M].北京:測繪出版社,2009:816-823.]

[15]BAO Nisha.Raster vector data and method of the process of selection of scale [M].Beijing:Surveying and Mapping Press,2009:823-828 (in Chinese). [包妮沙.矢量數據柵格化過程中尺度與方法選擇研究 [M].北京:測繪出版社,2009:823-828.]

[16]TONG Ligui.3Genvironment,the mobile GIS industry[M].Beijing:Surveying and Mapping Press,2009:832-836(in Chinese). [童麗閨.3G環境下的移動GIS行業發展[M].北京:測繪出版社,2009:832-836.]

主站蜘蛛池模板: 国产极品美女在线| 日韩精品成人在线| 色噜噜狠狠狠综合曰曰曰| 亚洲精品无码不卡在线播放| 国产精品蜜臀| 亚洲男人天堂网址| 久久99国产综合精品女同| 九九视频免费在线观看| 国产精品成人一区二区不卡| 福利国产微拍广场一区视频在线| 在线99视频| 亚洲综合精品香蕉久久网| 亚洲精品免费网站| 久久国产热| 免费一极毛片| 日韩欧美国产综合| 亚洲婷婷在线视频| 国产精品自在线拍国产电影| 国产黄视频网站| 香蕉久久永久视频| a毛片在线| 国产a v无码专区亚洲av| 精品国产99久久| 国产主播福利在线观看| 色屁屁一区二区三区视频国产| 成年网址网站在线观看| 丝袜无码一区二区三区| 无套av在线| 亚洲日韩高清在线亚洲专区| 精品91视频| 91精品人妻一区二区| 国产精品区网红主播在线观看| 亚洲欧美一级一级a| 久久www视频| 精品人妻无码区在线视频| 欧美日本二区| 成人欧美在线观看| 婷婷开心中文字幕| 2022国产91精品久久久久久| 国产一级一级毛片永久| 91福利国产成人精品导航| 五月天久久婷婷| 成人亚洲国产| 精品一区二区三区中文字幕| 亚洲Av综合日韩精品久久久| 一级成人a毛片免费播放| 国产男人的天堂| 中国国产高清免费AV片| 国产高清又黄又嫩的免费视频网站| 色婷婷亚洲综合五月| 亚洲精品国产乱码不卡| 日韩在线视频网| 亚洲色欲色欲www在线观看| 一区二区三区毛片无码| 亚洲精品免费网站| 538国产在线| 国产极品粉嫩小泬免费看| 99在线观看视频免费| 99青青青精品视频在线| 亚洲视频一区| 精品久久国产综合精麻豆| 3344在线观看无码| 国产成人福利在线视老湿机| 久久久精品无码一二三区| 亚洲an第二区国产精品| 亚洲第一页在线观看| 粉嫩国产白浆在线观看| 国产精品专区第一页在线观看| 中文无码日韩精品| 99手机在线视频| av在线手机播放| 久久亚洲国产一区二区| 成人国产免费| 老司机午夜精品网站在线观看| 高清不卡一区二区三区香蕉| 久久亚洲日本不卡一区二区| a级毛片一区二区免费视频| 精品久久久久久成人AV| 国产大片喷水在线在线视频| 国产麻豆va精品视频| 精品成人一区二区| 国产剧情国内精品原创|