黎江峰
摘要:湛江空管站天氣雷達(dá)體掃描三維顯示系統(tǒng)通過采集湛江多普勒天氣雷達(dá)的多層CAPPI產(chǎn)品,經(jīng)過平滑算法、取樣和三角剖分等處理拼接成立體的三維圖形,并使用WEB形式展示給預(yù)報員。預(yù)報員在網(wǎng)頁上通過簡單的操作即可觀察回波的頂高以及垂直運動情況,在強對流天氣中能更有把握的作出預(yù)報。
關(guān)鍵詞:三維顯示系統(tǒng);three.js;平滑算法;三角剖分;AJAX
1引言
自建成以來,湛江空管站的新多普勒天氣雷達(dá)為預(yù)報員帶來了豐富多樣的產(chǎn)品,但是在這些繁雜的產(chǎn)品中卻缺少了雷達(dá)體掃描三維顯示。預(yù)報員在查看VOL數(shù)據(jù)時只能通過CAPPI方式;既不直觀,也不方便,往往不能準(zhǔn)確及時的掌握回波整體的動態(tài)。因此,有必要開發(fā)一套基于雷達(dá)體掃描數(shù)據(jù)的回波三維顯示系統(tǒng)。
雷達(dá)體掃描三維顯示能直觀的展示雷達(dá)回波的立體圖像,讓預(yù)報員更方便的掌握回波頂高、回波頂高的變化以及回波垂直運動的趨勢,在強對流天氣中能更有把握的作出預(yù)報。經(jīng)過對預(yù)報員的意見進(jìn)行征集,認(rèn)為開發(fā)一套湛江空管站天氣雷達(dá)體掃描三維顯示系統(tǒng)(以下簡稱三維系統(tǒng))是必需的。
2系統(tǒng)概要設(shè)計
2.1系統(tǒng)需求
本系統(tǒng)為方便預(yù)報員的使用同時野考慮到日后的升級維護(hù),使用B/S架構(gòu)。后臺端系統(tǒng)自動獲取雷達(dá)服務(wù)器中的多層CAPPI產(chǎn)品,合并成一個整體的三維回波。前臺端系統(tǒng)使用插件顯示后臺傳送來的三維回波。預(yù)報員可使用鼠標(biāo)或鍵盤對回波進(jìn)行拖動縮放等操作,實現(xiàn)全方位的查看。
2.2系統(tǒng)流程
三維系統(tǒng)使用MATLAB軟件作為后臺處理平臺,定時采集雷達(dá)服務(wù)器中的多層CAPPI產(chǎn)品,將其各自還原成強度數(shù)據(jù)后通過平滑算法拼接為一個整體的三維模型。由于網(wǎng)頁顯示時終端的運算能力不強,只提取模型的表面,并將其三角剖分后制作成點陣模型。
三維系統(tǒng)的網(wǎng)頁服務(wù)器采用nodejs,定時采集存放在指定目錄的模型文件,通過socket技術(shù)異步發(fā)往前臺瀏覽器。
三維系統(tǒng)的在瀏覽器接收到服務(wù)器異步發(fā)來的模型文件后,將其調(diào)整大小、染色、賦予材質(zhì),最終顯示給客戶。
流程如圖1
2.3系統(tǒng)環(huán)境
考慮到還原CAPPI產(chǎn)品、拼接時的平滑算法以及三角剖分操作等都需要專業(yè)的數(shù)字處理軟件,系統(tǒng)處理平臺決定采用MATLAB軟件。
由于系統(tǒng)需要后臺定時獲取模型,決定利用nodejs作為網(wǎng)頁服務(wù)器。
前臺則采用THREE.JS腳本負(fù)責(zé)顯示三維模型。THREE.JS腳本具有擴展性好、使用方便和性能強大等特點,可在IE/CHROME/FIREFOX等瀏覽器上展示絢麗的三維效果,非常適合本軟件的需求。
3系統(tǒng)詳細(xì)設(shè)計
3.1處理平臺
1)由于湛江多普勒天氣雷達(dá)每6分鐘生成一份VOL數(shù)據(jù),處理平臺每隔6分鐘在雷達(dá)服務(wù)器中讀取多層CAPPI產(chǎn)品圖片。讀取CAPPI圖片后MATLAB將其加載到內(nèi)存中,通過對比色標(biāo)將圖片轉(zhuǎn)換為對應(yīng)的強度矩陣。然后15層二維強度矩陣疊加合成一個三位強度矩陣。為了減輕系統(tǒng)處理壓力,使用interp3函數(shù)對矩陣取樣,分別在長、寬、高三個維度上縮減規(guī)模。為了減少每層間資料缺失造成的不連續(xù),還應(yīng)用了smooth函數(shù)進(jìn)行平滑化插值。
2)三維矩陣生成后,然后按回波強度等級劃分為12個新矩陣。使用isosuface函數(shù)對這些矩陣進(jìn)行等值面取樣。由于強度已經(jīng)劃分,每個矩陣中回波強度都是一致的,因此等值面就是矩陣表面。同時該函數(shù)還能對所取的表面數(shù)據(jù)離散化并進(jìn)行三角剖分。此步驟完成后,將得到12個三維模型的面數(shù)據(jù)和法線向量數(shù)據(jù)。
3)將這些三維模型的面數(shù)據(jù)和法線向量數(shù)據(jù)按照obi文件的規(guī)范進(jìn)行排序和編寫。同時,為了配合下一步在B/S架構(gòu)中使用這些0bi文件,編寫時使用JSON格式。由于MATLAB在寫入文件時偏向于整體寫入,若指定每行每列的格式則效率大大降低,于是需要預(yù)先使用矩陣轉(zhuǎn)置整體除法等對矩陣進(jìn)行處理。
3.2服務(wù)器
1)服務(wù)器同樣每隔6分鐘讀取一次處理平臺生成的obi文件。讀取后放到網(wǎng)頁資源文件夾中,等待前臺獲取。而且根據(jù)文件夾中當(dāng)前所含的obi文件生成文件清單。
2)當(dāng)前臺瀏覽器請求網(wǎng)頁時,生成瀏覽頁面送到前端。此頁面包括了顯示模型文件的iavascript插件。
3.3前端
1)用戶打開頁面時,瀏覽器從服務(wù)器獲取網(wǎng)頁,然后加載其中的iavascript插件。其中包含了THREE.is插件,用于最終顯示模型。
2)前臺每隔10秒鐘向服務(wù)器請求一次文件清單。如果文件清單變更,則通過AJAX技術(shù)異步獲取新增的obj文件并寫入前臺的內(nèi)存。使用AJAX技術(shù)可在瀏覽器等待obi文件數(shù)據(jù)時CPU仍然為其余語句分配資源,避免了單線程的iavascript下載模型文件時無法正常渲染正在顯示的模型。當(dāng)模型文件全部獲取完畢后處理模型的語句才會執(zhí)行。
3)獲取0bi文件后使用THREE.is的loader函數(shù)按文件描述的面和法向量在內(nèi)存中生成相應(yīng)的多邊形模型geometry。此geometry緩存到一個模型數(shù)組中等待render函數(shù)將其調(diào)取、渲染。由于瀏覽器內(nèi)存開辟限制,經(jīng)過反復(fù)試驗,將瀏覽器緩存模型數(shù)設(shè)為三個。因此,在生成新模型的同時要使用dispose函數(shù)刪除舊的模型,將內(nèi)存釋放,以防內(nèi)存耗盡。
4)在調(diào)整模型的大小、位置后為其賦予材質(zhì)。在這里,為了方便顯示不同強度的回波且減少瀏覽器負(fù)擔(dān),使用了meshbasemeterial材質(zhì)的線條顯示方式。然后THREE.is使用rander函數(shù)對其進(jìn)行渲染并顯示給用戶。為了用戶更直觀的查看不同高度的回波,還將15層不同高度的cappi也各自覆蓋在對應(yīng)的高度層上。最后,還要構(gòu)建一個顯示環(huán)境,其中包括光源、畫布、相機等用于容納和顯示回波模型。
3.4用戶操作界面
用戶在前臺頁面中可通過鼠標(biāo)滾輪將回波拉近或拉遠(yuǎn),亦可通過右側(cè)的卷動條放大縮小。在最上方的選擇欄中可選擇過濾不同的回波強度。中間的選擇欄可以選擇瀏覽器緩存的最近三個時次的回波模型。最下方的卷動條則可以將回波模型按不同高度層進(jìn)行切面,此時顯示的切面邊緣是表面模型的切線,內(nèi)側(cè)則是15層CAPPI平面模型中的其中一張。由于采用異步方式傳輸模型文件,用戶在操作和查看回波時不會被打斷。
用戶操作界面如圖2:
4結(jié)論
湛江空管站天氣雷達(dá)體掃描三維顯示系統(tǒng)基于B/S架構(gòu)。數(shù)據(jù)處理上,使用MATLAB平臺對湛江多普勒雷達(dá)的產(chǎn)品進(jìn)行拼接和模型生成;對于網(wǎng)絡(luò)服務(wù)器,使用nodejs作為網(wǎng)頁和模型傳輸服務(wù)器;最后在前端顯示方面采用Web甜技術(shù)的強大插件Three.js進(jìn)行回波模型的顯示。
本系統(tǒng)能簡單高效的生成回波三維模型,并進(jìn)行流暢的展示,讓湛江空管站氣象臺的預(yù)報員有了一個更為直觀、方便查看雷達(dá)回波的手段,預(yù)報員更能掌握當(dāng)前強對流天氣動態(tài)。
目前本系統(tǒng)還有模型生成速度偏慢、前端緩存模型數(shù)量偏少等缺點。后續(xù)將對MATLBA增加并行運算功能,提高模型生成的速度;進(jìn)一步優(yōu)化前臺的模型大小,使前端能緩存更多的模型。