成都理工大學(xué)地球探測(cè)與信息技術(shù)重點(diǎn)實(shí)驗(yàn)室 何 朋 苗 放 劉登芬
隨著科技和社會(huì)的發(fā)展,人類對(duì)自然世界的過度開發(fā),造成地球遠(yuǎn)遠(yuǎn)超過其原有的限度,各種災(zāi)害事件頻繁發(fā)生,如地震、泥石流以及海嘯等,它們給人類帶來巨大的生命威脅和財(cái)產(chǎn)損害,可是沒有一個(gè)有效的可視化表達(dá)平臺(tái)來展示這些災(zāi)害,這樣就不能給人類清楚直觀的視覺沖擊,也不能給研究人員提供一個(gè)很好的基礎(chǔ)平臺(tái),通過研究達(dá)到預(yù)防災(zāi)害,減少災(zāi)害發(fā)生的目的。
為了解決可視化表達(dá)問題,在空間信息網(wǎng)絡(luò)服務(wù)模式研究的基礎(chǔ)上,針對(duì)地球?yàn)?zāi)害事件,本論文提出一種基于HGML的地球?yàn)?zāi)害事件的可視化表達(dá)的方式,并在構(gòu)建的平臺(tái)中研究快速加載技術(shù),提高系統(tǒng)性能。
HGML是成都理工大學(xué)地球探測(cè)與信息技術(shù)重點(diǎn)實(shí)驗(yàn)室于2007年提出的一種基于元數(shù)據(jù)和XML的數(shù)據(jù)共享和利用機(jī)制,用來描述矢量數(shù)據(jù)的各種屬性,解決矢量圖形在World Wind中交互顯示問題。
XML作為一種開放的、標(biāo)準(zhǔn)的、可擴(kuò)展的、具有自描述特性的、可語法驗(yàn)證的數(shù)據(jù)記錄方式,在描述異構(gòu)數(shù)據(jù)時(shí)具有透明化差異的能力,將其與HTML有機(jī)結(jié)合形成HGML,解決空間數(shù)據(jù)在Web環(huán)境下的開放式表達(dá)。
超地理標(biāo)記語言HGML[1](Hyper Geographic Markup Language),是基于HTML和XML的空間數(shù)據(jù)建模及可視化表達(dá)的描述語言,解決空間數(shù)據(jù)在地理信息瀏覽器中交互顯示及三維虛擬仿真等問題。HGML內(nèi)容包括屬性描述和顯示描述兩部分,屬性描述主要包括要素、坐標(biāo)位置、及說明信息等,顯示屬性是初始化時(shí)的顯示設(shè)置描述[2,3]。HGML文本是由HGML命令組成的描述性文本,HGML命令可以說明空間對(duì)象,包括點(diǎn)、線、面、柵格數(shù)據(jù),以及影像和屬性數(shù)據(jù)。HGML的結(jié)構(gòu)包括頭部、主體兩大部分,其中頭部描述瀏覽器所需的信息,而主體則包含所要說明的具體內(nèi)容。HGML具有簡易性、通用性、可擴(kuò)展性以及平臺(tái)無關(guān)性特點(diǎn),有一套完整的矢量數(shù)據(jù)、影像數(shù)據(jù)和網(wǎng)格數(shù)據(jù)標(biāo)準(zhǔn)。
World Wind是NASA發(fā)布的一個(gè)開放源代碼的地理科普軟件,它是一個(gè)可視化地球儀[4]。低分辨率的Blue marble數(shù)據(jù)現(xiàn)在包含的初始安裝內(nèi),當(dāng)用戶放大到特定區(qū)域時(shí),附加的高分辨率數(shù)據(jù)將會(huì)自動(dòng)從NASA服務(wù)器上被下載。
World Wind是一個(gè)優(yōu)秀的客戶端框架引擎,XML實(shí)現(xiàn)數(shù)據(jù)描述和軟件設(shè)置,通過World Model、圖層、插件、http和WMS請(qǐng)求、三維渲染等實(shí)現(xiàn)交互式瀏覽。XML是數(shù)據(jù),World Wind則是數(shù)據(jù)執(zhí)行的引擎,其可擴(kuò)展性和開發(fā)性非常強(qiáng)大。
綜上所述,HGML是數(shù)據(jù),World Wind是數(shù)據(jù)執(zhí)行的引擎,就可以在World Wind基礎(chǔ)上進(jìn)行二次開發(fā),構(gòu)建基于HGML的地球?yàn)?zāi)害事件的可視化表達(dá)平臺(tái)。
客戶端發(fā)出請(qǐng)求,服務(wù)器端對(duì)請(qǐng)求進(jìn)行處理并響應(yīng)數(shù)據(jù)給客戶端,HGML對(duì)數(shù)據(jù)組織、封裝和管理,展現(xiàn)在World Wind中。
地球?yàn)?zāi)害事件數(shù)據(jù)的種類可以根據(jù)災(zāi)害的種類來劃分,可以分為人為災(zāi)害和自然災(zāi)害。人為災(zāi)害可以分為戰(zhàn)爭、事故、動(dòng)蕩、犯罪以及恐怖活動(dòng)等;自然災(zāi)害又可以分為氣象災(zāi)害、洪水災(zāi)害、地震災(zāi)害、農(nóng)作物災(zāi)害、海洋災(zāi)害以及地質(zhì)災(zāi)害等。這些災(zāi)害數(shù)據(jù)格式復(fù)雜,屬性差異很大,要想很好的對(duì)這些數(shù)據(jù)進(jìn)行利用和管理,就需要通過HGML進(jìn)行封裝和處理。
HGML在平臺(tái)中用于處理從服務(wù)器端到客戶端的數(shù)據(jù)流,其中包含SQL語句的數(shù)據(jù)庫查詢結(jié)果。HGML對(duì)數(shù)據(jù)進(jìn)行封裝的設(shè)計(jì)包括兩部分:命名空間和標(biāo)簽。命名空間表示一定域名中HGML規(guī)范用于的某個(gè)項(xiàng)目名稱,其作用是從服務(wù)器端向客戶端傳輸數(shù)據(jù);標(biāo)簽是HGML中具體的節(jié)點(diǎn),構(gòu)造查詢語句在客戶端執(zhí)行。
圖1 瓦片請(qǐng)求優(yōu)先級(jí)示意圖
圖2 地形瓦片分辨率測(cè)試示意圖
圖3 瓦片分辨率測(cè)試圖解
圖4 HGML封裝數(shù)據(jù)結(jié)果圖
圖5 瓦片請(qǐng)求預(yù)測(cè)前后性能測(cè)試圖
標(biāo)簽分為三種,第一種是ResultSet標(biāo)簽,該標(biāo)簽表示一個(gè)數(shù)據(jù)查詢的結(jié)果集,是HGML內(nèi)容的根節(jié)點(diǎn);第二種是row標(biāo)簽,該標(biāo)簽是ResultSet標(biāo)簽的子標(biāo)簽,代表一行數(shù)據(jù);第三種是column標(biāo)簽,該標(biāo)簽是row標(biāo)簽的子標(biāo)簽,代表一行中某列的內(nèi)容。通過這三種標(biāo)簽封裝地球?yàn)?zāi)害事件的各種數(shù)據(jù),在客戶端通過相應(yīng)的HGML解析程序展示在平臺(tái)中。
當(dāng)客戶端發(fā)出請(qǐng)求顯示某一地區(qū)的地球?yàn)?zāi)害事件時(shí),實(shí)際是對(duì)瓦片的請(qǐng)求和顯示。可是構(gòu)建瓦片模型的方式很多,本文就采用瓦片金字塔模型[5,6],分塊的瓦片金塔模型能夠進(jìn)一步減少數(shù)據(jù)訪問量,提高系統(tǒng)的輸入輸出執(zhí)行效率,從而提升系統(tǒng)的整體性能。當(dāng)?shù)匦物@示窗口大小固定時(shí),采用瓦片金字塔模型可以使數(shù)據(jù)訪問量基本保持不變。
瓦片金字塔模型構(gòu)建之后,采用四叉樹來構(gòu)建瓦片索引和管理瓦片數(shù)據(jù)。在瓦片金字塔基礎(chǔ)上可通過邏輯分塊、節(jié)點(diǎn)編碼和物理分塊構(gòu)建線性四叉樹瓦片索引[5]。
為了匹配客戶端的瓦片請(qǐng)求策略,服務(wù)器端采用預(yù)讀取策略。合適的數(shù)據(jù)緩沖機(jī)制可以提高系統(tǒng)的性能,海量地形實(shí)時(shí)可視化也不例外。若系統(tǒng)能夠提前預(yù)測(cè)系統(tǒng)使用的數(shù)據(jù),并能提前讀取數(shù)據(jù)到緩沖區(qū),當(dāng)系統(tǒng)使用數(shù)據(jù)時(shí)便直接從緩沖區(qū)讀取,從而省去從磁盤讀取數(shù)據(jù)的時(shí)間。數(shù)據(jù)緩沖通過預(yù)測(cè)瓦片請(qǐng)求實(shí)現(xiàn),瓦片請(qǐng)求分為高、中、低三個(gè)優(yōu)先級(jí),高優(yōu)先級(jí)瓦片請(qǐng)求被立即處理;中優(yōu)先級(jí)瓦片請(qǐng)求在沒有高優(yōu)先級(jí)瓦片請(qǐng)求時(shí)被讀取到緩沖區(qū),即數(shù)據(jù)緩沖;低優(yōu)先級(jí)瓦片請(qǐng)求只在系統(tǒng)“空閑”時(shí)才被讀取到緩沖區(qū)。瓦片請(qǐng)求優(yōu)先級(jí)的確定方法如圖1所示。
黑色代表窗口1,灰色代表窗口2,白色代表窗口3。為了實(shí)現(xiàn)瓦片數(shù)據(jù)緩沖,系統(tǒng)在發(fā)送窗口1的瓦片請(qǐng)求時(shí)應(yīng)附帶發(fā)送窗口2和窗口3的瓦片請(qǐng)求,只是瓦片請(qǐng)求的優(yōu)先級(jí)有所不同,這便是瓦片請(qǐng)求預(yù)測(cè)。當(dāng)場(chǎng)景運(yùn)動(dòng)到窗口2時(shí),系統(tǒng)在發(fā)送窗口2的瓦片請(qǐng)求后,數(shù)據(jù)預(yù)測(cè)調(diào)度線程就可以直接從緩沖區(qū)提取數(shù)據(jù)參與地形繪制,而無需即時(shí)從磁盤讀取數(shù)據(jù)。
目標(biāo)瓦片快速加載伴隨著分辨率的快速搜索。采用瓦片金字塔模型,不同區(qū)域?qū)?yīng)不同分辨率的地形數(shù)據(jù),因此在瓦片快速加載過程中需要進(jìn)行分辨率測(cè)試,圖2為地形瓦片分辨率測(cè)試示意圖,圖中P為視點(diǎn),白色矩形表示與主體相交的瓦片數(shù)據(jù)。矩形越小表示瓦片分辨率越高。
目標(biāo)瓦片加載采用由大入小、層層推進(jìn)的方式。首先判斷可見區(qū)域是否在地形數(shù)據(jù)范圍內(nèi),測(cè)試與可見區(qū)域重合的上層瓦片是否滿足分辨率要求,若不滿足,繼續(xù)測(cè)試相鄰?fù)咂?,直到搜索出所有滿足分辨率要求的瓦片為止。完整的算法描述如下:
1)判斷可見區(qū)域是否與地形數(shù)據(jù)重合。若重合,跳到2;否則,算法結(jié)束。
2)依次判斷上層瓦片是否滿足分辨率要求。若滿足,將其插入到準(zhǔn)備鏈表中;否則,將其4個(gè)相鄰?fù)咂迦氲綔y(cè)試鏈表a。
3)判斷測(cè)試鏈表a是否為空。若為空,算法結(jié)束;否則,跳到4。
4)依次判斷測(cè)試鏈表a中的瓦片是否與可見區(qū)域重合。若重合,將其插入到測(cè)試鏈表b;否則,舍棄瓦片。
5)清空測(cè)試鏈表a,跳到6。
6)依次判斷測(cè)試鏈表b中的瓦片是否滿足分辨率要求。若滿足,將其插入到準(zhǔn)備鏈表中;否則,將其4個(gè)相鄰?fù)咂迦氲綔y(cè)試鏈表a。
7)清空測(cè)試鏈表b,跳到3。
如圖3所示,假設(shè)被測(cè)試瓦片的分辨率為2,瓦片左邊分辨率小于2,為了滿足需求,則必須對(duì)瓦片進(jìn)行細(xì)分,然后再進(jìn)行重合測(cè)試和分辨率測(cè)試。
目標(biāo)瓦片快速加載算法是一個(gè)遞歸算法。進(jìn)行分辨率判斷時(shí)只需對(duì)瓦片的四邊進(jìn)行判斷,所以效率很高。此外,從瓦片索引數(shù)組中提取相鄰?fù)咂瑹o需進(jìn)行空間位置判斷,只要知道偏移量即可,顯著地提高算法的性能。
通過HGML對(duì)地球?yàn)?zāi)害事件中的各種數(shù)據(jù)進(jìn)行封裝,對(duì)數(shù)據(jù)庫進(jìn)行查詢,得到服務(wù)器向客戶端傳回的hgml數(shù)據(jù)流。封裝成的HGML格式的數(shù)據(jù)如圖4所示。
利用瓦片請(qǐng)求策略及快速加載算法,實(shí)現(xiàn)三維可視化,顯示窗口為800×600像素,在屏幕顯示誤差為1到10個(gè)像素時(shí),對(duì)不采用瓦片請(qǐng)求預(yù)測(cè)平均幀頻和采用瓦片請(qǐng)求預(yù)測(cè)后平均幀頻分別測(cè)試,結(jié)果如下圖5。
通過測(cè)試比較可知,采用瓦片請(qǐng)求預(yù)測(cè)后的平均幀頻比不采用瓦片請(qǐng)求預(yù)測(cè)的平均幀頻有明顯的提高,并且隨著屏幕顯示誤差的增大而增大,效果明顯,由此驗(yàn)證了快速加載算法和請(qǐng)求預(yù)測(cè)策略的正確性和有效性。
為了解決地球?yàn)?zāi)害事件可視化表達(dá)存在的問題,給一般人員提供一個(gè)生動(dòng)直觀的交互平臺(tái),也給研究人員提供一個(gè)研究基礎(chǔ)平臺(tái),更好地預(yù)防災(zāi)害和減少損失,本文提出一種基于HGML的地球?yàn)?zāi)害事件的可視化表達(dá)方式,在此基礎(chǔ)上構(gòu)建可視化表達(dá)平臺(tái)。
HGML是基于HTML和XML的空間數(shù)據(jù)建模及可視化表達(dá)的描述語言,解決空間數(shù)據(jù)在地理信息瀏覽器中交互顯示及三維虛擬仿真等問題。平臺(tái)中服務(wù)器端傳輸?shù)娇蛻舳说母鞣N地球?yàn)?zāi)害事件的數(shù)據(jù)通過HGML封裝成統(tǒng)一格式的數(shù)據(jù),這樣便于數(shù)據(jù)的管理、組織、傳輸和處理等。
客戶端采用瓦片請(qǐng)求策略,在分析地球?yàn)?zāi)害事件各類數(shù)據(jù)的基礎(chǔ)上,構(gòu)建瓦片金字塔模型,并通過四叉樹進(jìn)行瓦片索引和數(shù)據(jù)管理;在服務(wù)器端采用請(qǐng)求預(yù)測(cè)方式,利用合適的數(shù)據(jù)緩存機(jī)制和瓦片優(yōu)先級(jí)機(jī)制提高數(shù)據(jù)讀取速度;通過瓦片 分辨率的搜索算法快速加載瓦片提高系統(tǒng)性能;最后通過HGML封裝的結(jié)果圖和性能測(cè)試驗(yàn)證系統(tǒng)的正確性和高效性。
[1]郭曦榕,苗放,王華軍,許義興等.空間信息G/S網(wǎng)絡(luò)訪問模式體系架構(gòu)初探[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(10):72-74.
[2]俞曉.空間信息管理——G/S模式研究[D].成都:成都理工大學(xué)信息工程學(xué)院,2008.
[3]程小恩.基于HGML的空間數(shù)據(jù)轉(zhuǎn)換技術(shù)研究[D].成都:成都理工大學(xué)信息工程學(xué)院,2009.
[4]百度百科:World Wind[EB/OL].http://baike.baidu.com/view/812414.htm.
[5]Bigheader.World Wind技術(shù)手冊(cè)[R].2007.
[6]童曉沖,賁進(jìn),張永生.全球多分辨率數(shù)據(jù)模型的構(gòu)建與快速顯示[J].測(cè)繪科學(xué),2006,01.