黎江峰


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