冀 剛
(內蒙古錫林郭勒盟氣象局,內蒙古 錫林浩特 026000)
智能網格預報正成為我國氣象業務的重要發展方向,智能網格預報是無縫隙、全覆蓋、客觀定量的預報系統,開展智能網格預報業務是適應現代氣象預報業務發展的必然選擇。如何進一步提升中短期預報的準確率以及精細化水平,精細監測、精準預報、精心服務,是當下氣象部門需要做好的重要工作。隨著精細化專項預報需求不斷提升,各級氣象部門急需專業智能網格釋用系統來提升本地預報和服務能力,提升智能網格產品在氣象系統業務應用水平,通過智能網格釋用實現中短期預報和服務數據高效加工處理、產品制圖等可視化應用業務功能,逐步提升氣象部門定時、定點、定量指導預報應用水平。
氣象部門CIMISS系統數值模式類別包含多個預報產品,我們以NAFP_NWFD_SCMOD(國家智能網格預報指導產品)為類說明調用產品方法。國家智能網格預報指導產品訪問包含多個接口調用方法,可以根據實際選擇需要的接口,下面我們用getNafp EleGridIn RectBy TimeAndLevel And Validtime 接口來說明調用產品的各個參數,接口一共有9個參數,分別是 time(時間)、minLon(起始經度)、maxLon(終止經度)、minLat(起始緯度)、maxLat(終止緯度)、fcstLevel(預報層次)、fcstEle(預報要素)、validTime(預報時效)、orderBy(排序字段)。例如time參數(20210323200000)表示起報時間為2021年3月23日20時,經緯度參數的單位是度,這個參數我們可以根據實際需要的范圍設定,智能預報產品網格密度是0.05*0.05度,如果設定的經緯度范圍過大,調用接口時就會因為下載數據量過大增加下載數據的時間,fcstLevel(預報層次)參數一般設置為空,fcstEle(預報要素)參數可以設定為降水、氣溫、風、相對濕度,validTime(預報時效)參數設定范圍(0~240h,時間間隔為3h),orderBy(排序字段)表示排序方方式(升序、降序),下面的代碼是調用接口返回智能網格數據函數(c#)。
public RetGridArray2D get_cimmis_array2D_znwg()
{
try
{/* 1.定義client對象*/
DataQueryClient client = new DataQueryClient();
/* 2. 調用方法的參數定義,并賦值*/
/* 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 接口參數,多個參數間無順序*/
// 必選參數
params1.Add("dataCode","NAFP_NWFD_SCMOC"); // 資料代碼
params1.Add("fcstEle","PRE_24H");// 檢索要素(24小時降水量)
params1.Add("time","20210323200000"); // 檢索時間
params1.Add("validTime","24"); // 預報時效
params1.Add("minLon","113"); // 最小經度
params1.Add("maxLon","116"); // 最大經度
params1.Add("minLat","43"); // 最小緯度
params1.Add("maxLat","46"); // 最大緯度
params1.Add("orderBy","IYMDHM:asc"); // 按日期時間排序
RetGridArray2D retd = new RetGridArray2D();//定義保存智能網格維數據表
/* 3. 調用接口*/
try
{
//初始化接口服務連接資源
client.initResources();
Console.WriteLine("finally initResources");
// 調用接口
int rst = client.callAPI_to_gridArray2D(userId,pwd,interfaceId,
params1,retd);
// 輸出結果
if (rst == 0)
{ // 正常返回
return (retd);
}
else
{
return (retd);
}
}
catch (Exception e)
{
return (retd);
// 異常輸出
e.Message();
}
finally
{
// 釋放接口服務連接資源
client.destroyResources();
}
}
catch
{
return;
}
}
通過上面智能網格數據調用方式將需要的數據下載到本地,可以根據實際應用需求將數據保存到本地文件或臨時存儲在內存;如果選擇內存存儲方式可以極大提高數據訪問速度,比如我們可以將未來10天的24小時降水預報產品保存到內存數據集,這樣使用數據時就可以直接從內存調用,用戶訪問這些產品時可以非常流暢,不會有卡頓現象。智能網格預報產品可以使用GIS技術本地顯示,由于智能網格預報數據過密過大,我們必須進行分級處理(根據地圖比例來顯示指定數據行和數據列),如果不進行數據分級處理,數據顯示到屏幕上就會出現數據重疊情況,為了避免出現這種情況我們必須通過GIS顯示技術根據我們地圖比例大小進行數據分級處理顯示[1],如圖1所示。

圖1 錫林郭勒盟智能網格降水預報
智能網格產品存儲方式按經緯度格點格式形式保存,每個格上保存有氣溫、降水、風、濕度等數據,制作本地站點預報就需要對指定站點經緯度格點插值來計算預報站點上氣溫、降水等各預報要素值,并可以根據需要將插值計算的數據按照預報需求轉換成等級級別格式(降雨:小雨、中雨、大雨、暴雨、大暴雨、特大暴雨,風向:8個方位,風速:1級、2級……)[2],例如降雨量等級如表1所示。

表1 降雨量等級劃分
最后將轉換后的站點預數據報通過調用office word接口輸出,代碼如下(c#):
private void qxxx_table_word_mengshi_qxq()
{
try
{
//聲明調用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 = "地區名";
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 = "預報時段";
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() + "風速 (米/秒)";
newTable_1.Cell(1,4 + i).Range.Text = Data_temp1[i].Trim() + "風力 (級)";
newTable_1.Select();//選定表格
WordApp.Selection.Tables[1].Rows.Alignment = Wd Row Alignment.wdAlignRowCenter;//文字居中
//設置表格樣式
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;
}
}
隨著氣象現代化水平提升,數值預報的精度和準確率會隨著超級計算機的運算能力提升面提高,解釋應用好數值預報產品能極大提高各級氣象部門自身服務水平和能力,為地方經濟建設和人民生命財產安全保駕護航。