智能网格预报产品本地化释用方法应用研究
2022-01-10冀刚
冀 刚
(内蒙古锡林郭勒盟气象局,内蒙古 锡林浩特 026000)
智能网格预报正成为我国气象业务的重要发展方向,智能网格预报是无缝隙、全覆盖、客观定量的预报系统,开展智能网格预报业务是适应现代气象预报业务发展的必然选择。如何进一步提升中短期预报的准确率以及精细化水平,精细监测、精准预报、精心服务,是当下气象部门需要做好的重要工作。随着精细化专项预报需求不断提升,各级气象部门急需专业智能网格释用系统来提升本地预报和服务能力,提升智能网格产品在气象系统业务应用水平,通过智能网格释用实现中短期预报和服务数据高效加工处理、产品制图等可视化应用业务功能,逐步提升气象部门定时、定点、定量指导预报应用水平。
1 智能网格预报产品接口调用实现方法
气象部门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;
}
}
2 智能网格预报产品本地化显示
通过上面智能网格数据调用方式将需要的数据下载到本地,可以根据实际应用需求将数据保存到本地文件或临时存储在内存;如果选择内存存储方式可以极大提高数据访问速度,比如我们可以将未来10天的24小时降水预报产品保存到内存数据集,这样使用数据时就可以直接从内存调用,用户访问这些产品时可以非常流畅,不会有卡顿现象。智能网格预报产品可以使用GIS技术本地显示,由于智能网格预报数据过密过大,我们必须进行分级处理(根据地图比例来显示指定数据行和数据列),如果不进行数据分级处理,数据显示到屏幕上就会出现数据重叠情况,为了避免出现这种情况我们必须通过GIS显示技术根据我们地图比例大小进行数据分级处理显示[1],如图1所示。
图1 锡林郭勒盟智能网格降水预报
3 智能网格预报产品本地产品制作
智能网格产品存储方式按经纬度格点格式形式保存,每个格上保存有气温、降水、风、湿度等数据,制作本地站点预报就需要对指定站点经纬度格点插值来计算预报站点上气温、降水等各预报要素值,并可以根据需要将插值计算的数据按照预报需求转换成等级级别格式(降雨:小雨、中雨、大雨、暴雨、大暴雨、特大暴雨,风向: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;
}
}
4 结束语
随着气象现代化水平提升,数值预报的精度和准确率会随着超级计算机的运算能力提升面提高,解释应用好数值预报产品能极大提高各级气象部门自身服务水平和能力,为地方经济建设和人民生命财产安全保驾护航。