冀 剛
(內(nèi)蒙古錫林郭勒盟氣象局,內(nèi)蒙古 錫林浩特 026000)
智能網(wǎng)格預(yù)報(bào)正成為我國氣象業(yè)務(wù)的重要發(fā)展方向,智能網(wǎng)格預(yù)報(bào)是無縫隙、全覆蓋、客觀定量的預(yù)報(bào)系統(tǒng),開展智能網(wǎng)格預(yù)報(bào)業(yè)務(wù)是適應(yīng)現(xiàn)代氣象預(yù)報(bào)業(yè)務(wù)發(fā)展的必然選擇。如何進(jìn)一步提升中短期預(yù)報(bào)的準(zhǔn)確率以及精細(xì)化水平,精細(xì)監(jiān)測、精準(zhǔn)預(yù)報(bào)、精心服務(wù),是當(dāng)下氣象部門需要做好的重要工作。隨著精細(xì)化專項(xiàng)預(yù)報(bào)需求不斷提升,各級氣象部門急需專業(yè)智能網(wǎng)格釋用系統(tǒng)來提升本地預(yù)報(bào)和服務(wù)能力,提升智能網(wǎng)格產(chǎn)品在氣象系統(tǒng)業(yè)務(wù)應(yīng)用水平,通過智能網(wǎng)格釋用實(shí)現(xiàn)中短期預(yù)報(bào)和服務(wù)數(shù)據(jù)高效加工處理、產(chǎn)品制圖等可視化應(yīng)用業(yè)務(wù)功能,逐步提升氣象部門定時(shí)、定點(diǎn)、定量指導(dǎo)預(yù)報(bào)應(yīng)用水平。
氣象部門CIMISS系統(tǒng)數(shù)值模式類別包含多個(gè)預(yù)報(bào)產(chǎn)品,我們以NAFP_NWFD_SCMOD(國家智能網(wǎng)格預(yù)報(bào)指導(dǎo)產(chǎn)品)為類說明調(diào)用產(chǎn)品方法。國家智能網(wǎng)格預(yù)報(bào)指導(dǎo)產(chǎn)品訪問包含多個(gè)接口調(diào)用方法,可以根據(jù)實(shí)際選擇需要的接口,下面我們用getNafp EleGridIn RectBy TimeAndLevel And Validtime 接口來說明調(diào)用產(chǎn)品的各個(gè)參數(shù),接口一共有9個(gè)參數(shù),分別是 time(時(shí)間)、minLon(起始經(jīng)度)、maxLon(終止經(jīng)度)、minLat(起始緯度)、maxLat(終止緯度)、fcstLevel(預(yù)報(bào)層次)、fcstEle(預(yù)報(bào)要素)、validTime(預(yù)報(bào)時(shí)效)、orderBy(排序字段)。例如time參數(shù)(20210323200000)表示起報(bào)時(shí)間為2021年3月23日20時(shí),經(jīng)緯度參數(shù)的單位是度,這個(gè)參數(shù)我們可以根據(jù)實(shí)際需要的范圍設(shè)定,智能預(yù)報(bào)產(chǎn)品網(wǎng)格密度是0.05*0.05度,如果設(shè)定的經(jīng)緯度范圍過大,調(diào)用接口時(shí)就會(huì)因?yàn)橄螺d數(shù)據(jù)量過大增加下載數(shù)據(jù)的時(shí)間,fcstLevel(預(yù)報(bào)層次)參數(shù)一般設(shè)置為空,fcstEle(預(yù)報(bào)要素)參數(shù)可以設(shè)定為降水、氣溫、風(fēng)、相對濕度,validTime(預(yù)報(bào)時(shí)效)參數(shù)設(shè)定范圍(0~240h,時(shí)間間隔為3h),orderBy(排序字段)表示排序方方式(升序、降序),下面的代碼是調(diào)用接口返回智能網(wǎng)格數(shù)據(jù)函數(shù)(c#)。
public RetGridArray2D get_cimmis_array2D_znwg()
{
try
{/* 1.定義client對象*/
DataQueryClient client = new DataQueryClient();
/* 2. 調(diào)用方法的參數(shù)定義,并賦值*/
/* 2.1 用戶名&密碼*/
String userId = "user_1";// 用戶名
String pwd = "pass_1";// 密碼
/* 2.2 接口ID */
Dictionary
String interfaceId;
interfaceId = "getNafpEle GridIn Rect By TimeAndLevel And Validtime";
/* 2.3 接口參數(shù),多個(gè)參數(shù)間無順序*/
// 必選參數(shù)
params1.Add("dataCode","NAFP_NWFD_SCMOC"); // 資料代碼
params1.Add("fcstEle","PRE_24H");// 檢索要素(24小時(shí)降水量)
params1.Add("time","20210323200000"); // 檢索時(shí)間
params1.Add("validTime","24"); // 預(yù)報(bào)時(shí)效
params1.Add("minLon","113"); // 最小經(jīng)度
params1.Add("maxLon","116"); // 最大經(jīng)度
params1.Add("minLat","43"); // 最小緯度
params1.Add("maxLat","46"); // 最大緯度
params1.Add("orderBy","IYMDHM:asc"); // 按日期時(shí)間排序
RetGridArray2D retd = new RetGridArray2D();//定義保存智能網(wǎng)格維數(shù)據(jù)表
/* 3. 調(diào)用接口*/
try
{
//初始化接口服務(wù)連接資源
client.initResources();
Console.WriteLine("finally initResources");
// 調(diào)用接口
int rst = client.callAPI_to_gridArray2D(userId,pwd,interfaceId,
params1,retd);
// 輸出結(jié)果
if (rst == 0)
{ // 正常返回
return (retd);
}
else
{
return (retd);
}
}
catch (Exception e)
{
return (retd);
// 異常輸出
e.Message();
}
finally
{
// 釋放接口服務(wù)連接資源
client.destroyResources();
}
}
catch
{
return;
}
}
通過上面智能網(wǎng)格數(shù)據(jù)調(diào)用方式將需要的數(shù)據(jù)下載到本地,可以根據(jù)實(shí)際應(yīng)用需求將數(shù)據(jù)保存到本地文件或臨時(shí)存儲(chǔ)在內(nèi)存;如果選擇內(nèi)存存儲(chǔ)方式可以極大提高數(shù)據(jù)訪問速度,比如我們可以將未來10天的24小時(shí)降水預(yù)報(bào)產(chǎn)品保存到內(nèi)存數(shù)據(jù)集,這樣使用數(shù)據(jù)時(shí)就可以直接從內(nèi)存調(diào)用,用戶訪問這些產(chǎn)品時(shí)可以非常流暢,不會(huì)有卡頓現(xiàn)象。智能網(wǎng)格預(yù)報(bào)產(chǎn)品可以使用GIS技術(shù)本地顯示,由于智能網(wǎng)格預(yù)報(bào)數(shù)據(jù)過密過大,我們必須進(jìn)行分級處理(根據(jù)地圖比例來顯示指定數(shù)據(jù)行和數(shù)據(jù)列),如果不進(jìn)行數(shù)據(jù)分級處理,數(shù)據(jù)顯示到屏幕上就會(huì)出現(xiàn)數(shù)據(jù)重疊情況,為了避免出現(xiàn)這種情況我們必須通過GIS顯示技術(shù)根據(jù)我們地圖比例大小進(jìn)行數(shù)據(jù)分級處理顯示[1],如圖1所示。
圖1 錫林郭勒盟智能網(wǎng)格降水預(yù)報(bào)
智能網(wǎng)格產(chǎn)品存儲(chǔ)方式按經(jīng)緯度格點(diǎn)格式形式保存,每個(gè)格上保存有氣溫、降水、風(fēng)、濕度等數(shù)據(jù),制作本地站點(diǎn)預(yù)報(bào)就需要對指定站點(diǎn)經(jīng)緯度格點(diǎn)插值來計(jì)算預(yù)報(bào)站點(diǎn)上氣溫、降水等各預(yù)報(bào)要素值,并可以根據(jù)需要將插值計(jì)算的數(shù)據(jù)按照預(yù)報(bào)需求轉(zhuǎn)換成等級級別格式(降雨:小雨、中雨、大雨、暴雨、大暴雨、特大暴雨,風(fēng)向:8個(gè)方位,風(fēng)速:1級、2級……)[2],例如降雨量等級如表1所示。
表1 降雨量等級劃分
最后將轉(zhuǎn)換后的站點(diǎn)預(yù)數(shù)據(jù)報(bào)通過調(diào)用office word接口輸出,代碼如下(c#):
private void qxxx_table_word_mengshi_qxq()
{
try
{
//聲明調(diào)用word接口
Microsoft.Office.Interop.Word.Application WordApp;
Microsoft.Office.Interop.Word.Document WordDoc;
Microsoft.Office.Interop.Word.Table newTable_1;
Object Nothing = System.Reflection.Missing.Value;
newTable_1 = WordDoc.Tables.Add(WordApp.Selection.Range,1,7,ref Nothing,ref Nothing);//初始化表
newTable_1.Columns[1].Width = 60f;//表列寬
newTable_1.Columns[2].Width = 80f;
newTable_1.Columns[3].Width = 55f;
newTable_1.Cell(1,1).Range.Text = "地區(qū)名";
newTable_1.Cell(1,1).Range.Font.Size = 9;
newTable_1.Cell(1,1).Range.Font.Name = "宋體";
newTable_1.Cell(1,2).Range.Text = "站名";
newTable_1.Cell(1,2).Range.Font.Size = 9;
newTable_1.Cell(1,2).Range.Font.Name = "宋體";
newTable_1.Cell(1,3).Range.Text = "預(yù)報(bào)時(shí)段";
newTable_1.Cell(1,3).Range.Font.Size = 9;
newTable_1.Cell(1,3).Range.Font.Name = "宋體";
newTable_1.Cell(1,4 + i).Range.Text ="最低/最高氣溫 (℃)";
newTable_1.Cell(1,4 + i).Range.Text = "氣溫 (℃)";
newTable_1.Cell(1,4 + i).Range.Text = Data_temp1[i].Trim() + "降水量 (毫米)";
newTable_1.Cell(1,4 + i).Range.Text = Data_temp1[i].Trim() + "風(fēng)速 (米/秒)";
newTable_1.Cell(1,4 + i).Range.Text = Data_temp1[i].Trim() + "風(fēng)力 (級)";
newTable_1.Select();//選定表格
WordApp.Selection.Tables[1].Rows.Alignment = Wd Row Alignment.wdAlignRowCenter;//文字居中
//設(shè)置表格樣式
newTable_1.Borders. OutsideLine Style = Microsoft. Office. Interop. Word. WdLineStyle. wdLine Style Single;
newTable_1.Borders. InsideLineStyle = Microsoft. Office. Interop. Word. WdLineStyle. wdLineStyleSingle;
int int_temp2 = 1;
public RetGridArray2D get_cimmis_array2D_znwg()
{
for (int i = 0; i <28; i++)
{
newTable_1.Rows.Add(ref Nothing);//在表格最后添加一行
newTable_1.Cell(newTable_1.Rows.Count,1).Range.Text ="錫林浩特(G1013)";
newTable_1.Cell(newTable_1.Rows.Count,2).Range.Text ="錫林浩特";
……
……
……
……
}
}
}
catch
{
return;
}
}
隨著氣象現(xiàn)代化水平提升,數(shù)值預(yù)報(bào)的精度和準(zhǔn)確率會(huì)隨著超級計(jì)算機(jī)的運(yùn)算能力提升面提高,解釋應(yīng)用好數(shù)值預(yù)報(bào)產(chǎn)品能極大提高各級氣象部門自身服務(wù)水平和能力,為地方經(jīng)濟(jì)建設(shè)和人民生命財(cái)產(chǎn)安全保駕護(hù)航。