杜景林,朱興宇
(南京信息工程大學(xué) 電子與信息工程學(xué)院,江蘇 南京210044)
關(guān)于WRF模式[1]計算出來的NetCDF數(shù)據(jù)[2]分析處理技術(shù),目前已經(jīng)有NCAR Graphic[3]、Vis5D[4]和GRADS[5]等軟件,但是這些分析處理軟件主要用于科學(xué)研究,甚至需要用戶自行編寫代碼,同時這些軟件與用戶的交互不友好,且無法記錄用戶操作數(shù)據(jù)記錄。另外有一些軟件系統(tǒng)可以讀取WRF模式數(shù)據(jù),例如NETCDF.xlsm[6]可以讀取NetCDF數(shù)據(jù)文件,但主要是以表格形式呈現(xiàn),不利于呈現(xiàn)數(shù)據(jù)動態(tài)特點,用戶無法獲取對數(shù)據(jù)的直觀認(rèn)識。為了提高用戶和平臺的交互性,方便用戶查詢數(shù)據(jù)以及對可視化結(jié)果進行控制,本文著重分析NetCDF數(shù)據(jù)格式以及NetCDF數(shù)據(jù)文件讀取方法,分析OpenGL[7]等繪圖方法的具體應(yīng)用,分別對平臺功能、平臺流程以及平臺框架進行設(shè)計,最后用C++語言進行平臺開發(fā),實現(xiàn)平臺整體功能,并在Windows操作系統(tǒng)下進行平臺運行與測試。
OpenGL (graphics library)圖形系統(tǒng)是圖形硬件的一種軟件接口,主要用于科學(xué)數(shù)據(jù)可視化,實體仿真,三維動畫以及虛擬現(xiàn)實等方面[8],OpenGL 旨在獨立于操作系統(tǒng)和硬件環(huán)境,因此OpenGL 不包含用于執(zhí)行窗口任務(wù)和與用戶交互等函數(shù),只包含對應(yīng)的三維圖形繪制函數(shù),必須通過具體的窗口系統(tǒng)集成OpenGL函數(shù)才可以使用OpenGL繪圖功能。OpenGL 是一個狀態(tài)機,可以設(shè)置各種狀態(tài),然后讓這些狀態(tài)一直生效,直到再次修改它們[9]。OpenGL工作流程如圖1所示[9]。
圖1 OpenGL工作流程
Qt是一個多平臺的C++圖形用戶界面應(yīng)用程序框架,為不同平臺下的圖形界面編程提供統(tǒng)一接口,具有一次編寫,隨處編譯的特點。一次開發(fā)的Qt應(yīng)用程序可以移植到不同的平臺上,只需重新編譯即可運行[10]。Qt提供了OpenGL模塊,方便OpenGL 在多個操作系統(tǒng)中的應(yīng)用。其中OpenGL模塊定義了OpenGL 函數(shù)在Qt中的接口規(guī)范,用戶可以直接調(diào)用該模塊而不需要直接調(diào)用本地API進行三維繪圖。QGLWidget[11]類是用來渲染OpenGL 三維場景的窗口空間,其提供了3 個函數(shù)用于開發(fā),分別是paintGL,resizeGL 和initializeGL 函數(shù),分別用于渲染場景,改變窗口大小以及初始化OpenGL環(huán)境[7]。
NetCDF (network common data format)網(wǎng)絡(luò)通用數(shù)據(jù)格式最早是由美國國家科學(xué)委員會資助的計劃Unidata所發(fā)展而來,旨在提供一種可以通用的數(shù)據(jù)存取方式[12],一種面向數(shù)組型數(shù)據(jù)、適于網(wǎng)絡(luò)共享且跨平臺的數(shù)據(jù)格式描述和編碼標(biāo)準(zhǔn)[13]。NetCDF 文件結(jié)構(gòu)包括文件頭說明信息和數(shù)據(jù)塊區(qū)域,文件頭信息包括整個文件屬性和單個變量屬性等,數(shù)據(jù)塊區(qū)域按照變量進行存儲,一般用于存儲多維數(shù)據(jù),支持與機器無關(guān)的科學(xué)數(shù)據(jù),滿足數(shù)據(jù)共享,每一個NetCDF文件包括單點的觀測值,時間序列,規(guī)則排列的網(wǎng)格,以及其它文件等。NetCDF文件適合存儲氣象數(shù)據(jù),提供了C,F(xiàn)ortran和Java[14]等數(shù)據(jù)存取接口。NetCDF文件具有說明文檔,確保數(shù)據(jù)準(zhǔn)確讀取,存取方式為直接存取所需數(shù)據(jù),極大減少不必要的讀取時間,同時支持跨平臺操作,這樣便于軟件系統(tǒng)跨平臺運行。
該平臺將WRF模式數(shù)據(jù)首次可視化結(jié)果呈現(xiàn)在地球模型上,則需要建立一個3D 地球模型以及顯示地球經(jīng)緯度和相關(guān)的地理高程信息。用戶能夠自主選擇讀取數(shù)據(jù)文件,選擇物理變量以及查詢數(shù)據(jù)等。物理量數(shù)據(jù)需要進行可視化展示,由于數(shù)據(jù)的屬性不同,故需要設(shè)計數(shù)據(jù)傳輸函數(shù)進行數(shù)據(jù)與可視要素之間的轉(zhuǎn)換,同時用戶可以控制數(shù)據(jù)傳輸函數(shù),首次可視化結(jié)果類似于熱度圖形式。用戶能夠與原始數(shù)據(jù)交互,平臺能夠提供用戶鼠標(biāo)和鍵盤與數(shù)據(jù)交互的可視化結(jié)果,二次可視化結(jié)果需要以多種形式展示。平臺能夠展示數(shù)據(jù)隨時間和高度變化而變化的效果,也即時間動畫和高度動畫。平臺需要具有很好的移植性和可擴展性,平臺可以運行在不同的操作系統(tǒng)上。
整體功能設(shè)計如圖2所示。
圖2 平臺功能設(shè)計
數(shù)據(jù)流程主要介紹文件中數(shù)據(jù),內(nèi)存中數(shù)據(jù),緩存區(qū)中數(shù)據(jù)以及顯存中數(shù)據(jù)之間的關(guān)系。以下分別介紹各個流程模塊:
(1)NetCDF數(shù)據(jù)文件到內(nèi)存:由于NetCDF數(shù)據(jù)文件中的數(shù)據(jù)不可能直接進行可視化,因此需要先讀取到內(nèi)存中,然后程序調(diào)用內(nèi)存中的數(shù)據(jù)并對其進行可視化。
(2)內(nèi)存到緩存:內(nèi)存中的數(shù)據(jù)不可以直接進行繪制,需要發(fā)送到幀緩沖區(qū)中。利用OpenGL 的雙緩沖、頂點數(shù)據(jù)緩沖區(qū)以及顏色緩沖區(qū)、顯示列表等技術(shù)對數(shù)據(jù)進行組織和操作,以便于數(shù)據(jù)的重復(fù)顯示和快速顯示。
(3)緩存到顯存:由于顯卡的計算速度遠大于CPU 以及OpenGL使用客戶端到服務(wù)器機制,將數(shù)據(jù)發(fā)送到顯存中可大大加速屏幕的顯示速度以及減少屏幕刷新的延遲時間。
(4)緩存到內(nèi)存:從可視化結(jié)果中獲取的數(shù)據(jù)包括點數(shù)據(jù)和區(qū)域數(shù)據(jù),從緩存中獲取坐標(biāo)信息,然后根據(jù)坐標(biāo)信息從內(nèi)存中查找數(shù)據(jù)。
(5)內(nèi)存到數(shù)據(jù)庫:平臺使用Oracle[15]數(shù)據(jù)庫記錄用戶的操作指令和用戶與數(shù)據(jù)交互的數(shù)據(jù)值,一般記錄少量數(shù)據(jù)點即可,根據(jù)少量數(shù)據(jù)點便可以從NetCDF 數(shù)據(jù)文件讀取所有的數(shù)據(jù)。
平臺整體流程設(shè)計如圖3所示。
圖3 數(shù)據(jù)流程設(shè)計
平臺采用經(jīng)典的三層架構(gòu)構(gòu)建整個軟件平臺,分別是數(shù)據(jù)層,業(yè)務(wù)層和表現(xiàn)層。采用三層架構(gòu)可以將數(shù)據(jù)存取,數(shù)據(jù)處理和數(shù)據(jù)可視化3個功能模塊分離,使程序模塊清晰,有利于組織平臺結(jié)構(gòu),同時有助于平臺的功能擴展和提高代碼的可讀性和理解性。三層架構(gòu)介紹如下:
(1)數(shù)據(jù)層:數(shù)據(jù)層主要處理數(shù)據(jù)文件和物理變量的讀取以及記錄用戶操作記錄和用戶交互數(shù)據(jù),主要利用NetCDF的C 語言接口,但是該接口主要是面向過程的,因此使用面向?qū)ο蟮乃枷敕庋b這些接口函數(shù),寫符合要求的讀取數(shù)據(jù)類。同時,需要利用數(shù)據(jù)庫接口函數(shù)與數(shù)據(jù)庫進行交互,包括讀取數(shù)據(jù)庫數(shù)據(jù)和數(shù)據(jù)寫入數(shù)據(jù)庫。
(2)業(yè)務(wù)層:業(yè)務(wù)層主要響應(yīng)用戶的動作和行為,也即處理用戶的操作指令,起到數(shù)據(jù)層和表現(xiàn)層之間的溝通橋梁作用。數(shù)據(jù)層將數(shù)據(jù)讀取完,業(yè)務(wù)層處理這些數(shù)據(jù),處理完之后發(fā)送到表現(xiàn)層,表現(xiàn)層將這些數(shù)據(jù)可視化。另用戶根據(jù)表現(xiàn)層可視化結(jié)果,與其進行交互,業(yè)務(wù)層處理用戶行為后,數(shù)據(jù)層按照業(yè)務(wù)層的要求讀取數(shù)據(jù)之后,將數(shù)據(jù)傳遞到業(yè)務(wù)層,業(yè)務(wù)層通知表現(xiàn)層進行可視化結(jié)果繪制。該層主要是模塊化操作,用戶選擇不同的物理量,不同的物理量具有不同的數(shù)據(jù)信息,需要根據(jù)不同的物理量設(shè)置不同的數(shù)據(jù)模板和配置模板,每次處理數(shù)據(jù)時,根據(jù)數(shù)據(jù)對應(yīng)的物理量不同,選擇不同的數(shù)據(jù)模板和配置模板。同時,用戶的繪圖指令不同,因此該層需要解析用戶操作行為。
(3)表現(xiàn)層:表現(xiàn)層主要負(fù)責(zé)將業(yè)務(wù)層傳遞過來的數(shù)據(jù)進行可視化,根據(jù)用戶的可視化需求選擇不同的可視化方案對數(shù)據(jù)進行可視化,將可視化結(jié)果直觀地呈現(xiàn)在屏幕中。
圖4為平臺架構(gòu),圖中標(biāo)示了各個層需要實現(xiàn)的功能。
圖4 三層架構(gòu)
Qt中已經(jīng)包含OpenGL模塊,方便在多個操作系統(tǒng)中進行OpenGL 程序開發(fā)。QGLWidget與OpenGL 混合編程,有效降低了在Qt中進行OpenGL開發(fā)的難度。在絕大多數(shù)情況下,QGLWidget可以像QWidget一樣使用,只是使用OpenGL的函數(shù)替代Qpainter進行繪制。QGLWidget提供了3個虛函數(shù)用以重載實現(xiàn)OpenGL 的繪制,使得程序源代碼簡潔且易讀。圖5 給出了QT 程序調(diào)用OpenGL函數(shù)繪圖機制。
圖5 Qt程序調(diào)用OpenGL函數(shù)繪圖機制
數(shù)據(jù)層處理的數(shù)據(jù)主要是存取NetCDF 數(shù)據(jù)文件和存取Oracle數(shù)據(jù)庫中的數(shù)據(jù)。其中NetCDF 數(shù)據(jù)文件為平臺主要處理的數(shù)據(jù)對象,而Oracle數(shù)據(jù)庫中的數(shù)據(jù)主要記錄用戶的行為操作和交互數(shù)據(jù)。處理NetCDF 數(shù)據(jù)主要利用NetCDF提供的C 語言接口,將這些接口函數(shù)封裝成自定義的讀取數(shù)據(jù)的類,方便平臺開發(fā)和擴展。存儲Oracle數(shù)據(jù)庫中的數(shù)據(jù)主要是編譯Oracle提供的OCI接口,然后程序利用OCI接口進行數(shù)據(jù)記錄的存取。
封裝讀取NetCDF 數(shù)據(jù)文件的C 語言接口的類主要有NcFile類,NcDim 類,NcVar類和NcAtt類。NcFile類用于讀取NetCDF文件,其中包括維度信息,變量信息以及文件屬性信息等,NcDim 類用于讀取獲取維度名稱,大小以及判斷是否是無限維等,NcVar類可以返回變量名稱,變量類型,變量對應(yīng)的維度,變量屬性以及如何定點定區(qū)域讀取變量數(shù)據(jù),NcAtt主要用于讀取屬性信息,返回屬性名稱,屬性類型以及屬性值個數(shù)等。
OCI驅(qū)動集成一組應(yīng)用程序開發(fā)接口,在Oracle中提供了一組庫函數(shù),可以使用庫函數(shù)連接數(shù)據(jù)庫,調(diào)用SQL和事務(wù)控制等。由于Qt自帶Sqlite和ODBC 驅(qū)動,但是沒有Oracle OCI驅(qū)動,則需要預(yù)先自行編譯OCI驅(qū)動。
數(shù)據(jù)處理主要用于處理數(shù)據(jù)層傳遞過來的數(shù)據(jù)和響應(yīng)用戶的操作行為。
不同的物理量有不同的數(shù)據(jù)信息,首先對傳遞過來的物理量進行識別,然后按照對應(yīng)的物理量配置方法對數(shù)據(jù)進行操作,然后將數(shù)據(jù)傳遞給傳輸函數(shù),傳輸函數(shù)對數(shù)據(jù)進行轉(zhuǎn)換得到數(shù)據(jù)值對應(yīng)的顏色值信息,主要通過類Var-Setter實現(xiàn),類中包括識別物理量函數(shù),物理量參數(shù)配置以及傳輸函數(shù)等。圖6為主要實現(xiàn)過程。
圖6 數(shù)據(jù)到顏色映射轉(zhuǎn)換實現(xiàn)
用戶在與可視化結(jié)果進行交互的過程中,有鼠標(biāo)和鍵盤等事件,數(shù)據(jù)處理對不同的用戶行為進行不同的解析,將解析后的不同操作通知表現(xiàn)層,表現(xiàn)層根據(jù)相應(yīng)的繪圖函數(shù),繪制出不同的折線圖以及等值線圖等。
用戶鼠標(biāo)交互時,主要圍繞鼠標(biāo)相對于窗口的位置坐標(biāo)展開。由于數(shù)據(jù)存取是按照地球經(jīng)緯度信息以及高度和時間進行存取,而鼠標(biāo)窗口位置坐標(biāo)和地球經(jīng)緯度坐標(biāo)不是同一個坐標(biāo)系,則需要進行坐標(biāo)轉(zhuǎn)換。首先,程序獲取到鼠標(biāo)窗口坐標(biāo),然后鼠標(biāo)窗口坐標(biāo)經(jīng)過一次逆轉(zhuǎn)換,得到該點在三維空間中的位置坐標(biāo),進而根據(jù)得到的三維空間中的位置坐標(biāo),再進行一次逆轉(zhuǎn)換,便可獲得該點相對于地球模型的經(jīng)緯度位置坐標(biāo),數(shù)據(jù)層便可根據(jù)經(jīng)緯度位置信息和用戶設(shè)置的時間高度信息在數(shù)據(jù)文件中或者內(nèi)存中查詢,就可以得到需要的原始數(shù)據(jù)。
OpenGL處理的數(shù)據(jù)的坐標(biāo)信息都是三維空間中的三維坐標(biāo),因此在將數(shù)據(jù)傳遞到OpenGL 繪圖函數(shù)類之前的第一步就是將數(shù)據(jù)的經(jīng)緯度信息轉(zhuǎn)換成三維坐標(biāo)。式 (1)給出經(jīng)緯度和三維坐標(biāo)的轉(zhuǎn)換關(guān)系,圖7給出了經(jīng)緯度到三維坐標(biāo)的轉(zhuǎn)換,圖中三維坐標(biāo)系為OpenGL 中采用的三維坐標(biāo)系,向上為Y 軸正方向,向右為X 軸正方向,屏幕向外為Z軸正方向,a為經(jīng)度偏移
圖7 經(jīng)緯度到三維坐標(biāo)
用戶交互過程中產(chǎn)生的數(shù)據(jù)操作記錄和操作的數(shù)據(jù)會被記錄到數(shù)據(jù)庫中,由于Oracle數(shù)據(jù)庫存儲的數(shù)據(jù)一般為關(guān)系型數(shù)據(jù),因此多維數(shù)據(jù)存儲到數(shù)據(jù)庫之前需要經(jīng)過一個轉(zhuǎn)換。將多維數(shù)據(jù)按照時間高度經(jīng)緯度信息轉(zhuǎn)換為一個唯一的ID 值,見式 (2),按照此ID 值將對應(yīng)的數(shù)據(jù)存儲到數(shù)據(jù)庫中。從數(shù)據(jù)庫中讀取數(shù)據(jù)時,依然需要按照式(2)進行逆轉(zhuǎn)換得到時間高度和經(jīng)緯度信息
基于Qt和OpenGL技術(shù)的融合,極大地方便三維可視化的實現(xiàn),但是Qt中提供的OpenGL繪圖功能有限,僅僅用于普通3D 圖形繪制,平臺中使用OpenGL 的顯示列表,幀緩沖區(qū)等技術(shù),因此需要使用OpenGL 自身的庫函數(shù),程序中自定義類用于封裝OpenGL 本地函數(shù)庫,方便程序開發(fā)和功能拓展。程序?qū)⒂糜谌S圖形繪圖和二維圖形繪圖的功能函數(shù)類進行封裝,形成一個多組件融合的交互式可視化圖形庫。在需要繪制可視化圖形時,直接響應(yīng)用戶指令,程序調(diào)用圖形庫的類函數(shù)即可實現(xiàn)圖形繪制。
數(shù)據(jù)可視化主要實現(xiàn)OpenGL 繪制圖形函數(shù)和QCustomPlot[16]繪制折線圖直方圖等以及調(diào)用NCL 腳本語言[17]進行等值線等繪圖操作。分別有初始化場景類,可視化類和用戶交互類。初始化場景類主要包括OpenGL 的初始化環(huán)境配置類。可視化類包括顯示時間類,地球模型類EarthModel,數(shù)據(jù)貼圖類DataTex,圖表繪制類QCustom-Plot以及等值線圖類VarNCL 和圖片保存類。用戶交互類分別有場景旋轉(zhuǎn)類MoRotate,縮小和放大類MoResize,以及鼠標(biāo)拾取類MoMouse。以下將主要的類進行介紹:
圖8 轉(zhuǎn)換投影算法
OpenGL的初始化環(huán)境配置類中封裝清除緩沖區(qū)函數(shù),設(shè)置投影模式函數(shù),計算模型視圖矩陣 (modeMatrix)、投影矩陣 (projMatrix)和視點 (viewprot)矩陣函數(shù),矩陣和矢量運算和平面法向量計算函數(shù)等。
地球模型類EarthModel中實現(xiàn)地球模型繪制,以及地球紋理貼圖和地理高程信息顯示等功能。
數(shù)據(jù)貼圖類DataTex實現(xiàn)經(jīng)緯度準(zhǔn)確定位,數(shù)據(jù)顏色值繪制等功能。
QCustomPlot類為用于繪圖的Qt C++部件,獨立的類庫,用于繪制曲線和圖表等,同時QCustomPlot類提供圖片保存函數(shù),程序中的圖片保存類需封裝QCustomPlot提供的圖片保存函數(shù)以及保存OpenGL繪制結(jié)果函數(shù)類。
等值線圖類VarNCL主要封裝NCL腳本語言函數(shù)和獲取參數(shù)函數(shù)和調(diào)用NCL工作平臺函數(shù)。NCL 主要在Linux操作系統(tǒng)環(huán)境中采用工作站方式工作,因此在Windows中需要模擬Linux環(huán)境。同時NCL的工作環(huán)境與程序開發(fā)環(huán)境獨立,因此在程序和NCL工作環(huán)境之間需要連接,以便于在程序中啟動NCL運行環(huán)境以及調(diào)用NCL繪圖函數(shù)。
用戶交互類中主要包括用戶鼠標(biāo)拖動旋轉(zhuǎn)場景和縮小放大可視化結(jié)果類,鼠標(biāo)獲取區(qū)域或單點屏幕坐標(biāo)類,所有數(shù)據(jù)二次可視化都依靠鼠標(biāo)拾取來實現(xiàn)。其中鼠標(biāo)拖動較難實現(xiàn),鼠標(biāo)直接操作二維界面,而場景是三維圖形,因此本文采用以下轉(zhuǎn)換投影算法,具體過程如圖8所示。
屏幕中對應(yīng)的數(shù)據(jù)點坐標(biāo)都是二維的,然而OpenGL處理的數(shù)據(jù)是三維坐標(biāo),因此在數(shù)據(jù)對應(yīng)到屏幕的可視化結(jié)果過程中需要進行坐標(biāo)轉(zhuǎn)換。OpenGL 物體三維坐標(biāo)到屏幕坐標(biāo)轉(zhuǎn)換過程如圖9所示。
本平臺采用Visual Studio 2010集成開發(fā)軟件,同時采用Qt 4.8,結(jié)合Oracle 10g數(shù)據(jù)庫技術(shù),NetCDF文件讀取技術(shù),NCL腳本語言和QCustomPlot以及OpenGL 三維圖技術(shù)等。系統(tǒng)的測試運行環(huán)境為Windows 7 操作系統(tǒng),圖10和圖11是該系統(tǒng)運行的部分效果圖,從總體測試效果看,平臺運行穩(wěn)定良好。
圖9 OpenGL物體坐標(biāo)到屏幕坐標(biāo)轉(zhuǎn)換過程
圖10 鼠標(biāo)交互某一時間和高度層的經(jīng)緯度區(qū)域數(shù)據(jù)顯示
圖11 某點數(shù)據(jù)變化趨勢交互顯示
用戶選擇經(jīng)緯度范圍內(nèi)的區(qū)域信息可視化結(jié)果:用戶點擊鼠標(biāo)右鍵保持不放,拖動鼠標(biāo)移動,移動至某位置,鼠標(biāo)右鍵放開,得到起始和結(jié)束鼠標(biāo)窗口位置坐標(biāo),通過兩次坐標(biāo)轉(zhuǎn)換關(guān)系函數(shù),得到經(jīng)緯度信息,根據(jù)得到的經(jīng)緯信息和用戶選擇的高度和時間信息,將指令發(fā)送到數(shù)據(jù)層,數(shù)據(jù)層直接按照經(jīng)緯度和高度時間信息讀取數(shù)據(jù),將讀取出來的數(shù)據(jù)傳遞到業(yè)務(wù)層,業(yè)務(wù)層按照用戶的需求,對數(shù)據(jù)進行修剪和插值操作等,將經(jīng)過處理后的數(shù)據(jù)傳遞到表現(xiàn)層,表現(xiàn)層中NCL工作站將繪制業(yè)務(wù)層傳遞過來的數(shù)據(jù)。
用戶與第一次可視化結(jié)果,也即地球模型中顯示出來的數(shù)據(jù)進行交互,用戶可以選擇同一時間、同一高度和不同經(jīng)緯度信息數(shù)據(jù),同一時間、同一經(jīng)緯度和不同高度數(shù)據(jù),同一高度、同一經(jīng)緯度和不同時間的數(shù)據(jù),選擇某一操作后,業(yè)務(wù)層按照要求在內(nèi)存中選擇數(shù)據(jù)傳遞給表現(xiàn)層,表現(xiàn)層調(diào)用QcustomPlot類中函數(shù)進行折線圖的繪制。
圍繞WRF 模式運行產(chǎn)生的中尺度氣象數(shù)據(jù),利用OpenGL強大的3D 繪圖功能以及現(xiàn)有的多形式的第三方繪圖插件,將這些繪圖函數(shù)封裝成自定義的類,將Qt作為平臺的總體設(shè)計框架,程序模塊化方便了平臺的擴展。由于采用的現(xiàn)有技術(shù)都具有跨平臺的特性,因此整個平臺具有良好的移植性,可運行在不同的操作系統(tǒng)上,只需要重新編譯即可。本平臺方便氣象專業(yè)人士和研究人員對中尺度模式氣象數(shù)據(jù)的動態(tài)變化有直觀的把握,以便做出相應(yīng)決策。
[1]WANG Xiaojun,MA Hao.Progress of application of the weather research and forecast(WRF)model in China [J].Advances in Earth Science,2011,26 (11):1191-1199 (in Chinese). [王曉君,馬浩.新一代中尺度預(yù)報模式(WRF)國內(nèi)應(yīng)用進展 [J].地球科學(xué)進展,2011,26 (11):1191-1199.]
[2]SHAO Baomin,CHU Weixian,QI Suiping.Design of objectoriented NetCDF reading desktop software [J].Shandong Science,2012,25 (6):69-73 (in Chinese). [邵寶民,初偉先,漆隨平.面向?qū)ο蟮腘etCDF文件桌面化讀取軟件的設(shè)計[J].山東科學(xué),2012,25 (6):69-73.]
[3]HUA Wenyuan,WANG Jiarun,KANG Liang,et al.Design and Implementation of 5D meteor visualization based on OSG[J].Computer Engineering and Design,2009,30 (5):1282-1284 (in Chinese).[華文元,王家潤,康亮,等.基于OSG五維氣象可視化軟件的設(shè)計及實現(xiàn) [J].計算機工程與設(shè)計,2009,30 (5):1282-1284.]
[4]TU Nini,CHEN Jing,XIA Rudi.The use points of a four-dimension graphics software Vis5D [J].Sichuan Meteorology,2007,27 (99):39-41 (in Chinese). [屠妮妮,陳靜,夏茹娣.一種四維繪圖軟件Vis5D 使用要點簡述 [J].四川氣象,2007,27 (99):39-41.]
[5]ZHANG Li,SHENG Shuanghe,SUN Xiangming,et al.Processing of non-corresponding grid data from NCEP by using GRADS [J].Journal of Meteorological Research and Application,2009,30 (3):39-44 (in Chinese). [張麗,申雙和,孫向明,等.用GRADS處理NCEP資料中的非對應(yīng)格點數(shù)據(jù)[J].氣象研究與應(yīng)用,2009,30 (3):39-44.]
[6]LongShaoAn,Reading nc file[DB/OL].[2014-07-23].http://blog.163.com/jey_df/blog/static/18255016120121029471299/(in Chinese).[LongShaoAn,關(guān)于nc文件的讀?。跠B/OL].[2014-07-23].http://blog.163.com/jey _df/blog/static/1825501612012 1029471299/.]
[7]LUO Junsong,DENG Fei,LU Hanyu,et al.Research of 3D visualization technology based on QT [J].Computer Measurement &Control,2013,21 (3):797-799 (in Chinese). [羅俊松,鄧飛,盧涵宇,等.基于Qt的三維可視化技術(shù)研究[J].計算機測量與控制,2013,21 (3):797-799.]
[8]MA Chunyan,CHAI Huabin,LIU Changhua.3Dvisualization expression of the point cloud based on OpenGL [J].Journal of Henan Polytechnic University(Natural Science),2009,28 (3):299-302 (in Chinese). [馬春艷,柴華彬,劉昌華.基于OpenGL的點云三維可視化表達 [J].河南理工大學(xué)學(xué)報(自然科學(xué)版),2009,28 (3):299-302.]
[9]Dave Shreiner,The Khronos OpenGL ARB Working Group.OpenGL programming guide [M].LI Jun,XU Bo,transl.7th ed.Beijing:Machinery Industry Press,2010 (in Chinese). [Dave Shreiner,The Khronos OpenGL ARB Working Group.OpenGL編程指南 [M].李軍,徐波,譯.7 版.北京:機械工業(yè)出版社,2010.]
[10]CAI Zhiming,LU Chuanfu,LI Lixia,et al.Proficient in Qt4programming [M].Beijing:Electronic Industry Press,2008 (in Chinese). [蔡志明,盧傳富,李立夏,等.精通Qt4編程 [M].北京:電子工業(yè)出版社,2008.]
[11]GUO Tao,LIU Mingyang,BIAN Zhibin.Research and implementation on visualization of surfer data based on Qt and OpenGl[J].Journal of Yangtze University (Nat Sci Edit),2010,7 (3):287-289 (in Chinese).[郭韜,劉明洋,卞志彬.基于Qt和OpenGL的Surfer數(shù)據(jù)可視化研究 [J].長江大學(xué)學(xué)報 (自然科學(xué)版),2010,7 (3):287-289.]
[12]ZHANG Lin,GAO Yuchun,YANG Jinhong,et al.NetCDF data uploading and product display of phased-array weather radar based on VC++platform [J].Meteorological Science and Techinology,2010,38 (2):230-234 (in Chinese).[張林,高玉春,楊金紅,等.基于VC++平臺的相控陣天氣雷達NetCDF數(shù)據(jù)讀取與產(chǎn)品顯示 [J].氣象科技,2010,38 (2):230-234.]
[13] WANG Xianghong,LIU Jiping,XU Shenghua,et al.Visualization of marine environment data based on NetCDF data model[J].Science of Surveying and Mapping,2013,38 (2):59-61 (in Chinese). [王想紅,劉紀(jì)平,徐勝華,等.基于NetCDF數(shù)據(jù)模型的海洋環(huán)境數(shù)據(jù)三維可視化研究[J].測繪科學(xué),2013,38 (2):59-61.]
[14]Chic O,del Rio E,Garcia-Ladona E.IVADO:An oceanographic data analysis and visualization tool based on ION/IDL and Java using netCDF interface [C]//MTS/IEEE Conference and Exhibition,2001.
[15]ZHANG Hui,ZHAO Yuliang,XU Jiang,et al.Query optimization research on mass of data based on oracle database[J].Computer Technology and Development,2012,22(2):165-167 (in Chinese).[張輝,趙郁亮,徐江,等.基于Oracle數(shù)據(jù)庫海量數(shù)據(jù)的查詢優(yōu)化研究 [J].計算機技術(shù)與發(fā)展,2012,22 (2):165-167.]
[16]Emanuel Eichhammer,QcustomPlot[DB/OL].[2014-07-22].http://www.qcustomplot.com/inde x.com/index.php/introduction.
[17]WANG Jizhu,WANG Yongqing,LI Chunhu.NCL application of graphical weather data [J].Shandong Meteorology,2007,27 (109):33-36 (in Chinese). [王繼竹,王詠青,李春虎.NCL在氣象數(shù)據(jù)圖形化中的應(yīng)用 [J].山東氣象,2007,27 (109):33-36.]