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