河池市气象局,广西 河池,547000
摘要 用C#语言调用MeteoInfo类库MeteoInfoC.dll,用反距离权重插值(简称IDW)方法,实现气象要素等值线和色斑图的绘制,为开发等值线、色斑图绘图功能的系统提供一种简捷的途径。
关键词C#语言;MeteoInfo;等值线色斑图
引言
在气象天气分析图、气象服务材料和天气预报影视制作中,都要用到气象要素等值线或色斑图的绘制。MeteoInfo软件是由中国气象局科学研究院研发的一个免费的气象数据显示、分析软件,具有较强的综合数据图形显示、分析能力,操作简便、图形美观。软件支持多种常用的气象数据格式,具备基本的GIS功能。Meteolnfo还可以通过编写IronPython脚本程序自动运行。MeteoInfo的核心是它的类库MeteolnfoC.dll,使用该类库可以方便快捷地开发气象数据显示分析类软件。用C#语言调用Meteolnfo类库MeteoInfoC.dll,可以方便快捷地制作气象要素等值线或色斑图,并实现降雨量、气温等气象要素的填图功能。
1、数据处理
在编写制作等值线和色斑图软件时,要用到地图边界坐标数据、气象要素数据和色标数据文件。
1.1地图边界数据
通过Intemet网登录“阿里地图选择器”网站,选择需要的地图,阿里地图生成器自动生成包含子区域(县边界)或者不包含子区域Geojson格式文件及SVG文件文件,下载Genjson文件,通过ArcMap转成SHP矢量地图文件。
1.2气象要素数据格式
根据在程序中读取的方法编写气象要素数据格式,建立一个气象要素数据
文本文件。格式如下:
表头
区站号,经度,纬度,气象要素值,站名
如:
Stid,Longitude,Latitude,降雨量,StationName
59xxx,108.3,27.4,89.2,xx县
……
……
1.3色标文件设置
色标文件是设置绘制等值线颜色、线径大小和不同气象要素量级填充的颜色色斑图。
新建写字板文件,根据气象标准设置气温、降雨量不同等级的颜色。以降雨量为例,建立色标文件格式如下。
<?xml version="1.0" encoding="gb2312"?>
……
……
≥100" StartValue="100" EndValue="2000" Color="#f405f8" DrawShape="True" OutlineColor="Gray" DrawOutline="True" DrawFill="True" OutlineSize="1" UsingHatchStyle="False" Style="BackwardDiagonal" BackColor="Transparent" />
其中:Break Caption="0-0.1" StartValue="0" EndValue="0.1"为雨量0—0.1mm对应的颜色,Color="#ffffff"为十六进制颜色,OutlineColor="Gray"为每个色斑边框颜色,OutlineSize="1"为色斑边框大小。
文件保存为扩展名lgs的文件。
2、等值线绘制方法
2.1引用MeteoInfo类库
在菜单中点击:项目—添加引用,在添加引用界面点击浏览,找到MeteoInfoC.dll,点击确定。
2.2添加LayersLegend、MapView和MapLayou控件
LayersLegend是管理MapFrame和Layer的,MapView是地图显示控件,MapLayout是图形版面管理控件。
在菜单中点击:工具—选择工具箱,在选择工具箱项界面点击浏览,找到MeteoInfoC.dll,点击确定。
在项目设计器上加入MapLayout控件。
2.3地图绘制关键代码
alayer = MapDataManage.OpenLayer(“地图文件路径”);
_layerslegend.ActiveMapFrame.AddLayer(alayer);
Extent aExtent = _mapview.Extent;
_mapview.ZoomToExtent(aExtent);
其中:_layerslegend.ActiveMapFrame.AddLayer(alayer)加矢量地图图层。
_mapview.ZoomToExtent(aExtent)将矢量图大小放置适合电脑屏幕大小位置。
2.4读取气象要素关键代码
aMeteoDataInfo = new MeteoDataInfo(); aMeteoDataInfo.OpenLonLatData(“气象要素文件”); aMeteoDataInfo.DimensionSet = PlotDimension.Lat_Lon;
StationData aStationData = new StationData(); aStationData = aMeteoDataInfo.GetStationData(_stationinfo[0].FieldList[3].ToString());
其中:aMeteoDataInfo.OpenLonLatData(“气象要素文件”)为打开气象要素文件, aMeteoDataInfo.GetStationData(_stationinfo[0].FieldList[3].ToString())为读取气象要素文件。
2.5读取色标文件关键代码
als.ImportFromXMLFile(“色标文件路径”);
2.6绘制等值线关键代码
LegendScheme als = LegendManage.CreateLegendSchemeFromGridData(aGridData, LegendType.UniqueValue, MeteoInfoC.Shape.ShapeTypes.Polyline, ref _bool);
int colorlen = als.BreakNum;
for (int i = 0; i < colorlen; i++)
{
als.LegendBreaks[i].Color = Color.Black;
}
2.7绘制色斑图关键代码
LegendScheme als = LegendManage.CreateLegendSchemeFromGridData(aGridData, LegendType.GraduatedColor, MeteoInfoC.Shape.ShapeTypes.Polygon, ref _bool); als.ImportFromXMLFile(“色标文件路径”);
3、应用实例
用C#语言编程调用MeteoInfo类库,制作河池市区域自动气象站降雨量等值线图和色斑图。
图1 等值线图图2 色斑图
4、小结
MeteoInfo软件类库MeteolnfoC.dll封装了气象绘图常用功能,通过C#语言编程调用MeteoInfo类库,就能绘制任意区域的等值线图,批量生成气象要素等值线图或色斑图,简单、快捷、实用,用少量代码就能实现绘图自动化。同时还可以制作风场矢量图、风场流线图等。
参考文献:
[1] 曾鹏,廖国莲,莫雨淳,李雄,吴燊先.广西地质灾害业务平台的设计与开发[J] .气象研究与应用,2014(2);57-59.
[2] 刘辉权,钟兰頔.气象数据图形显示系统及应用[J] .成都信息工程学院学报,2014(3);273-284.
[3] 李松涛,朱宇,赵文哲.利用Meteo Info软件分析闪电资料[J] .内蒙古气象,2016(2);39-42.
作者简介:韦健(1963-),壮族,男,广西河池人,大学学历,高级工程师,从事气象信息与装备技术保障工作。