房淑波,張建磊,翟向東,馮 琦
(1.綏化市氣象局,黑龍江 綏化 152002;2.中國氣象局,北京 100081)
區(qū)域自動(dòng)氣象站是一種適用于中小尺度天氣系統(tǒng)監(jiān)測的無人自動(dòng)站。隨著氣象現(xiàn)代化的發(fā)展,區(qū)域自動(dòng)氣象站已成為氣象綜合觀測站網(wǎng)的重要組成部分,其數(shù)據(jù)對(duì)提高天氣預(yù)報(bào)水平、氣象服務(wù)、氣象防災(zāi)減災(zāi)預(yù)警等發(fā)揮著重要的作用。而其中區(qū)域站各要素等值線圖對(duì)預(yù)報(bào)、決策人員有著很大幫助。在眾多繪圖軟件中,Surfer最為方便實(shí)用,Surfer是一款十分流行的二、三維數(shù)據(jù)處理和顯示軟件,在氣象業(yè)務(wù)中得到廣泛的應(yīng)用,其視圖功能強(qiáng)大,等值線圖繪制是其主要的功能,軟件操作使用方便,是平時(shí)制作氣象數(shù)據(jù)等值線常用的一款最為方便實(shí)用的軟件。
區(qū)域自動(dòng)氣象站主要有風(fēng)向、風(fēng)速、氣溫、降雨量4要素觀測。目前黑龍江省的區(qū)域氣象自動(dòng)站查詢軟件是華創(chuàng)公司開發(fā)的CAWSAnyWhereServer軟件,在實(shí)際業(yè)務(wù)使用中存在數(shù)據(jù)檢索功能單一,不能對(duì)任意時(shí)段要素繪制等值線圖等問題。為充分利用區(qū)域自動(dòng)氣象站豐富的氣象資料,結(jié)合實(shí)際業(yè)務(wù)工作的需要,有必要對(duì)區(qū)域自動(dòng)氣象站數(shù)據(jù)庫數(shù)據(jù)的結(jié)構(gòu)和存儲(chǔ)方式進(jìn)行分析,并對(duì)其數(shù)據(jù)的開發(fā)與應(yīng)用進(jìn)行探討。
(1)區(qū)域站數(shù)據(jù)庫的連接。目前區(qū)域站數(shù)據(jù)存儲(chǔ)在各市局服務(wù)器中,在客戶端可以通過Adodb組件加以連接,provider屬性串格式如下:
Provider=SQLOLEDB.1;
Persist Security Info=True;
User ID=用戶名;
Password=密碼;
Initial Catalog=CAWSAnyWhereServer;
Data Source=221.210.188.66,1443
其中CAWSAnyWhereServer為區(qū)域站數(shù)據(jù)庫名,221.210.188.66,1433為數(shù)據(jù)庫服務(wù)器地址,端口號(hào)。
(2)確認(rèn)數(shù)據(jù)表名。建立數(shù)據(jù)連接后,可以通過select*from sysobjects語句查詢庫內(nèi)表的名稱,區(qū)域站軟件更新升級(jí)后,改變了數(shù)據(jù)庫結(jié)構(gòu),每個(gè)站點(diǎn)對(duì)應(yīng)數(shù)個(gè)表,表名格式:H字母開頭為該站小時(shí)數(shù)據(jù),M字母開頭為該站分鐘數(shù)據(jù),后5位是區(qū)站號(hào)。如果要一次查詢多個(gè)站點(diǎn),要一次循環(huán)打開多個(gè)表。
(3)確認(rèn)數(shù)據(jù)結(jié)構(gòu)??梢酝ㄟ^ select name from syscolumns where id in (select id from sysobjects where name='表名')語句查詢各表結(jié)構(gòu),以小時(shí)數(shù)據(jù)表為例,各站表結(jié)構(gòu)是一致的,TT表示觀測時(shí)間,BA表示小時(shí)雨量。
(4)查詢?nèi)我鈺r(shí)段數(shù)據(jù)。對(duì)各站任意時(shí)段小時(shí)數(shù)據(jù)合計(jì)查詢,關(guān)鍵SQL語句見下:
SELECT sum(BA)FROM站小時(shí)數(shù)據(jù)表where(TT>'開始時(shí)間')and(TT<=‘結(jié)束時(shí)間’)。
用Surfer繪圖一般要經(jīng)過以下幾個(gè)步驟:
(1)繪制底圖。底圖一般為當(dāng)?shù)厥噶扛袷?,可以從micaps軟件相關(guān)目錄中找到本省地圖加以修改,地圖文件為文本文件,第一行第一項(xiàng)為地圖中點(diǎn)的個(gè)數(shù),第二項(xiàng)為0;以下各行為地圖數(shù)據(jù),由經(jīng)緯坐標(biāo)組成。
(2)網(wǎng)格化。網(wǎng)格化前要準(zhǔn)備好要素?cái)?shù)據(jù)文件,數(shù)據(jù)文件的格式為文本文件,每行最少要有3項(xiàng)數(shù)據(jù):經(jīng)度、緯度、要素值。操作前注意設(shè)置網(wǎng)格范圍要與底圖大小相同。選好網(wǎng)格化方法后生成網(wǎng)格文件。
(3)白化。白化的目的是使超出本地區(qū)范圍以外的部分不畫等值線,白化需要準(zhǔn)備白化地圖,此地圖也是矢量地圖,為本地區(qū)的輪廓,要求輪廓線連續(xù)并封閉,即整個(gè)地圖是一條首尾相連的連線。將上步生成的網(wǎng)格文件通過白化地圖白化操作,生成新的網(wǎng)格文件,文件中本地區(qū)以外的部分,Surfer就不會(huì)繪制等值線了。
(4)繪制等值線。加載白化后的網(wǎng)格文件,繪制等值線,并給等值線填色等。
(5)疊加。Surfer還提供了張貼圖功能,可以將離散站點(diǎn)數(shù)據(jù)顯示在地圖上。建立張貼圖需要準(zhǔn)備文本格式文件,格式為每行最少3項(xiàng)數(shù)據(jù):經(jīng)度、緯度、待顯示內(nèi)容。
Surfer軟件安裝后,就可以通過引用它提供的控件編制程序繪制等值線圖了,對(duì)控件的引用如下:
var SurferApp=new ActiveXObject(“Surfer.Application”);
var doc=SurferApp.Documents.Add(1);
編寫Surfer程序,涉及到的數(shù)據(jù)文件較多,一般有3個(gè)文件是固定不變的:地圖文件、白化地圖文件、站點(diǎn)索引文件,站點(diǎn)索引文件中最少要包含區(qū)站號(hào)、經(jīng)度、緯度3個(gè)字段內(nèi)容。動(dòng)態(tài)生成的文件包括:
(1)通過站點(diǎn)索引文件中的區(qū)站號(hào)索引訪問網(wǎng)絡(luò)數(shù)據(jù)庫,形成的站點(diǎn)要素文件。文件中最少要包含經(jīng)度、緯度、要素值,該文件的形成需要訪問區(qū)域站數(shù)據(jù)庫,是整個(gè)過程的關(guān)鍵,Surfer用該文件生成網(wǎng)格文件。
語句執(zhí)行后,將形成的數(shù)組保存到站點(diǎn)要素文件中,以待下步執(zhí)行。
(2)網(wǎng)格化生成的未白化網(wǎng)格文件。網(wǎng)格化是繪制等值線的關(guān)鍵步驟,需要準(zhǔn)備上步動(dòng)態(tài)生成的站點(diǎn)要素文件,在Surfer中網(wǎng)格化是通過GridData函數(shù)調(diào)用的,Grid-Data函數(shù)參數(shù)較多,其中幾個(gè)主要參數(shù)含義為:
DataFile:氣象站點(diǎn)要素文件;xCol,yCol,zCol:坐標(biāo)及要素值在數(shù)據(jù)文件中的位置;NumCols,NumRows:插值時(shí)的總行數(shù)、列數(shù);xMin,xMax,yMin,yMax:大小范圍,應(yīng)該同底圖的范圍相同;Algorithm:插值方法。NumCols,NumRows參數(shù)值越大,等值線越流暢,等值線層邊緣越光滑,但速度也越慢。針對(duì)不同類型的氣象要素,應(yīng)該選擇不同的插值方法。
(3)白化后的網(wǎng)格文件。調(diào)用相關(guān)方法:SurferApp.GridBlank(未白化網(wǎng)格文件,白化地圖文件,白化后網(wǎng)格文件);語句執(zhí)行后生成的白化后網(wǎng)格文件。之后調(diào)用Add-ContourMap語句繪制等值線圖層,參數(shù)為白化后的網(wǎng)格文件。
(4)用于顯示站點(diǎn)要素值的張貼圖文件。Surfer張貼圖用于顯示區(qū)域站點(diǎn)名稱、站點(diǎn)要素值等,每顯示一類要新建一動(dòng)態(tài)文件,所需的文件格式最少為3個(gè)字段:經(jīng)度、緯度、待顯示值。經(jīng)度、緯度從站點(diǎn)索引文件中得到,待顯示值則需要訪問區(qū)域站數(shù)據(jù)庫得到。通過方法AddPostMap,將要素值加到新的張貼圖層中。最后疊加各個(gè)圖層,輸出等值線圖片。
氣象要素?cái)?shù)據(jù)的質(zhì)量直接影響繪制等值線的效果,因此有必要在繪制等值線前對(duì)數(shù)據(jù)進(jìn)行質(zhì)量控制,最簡單的篩選是剔除缺測站點(diǎn),參與繪制等值線的站點(diǎn)要素文件不應(yīng)該包含缺測站點(diǎn)。
可以考慮在服務(wù)器端架設(shè)Web服務(wù)器,在服務(wù)器端安裝Surfer軟件,客戶端只需瀏覽器即調(diào)用圖形了。如用ASP編程,需要在服務(wù)器端降低客戶訪問Surfer控件的權(quán)限,PHP編程則不需要設(shè)置。
為提高效率,將輸出的圖片文件名設(shè)為查詢時(shí)間段,客戶端第一次查詢某時(shí)段后生成圖片文件,下次再有訪問,程序先檢測目錄里是否有該時(shí)段圖片,如有則直接顯示圖片,省略運(yùn)算過程。程序還應(yīng)在客戶訪問時(shí)檢查刪除早期圖片文件,保持固定的圖片數(shù)目。