鄭艷萍
摘要:相對(duì)于GrADS等氣象繪圖軟件,NCAR Command Language(簡(jiǎn)稱NCL)在數(shù)據(jù)處理及可視化方面優(yōu)勢(shì)明顯,故其用戶群數(shù)量不斷增加。為了更好地利用NCL工具為數(shù)值預(yù)報(bào)產(chǎn)品的解釋?xiě)?yīng)用服務(wù),為天氣預(yù)報(bào)和研究提供更實(shí)用的圖形產(chǎn)品服務(wù),從NCL的介紹、下載安裝、數(shù)據(jù)分析處理及可視化四個(gè)方面介紹了NCL在氣象業(yè)務(wù)中應(yīng)用。
關(guān)鍵詞:NCL;氣象應(yīng)用;數(shù)據(jù)處理;圖形展示;數(shù)值預(yù)報(bào)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)10-0093-03
NCAR Command Language(簡(jiǎn)稱NCL)是美國(guó)國(guó)家大氣研究中心專為科學(xué)數(shù)據(jù)處理及可視化而設(shè)計(jì)的高級(jí)語(yǔ)言[1-2],尤其是在氣象數(shù)據(jù)分析處理方面優(yōu)勢(shì)明顯,故其用戶數(shù)量也不斷增加。相對(duì)于GrADS等繪圖軟件,NCL的優(yōu)勢(shì)不僅表現(xiàn)在繪圖更加細(xì)膩美觀,更表現(xiàn)在它強(qiáng)大的數(shù)據(jù)處理能力,它包含了氣象數(shù)據(jù)常用的分析方法,如樣條插值、經(jīng)驗(yàn)正交函數(shù)分解(EOF)、波譜分析等,此外,還可與Fortran、Shell進(jìn)行混合編程,使得程序更加簡(jiǎn)潔高效,使用更加方便。這些優(yōu)勢(shì)使得NCL成為氣象數(shù)據(jù)分析展示軟件的后起之秀[3]。
數(shù)值預(yù)報(bào)產(chǎn)品是天氣預(yù)報(bào)的重要參考依據(jù)之一[4-5],對(duì)數(shù)值預(yù)報(bào)產(chǎn)品的業(yè)務(wù)應(yīng)用需求也越來(lái)越高。數(shù)值預(yù)報(bào)產(chǎn)品的數(shù)據(jù)分析及圖形化就必不可少,針對(duì)這一迫切需求,本文利用NCL軟件進(jìn)行數(shù)值預(yù)報(bào)產(chǎn)品的診斷分析及圖形化。主要介紹了NCL的安裝、下載、編程思路,及在氣象業(yè)務(wù)應(yīng)用中的兩部分關(guān)鍵技術(shù):數(shù)據(jù)處理功能及可視化功能。
1 NCL軟件的下載、安裝及運(yùn)行
NCL可以在AIX、Linux、Mac OS X 等系統(tǒng)上安裝運(yùn)行,對(duì)于Windows用戶,可安裝Cygwin/X軟件后在這個(gè)軟件環(huán)境中運(yùn)行。NCL的官方下載地址:http://www.earthsystemgrid.org,注冊(cè)之后,根據(jù)用戶自身的系統(tǒng)選擇相應(yīng)的NCL版本。NCL在Unix系統(tǒng)上的安裝不需要編譯,只需要三個(gè)步驟:
1) 解壓安裝包
打開(kāi)終端,將安裝包解壓到/home/yourname/ncl目錄下:
# cd /home/yourname/ncl
# tar–xvfncl_ncarg-6.1.2.Linux_Debian6.0_x86_64_nodap_gcc445.tar.gz
2) 設(shè)置環(huán)境變量
用“echo $SHELL”返回當(dāng)前系統(tǒng)所用的shell,若為C-shell(csh)則設(shè)置環(huán)境變量:
setenv NCARG_ROOT /home/yourname/ncl
setenv PATH $PATH:$NCARG_ROOT/bin
若為bash或ksh,則添加環(huán)境變量:
export NCARG_ROOT=/home/yourname/ncl
export PATH=$PATH:$NCARG_ROOT/bin
保存該文件后,運(yùn)行source命令使環(huán)境變量生效。
3) 檢驗(yàn)安裝是否成功
安裝好后,運(yùn)行NCL自帶的例子,檢驗(yàn)下NCL是否已正確安裝:
#cd /usr/ncl/lib/ncarg/nclex/xyplot
#ncl xy04n.ncl
若出現(xiàn)一組平面曲線圖則說(shuō)明測(cè)試通過(guò)。
更簡(jiǎn)便的測(cè)試可利用NCL提供了一個(gè)腳本程序“ng4ex”,運(yùn)行一系列的范例,# ng4ex gsun01n,若彈出一個(gè)圖形窗口顯示XY坐標(biāo)圖,則說(shuō)明安裝成功。
NCL可直接在終端用命令行進(jìn)行簡(jiǎn)單的測(cè)試,復(fù)雜的數(shù)據(jù)處理和圖形化則用批處理腳本來(lái)實(shí)現(xiàn)。NCL腳本的編程思路大致分為步:1)加載NCARG庫(kù)函數(shù)及共享對(duì)象,提供繪圖及運(yùn)算接口。2)讀入需要處理的數(shù)據(jù)。3)打開(kāi)一個(gè)繪圖窗口。4)設(shè)置窗口圖形的屬性,包括繪圖類型、線條顏色、底圖等一系列屬性。5)數(shù)據(jù)可視化。在此不作詳細(xì)介紹。
2 NCL數(shù)據(jù)處理功能的業(yè)務(wù)應(yīng)用
數(shù)據(jù)的加工處理是數(shù)值預(yù)報(bào)產(chǎn)品的解釋?xiě)?yīng)用的重要部分。NCL不僅支持多種數(shù)據(jù)數(shù)據(jù)格式的基本數(shù)學(xué)運(yùn)算,如求平均、求最值、三角函數(shù)運(yùn)算等,還具有完整的氣象分析算法模塊,并且具有Fortran外部代碼的接口,支持用戶自行編寫(xiě)的算法接入。這三大塊構(gòu)成了NCL數(shù)據(jù)處理的強(qiáng)大功能,為數(shù)值預(yù)報(bào)產(chǎn)品的診斷分析提供有效的支持。與傳統(tǒng)的圖形化工具相比,NCL在數(shù)據(jù)方面更為簡(jiǎn)潔高效,靈活多變。
2.1 NCL內(nèi)置函數(shù)處理數(shù)據(jù)的方法
NCL支持多種數(shù)據(jù)格式的讀寫(xiě)操作:NetCDF3/4,HDF4,HDF4-EOS,HDF5,HDF5-EOS,GRIB-1,GRIB-2,shapefile,ASCII和CCM History Tape format 格式,滿足了不同用戶對(duì)數(shù)據(jù)格式讀寫(xiě)的需求。目前,數(shù)值預(yù)報(bào)產(chǎn)品種類豐富,不同的數(shù)值預(yù)報(bào)有各自不同的數(shù)據(jù)存儲(chǔ)格式,為了能夠?qū)v史及實(shí)時(shí)資料完整、有序的存儲(chǔ)并提供業(yè)務(wù)和研究應(yīng)用,我省統(tǒng)一采用標(biāo)準(zhǔn)化的數(shù)據(jù)格式NetCDF存儲(chǔ)數(shù)值預(yù)報(bào)數(shù)據(jù)[6]。
NCL內(nèi)部提供了不同的數(shù)據(jù)處理方法:數(shù)組運(yùn)算、基本數(shù)學(xué)運(yùn)算和完整的氣象分析算法模塊[2]。其中氣象分析算法是NCL數(shù)據(jù)處理的一大特色,它包含了經(jīng)驗(yàn)正交函數(shù)展開(kāi)法(EOF),濾波(Filters),小波分析(Wavelets)等常用的氣象分析方法。此外,由于NCL是開(kāi)源軟件,用戶也可使用NCL語(yǔ)言編寫(xiě)算法,嵌入軟件使用。下面以站點(diǎn)到格點(diǎn)的插值為例介紹NCL的數(shù)據(jù)處理流程,原始數(shù)據(jù)為廣東省自動(dòng)站溫度temp.csv,ASCII碼格式,數(shù)據(jù)如下圖所示:
1)讀取數(shù)據(jù)
讀入數(shù)據(jù)之后,將不同的要素分開(kāi)并轉(zhuǎn)換成需要的數(shù)據(jù)類型(部分代碼):
fin = asciiread(“./temp.csv",nstn,"string")
delim = ","
sname = str_get_cols(str_get_field(fin,1,delim),1,5)
slon = stringtofloat(str_get_cols(str_get_field(stn,2,delim),1,8))
slat =......
2)插值計(jì)算
首先根據(jù)原始數(shù)據(jù)的密度,定義插值網(wǎng)格的分辨率為0.001°x0.001°:
resolution=0.001
nx = floattoint((max(slon)-min(slon))/resolution)
ny = floattoint((max(slat)-min(slat))/resolution)
glon = fspan(min(slon),(min(slon)+(nx+1)*resolution),nx)
glat = fspan(min(slat),(min(slat)+(ny+1)*resolution),ny)
定義好目標(biāo)網(wǎng)格后,調(diào)用NCL內(nèi)部插值函數(shù)進(jìn)行插值計(jì)算:
gval = cssgrid(slat,slon,sval,glat,glon)
3)結(jié)果輸出為NetCDF格式
首先打開(kāi)一個(gè)輸出文件:
fout= addfile ("./temp_out.nc", "c")
聲明輸出文件的格式定義模式:
setfileoption("nc","Format","NetCDF4Classic")
然后定義輸出文件的全局屬性、坐標(biāo)范圍、變量維數(shù)等信息,最后輸出插值結(jié)果:
fout->lat= (/glat/)
fout->lon = (/glon/)
fout->temp= (/gval/)
詳細(xì)的NetCDF文件定義過(guò)程請(qǐng)參考NCL官網(wǎng),在此不做詳述。
2.2外部代碼接口處理數(shù)據(jù)的方法
除了運(yùn)用內(nèi)部算法進(jìn)行數(shù)據(jù)處理外,NCL還提供了Fortran外部代碼接口,用戶可通過(guò)這個(gè)接口直接在NCL腳本內(nèi)部調(diào)用Fortran代碼。步驟也很簡(jiǎn)單,例如有代碼thse.f包含計(jì)算假相當(dāng)位溫的算法:CAL_THSE(PLEV,STC,STD,NLEV,NSTN,THSE)
首先用NCL的WRAPIT將Fortran程序編譯成共享對(duì)象:
#WRAPIT thse.f
生成共享對(duì)象thse.so,然后在NCL腳本內(nèi)部加載該共享:
external FORTRAN “../thse.so”
調(diào)用thse.so計(jì)算:
FORTRAN::CAL_THSE(plev,stc,std,nlev,nstn,thse)
至此調(diào)用外部代碼完成計(jì)算。需要注意的是NCL與Fortran之間的參數(shù)傳遞,由于NCL與Fortran的數(shù)組排列方式與數(shù)據(jù)類型有差異,數(shù)組定義時(shí)要特別小心。兩者之間的數(shù)組對(duì)應(yīng)關(guān)系如下圖所示:
3 NCL可視化功能的業(yè)務(wù)應(yīng)用
傳統(tǒng)的氣象分析中,一般先用Fortran等工具先進(jìn)行數(shù)據(jù)處理后,再輸入繪圖軟件顯示。NCL將數(shù)據(jù)處理與可視化相結(jié)合,彌補(bǔ)了傳統(tǒng)處理方式要分兩步走的不足,為數(shù)值預(yù)報(bào)的分析展示帶來(lái)了極大的便利。NCL的可視化功能同樣不遜色于數(shù)據(jù)處理功能,為數(shù)值預(yù)報(bào)產(chǎn)品的展示提供有力支持。
3.1 NCL可繪制的圖形類型
NCL支持多種圖形格式:。且擁有超過(guò)40個(gè)的繪圖模板,這些模板包括XY坐標(biāo)圖、等值線圖、矢量圖、流線圖等,豐富的繪圖模板滿足了氣象數(shù)據(jù)多樣化的圖形展示方式,為氣象工作者提供更多選擇。圖形類型分類如下表所示:
同時(shí),NCL還提供了豐富的色彩庫(kù)[8],定義了上百種顏色搭配表供用戶選擇,顏色搭配表種類豐富、色彩搭配科學(xué)美觀,為氣象數(shù)據(jù)的可視化帶來(lái)美感。我省利用NCL豐富的繪圖模板及色彩庫(kù),得到了一系列美觀實(shí)用的數(shù)值預(yù)報(bào)產(chǎn)品,如下圖所示。
3.2 NCL與ImageMagick的聯(lián)合應(yīng)用
除了自身豐富的可視化處理,NCL還可與ImageMagick(簡(jiǎn)稱IM)圖像處理軟件聯(lián)合使用,極大得提高了圖形處理能力。IM是強(qiáng)大的圖片處理工具,可對(duì)圖片進(jìn)行縮放、剪切、疊加等[7]。NCL可有效利用IM的功能,實(shí)現(xiàn)圖片的再加工:圖片疊加、做成動(dòng)畫(huà)等。本文利用IM的疊加能力對(duì)氣象場(chǎng)met.png和地圖map.png進(jìn)行疊加,代碼如下:
system("composite -compose Multiply -gravity center met.png map.png met_map.png")
這樣避免了批量畫(huà)圖時(shí)重復(fù)畫(huà)地圖消耗過(guò)多時(shí)間,不僅可以大幅提高出圖效率,又方便用戶根據(jù)需要重新設(shè)計(jì)地圖,比如加入地形高度信息等。
如果需要生動(dòng)地表現(xiàn)氣象要素的變化過(guò)程,可按時(shí)間順序?qū)庀笠貓D做成動(dòng)畫(huà),其中delay為每幅圖的時(shí)間間隔,pngname為一組圖片,animation為輸出的動(dòng)畫(huà),代碼如下:
system("convert -delay 100 pngname.ps animation.gif")
4 結(jié)論
NCL是集數(shù)據(jù)分析處理和可視化于一身的高級(jí)語(yǔ)言,利用其基本數(shù)學(xué)運(yùn)算、氣象分析算法模塊及其Fortran接口,實(shí)現(xiàn)了對(duì)數(shù)值預(yù)報(bào)產(chǎn)品的分析加工,計(jì)算診斷分析物理量,進(jìn)行插值計(jì)算等,進(jìn)一步挖掘了數(shù)值預(yù)報(bào)產(chǎn)品的價(jià)值;利用其豐富的繪圖模板、色彩庫(kù)及ImageMagick的聯(lián)合使用,使可視化方式更加靈活多變,繪圖速度更加快捷。目前,基于NCL平臺(tái)的數(shù)值預(yù)報(bào)產(chǎn)品分析及可視化系統(tǒng)已業(yè)務(wù)化運(yùn)行,每日為預(yù)報(bào)員提供上萬(wàn)張數(shù)值預(yù)報(bào)產(chǎn)品再分析圖,為預(yù)報(bào)預(yù)測(cè)提供有力的保障。
參考文獻(xiàn):
[1] National Center for Atmospheric Reseach.NCAR Command Language Mini Graphics Manual[Z].Document Version 1.3,NCL 6.0.0,march ,2011.
[2] National Center for Atmospheric Research.NCAR Command Language Mini-Language Reference Manual[Z].Document Version 1.1.10,NCL 6.1.2,September,2014.
[3] 王繼竹,王詠青,李春虎.NCL在氣象數(shù)據(jù)圖形化中的應(yīng)用[J].山東氣象,2007,27(109):33-36.
[4] 林良勛, 馮業(yè)榮, 黃忠, 等.廣東省天氣預(yù)報(bào)技術(shù)手冊(cè)[ M]. 北京:氣象出版社, 2006.
[5] 溫之平,吳乃庚,馮業(yè)榮,等.定量診斷華南春旱的形成機(jī)理[J].大氣科學(xué), 2007,31(6):1223-1236.
[6] 李永生,劉修偉,楊玉紅.氣象大數(shù)據(jù)跨平臺(tái)分析與應(yīng)用技術(shù)研究[J].電腦知識(shí)與技術(shù),2013,9(31):6943-6947.
[7]ImageMagick:Convert,Edit,Or Compose Bitmap Images[EB/OL]. http://www.imagemagick.org/.
[8]Color Table Gallery[EB/OL].http://www.ncl.ucar.edu/Document/Graphics/color_table_gallery.shtml.