趙奎鋒
(1.陜西省氣象局秦嶺和黃土高原生態環境氣象重點實驗室,西安 710016;2.陜西省氣象科學研究所,西安 710016)
氣象實況觀測數據是站點離散數據,在氣象預報服務和科研工作中,常常用到科學繪圖技術對這些離散數據進行分析,勾畫氣象要素面上的分布情況,以便直觀地呈現其分布特點。實際業務中,經常使用的科學繪圖軟件有Golden Surfer、NCL(the NCAR command language)、GrADS(grid analysis and display system,格點分析和顯示系統)等[1-4],其中GrADS 是當今氣象學科中廣泛使用的數據處理和顯示軟件系統,可讀取格點或站點氣象資料(二進制或GRIB 碼格式),并進行加工處理。可實現等值線、流線、填圖、地圖、曲線等多種圖形顯示。隨著網絡技術的發展,基于WEB技術的在線資料共享方式受到歡迎,但是多數共享采用的是資料后臺處理成圖表后的靜態共享,較少采用網絡在線交互出圖。OpenGrADS是基于GrADS的擴展,提供CGI(common gate interface,公共網關接口)接口,支持WEB環境下的交互出圖。本文介紹結合Python軟件利用OpenGrADS進行觀測數據在線交互繪圖的技術及應用。
Python是一種解釋腳本語言,類似 VBScript、JavaScript、Perl等腳本語言。如圖1所示,Python的CGI編程,是利用WEB服務器和一個Python自定義的腳本之間交換信息。通過設立的HTTP服務器,在某個目錄中的文件被請求作為一個程序執行,并將結果發送到瀏覽器來顯示。這個函數被調用的通用網關接口或CGI程序稱為CGI腳本[5-6]。

圖1 Python CGI架構圖
IIS(Internet information services,互聯網信息服務)常常用來搭建WEB運行環境。對于一些簡單的通用網關接口腳本,IIS使用windows scripting host來解析VBScript 和 JavaScript,而對于Python的CGI腳本語言,IIS使用配置的Python腳本解釋程序來解析,其配置需要在IIS管理器中將擴展名為“.py”的程序映射到Python安裝目錄的執行程序,并賦予“全部動作”執行的權限即可。通過配置,給IIS運行python CGI程序搭建了運行環境。
OpenGrADS是一個致力于改進GrADS的界面和擴展性的項目。它通過改進用戶定義命令和自定義功能,允許用戶添加自己的動態鏈接插件,引入了PHP、Perl和Python等腳本語言,使其可以基于GrADS發展更多的擴展,并且十分方便地與WEB結合,應用于網絡交互界面[7]。
從1.9 rc1版本開始,OpenGrADS增加了一項功能,即實現了對GIS的Shape地圖文件的支持,通過調用Shape格式的地理信息數據庫的數據非常簡便地繪制出地圖底圖[8]。
服務器端存儲了自動氣象站、區域站的觀測數據。由于設備故障或其他因素,可能存在一些奇異數據,尤其以區域站的奇異數據最多;因此,在從CIMISS(China intergrated meteorological information service system,全國綜合氣象信息共享系統)中通過MUSIC(meteorological unified service interface community,氣象數據統一服務接口)提取站點離散數據后,需加以修正之后才可以用來繪圖。
這里用到Python CGI程序處理數據。如圖2左側所示,通過表單用戶選取起止時間,服務器端利用CGI程序從CIMISS共享系統中提取該時段的自動站、區域站數據,在線交互修改、消除奇異值后,提交給數據處理分析程序,將其加工成GrADS所支持的格式。上述經修正的數據為文本格式,要通過轉換格式處理為GrADS所支持二進制數據[9]。

圖2 網絡交互GrADS繪圖流程
如圖2所示,在Python CGI程序中導入OpenGrADS模塊,代碼如下:
import grads
from grads.gacore import GaCore
導入OpenGrADS模塊后,添加如下代碼以打開ctl描述文件:
ga('openaws_mask.ctl', Quiet=True, Block=True)
ga('openaws.ctl')
利用“ga”命令可以運行桌面版GrADS的gs腳本,從而設置x坐標軸、y坐標軸、色斑圖顏色、等值線間隔、色標標注方式、地圖底圖等[10]。
值得一提的是,自從GrADS2.0.a8版本開始,GrADS引入了對SHP地圖的支持,可以非常方便地自定義繪制地域范圍,通過地理信息系統定義好地圖之后,在繪圖時調用即可,代碼如下:
ga('set mpdraw off'') #關閉默認地圖
ga('draw shp shaanxi)#繪制以shaanxi.shp命名的地圖
還可以根據需要將河流的SHP地圖文件疊加繪制到圖形中。繪制完成后,將圖形存于WEB服務器的目錄下,并在瀏覽器中顯示,代碼如下:
ga('printimaws.png x1000 y773 white')
在業務應用中,通過動態WEB頁面的交互,可以提供多個選項以便繪制出符合業務服務需求的標準圖形。如:起止時間段、數據類型(國家自動氣象站、區域氣象站或者兩者混合輸出)、色標類型(是否采用中國氣象局規定的色標)、繪制地圖的區域(全國或某省某市范圍)、插值的分辨率、疊加的地圖(地質災害易發區、河流、交通信息等)。這些選擇通過WEB以表單形式選擇。由于GrADS對中文的支持不足,可以通過Python豐富的圖形處理插件對圖形進行后期處理,如標注圖形名稱、時間區間、數量單位等信息,減少了業務人員后期處理的工作量。
(1)交互環境下的快速實時繪圖是氣象業務服務不可或缺的技術,在交互環境下選擇繪圖起止時間段、行政區域、分辨率參數,疊加河流和地質災害易發區等地理信息,業務人員還可以對奇異數據進行訂正,能繪制出反映天氣情況的真實圖形。
(2)利用Python語言的擴展性和豐富的插件,便捷地部署CGI交互環境,同時由于OpenGrADS具有Python擴展庫,使得GrADS能部署于服務器端,從而能提供快速繪圖的網絡環境。
(3)GrADS2.0.a8版本開始引入了對SHP地圖的支持,極大地方便了自定義行政區域范圍的繪圖,采用中國氣象局規定的色標繪制符合標準的圖形,通過Python豐富的圖形處理插件對圖形進行后期處理,減少了業務人員后期處理的工作量。