应用Matlab自动绘制气象等值线图

2016-09-18 11:51张慧史奎桥杨扬史艳玲杨剑虹郭宁张兵兵
广东气象 2016年4期
关键词:等值线图等值线图例

张慧,史奎桥,杨扬,史艳玲,杨剑虹,郭宁,张兵兵

(1.锦州市生态与农业气象中心,辽宁锦州 121000;2.锦州市气象局,辽宁锦州 121000)

应用Matlab自动绘制气象等值线图

张慧1,史奎桥1,杨扬1,史艳玲2,杨剑虹2,郭宁2,张兵兵1

(1.锦州市生态与农业气象中心,辽宁锦州121000;2.锦州市气象局,辽宁锦州121000)

为了提高制作气象服务材料的效率,应用集科学计算、数据分析和可视化等功能于一体的Matlab高级计算语言编制代码,实现区域自动站气象数据的自动读取、气象数据等值线图的自动绘制,并在此基础上应用Matlab自带的图形用户界面工具箱形成可人机交互的可执行文件。实现绘制等值线一键式操作表明基于Matlab绘制气象等值线这一方法是能满足气象业务服务中及时准确的要求,且操作方便,避免了不同计算机语言间的转换。

计算机技术与应用;矩阵实验室;数据库;等值线图;可执行文件;掩膜提取

张慧,史奎桥,杨扬,等.应用Matlab自动绘制气象等值线图[J].广东气象,2016,38(4):74-77.

Matlab(矩阵实验室)是一款集科学计算、数据分析和可视化等功能于一体的高级技术计算语言[1-3],近年来越来越广泛应用于气象业务工作和研究中。汪晓滨等[4]应用Matlab换算和处理飞机人工增雨航迹数据,准确模拟出飞机航迹且用图形直观显示航迹模拟结果;刘峰等[5]应用Matlab读取Micaps、Grib和NetCDF 3种气象数据并应用Matlab绘制等值线、填色等值线、风矢量和流线4种图形;董言治等[6]利用Matlab自带的函数对南海观测数据进行剔点处理、趋势项提取和迭代初始值的确定;孟力力等[7]在VB(Visual Basic)编写的人机交互界面,采用基于组件对象模型COM(component object module)调用Matlab编写的用于实现理论模型中的工程计算和图像图形处理的M.源函数文件,最终实现日光温室热环境模拟模型软件的可视化。但是在气象业务中如何应用Matlab实现人机交互式访问SQL数据库并提取相应数据绘制行政边界区域内的等值线图的研究还较少。本研究应用Matlab自动读取区域自动站的气象数据、绘制行政边界内等值线图、编制人机交互界面且生成可执行文件,并给出了相应的编程代码。

1 应用Matlab访问SQL数据库

针对局地气象服务的局限性,在山洪地质灾害易发和多发区,加密布设局区域自动气象站[8]。区域自动气象站的气象数据定时上传到气象局SQL服务器上,存储在数据库中。

1.1配置数据源

在应用Matlab访问SQL服务器之前要配置数据源[9]:电脑主机“控制面板”-“管理工具”-“数据源(ODBC)”-“添加”-“创建数据源”。在创建数据源中选择“SQL server”出现图1a。在命名数据源中输入例如“qixiang”,在服务器选项中输入SQL的IP地址例如“···”。点击下一步后出现图1b,输入SQL服务器的登录ID和密码例如“lenovo”和“123456”。在确定计算机所用网络与SQL服务器为同一网络后,点击下一步出现图1c界面。在更改默认数据库的选项框中,选择区域自动气象站数据存储的数据库例如AhGis2015,点击下一步,最终设置成功的对话框如图1d。

图1 配置数据源

1.2应用Matlab访问SQL数据库

在安装Matlab软件时首先要查看计算机的设置是32 bit还是64 bit,根据计算机属性确定Matlab是安装32还是64 bit。

建立链接对象,语句为con=database(′qixiang′,′lenovo′,′123456′)。其格式为3个引号中的内容分别对应1.1节配置数据源时的“数据源命名”、“SQL服务器的登录ID”和“SQL服务器的密码”。应用ping(con)语句检查Matlab与SQL服务器是否链接成功,若成功在Matlab的command window窗口下显示内容如图2。若链接失败则图2中最后一行的内容显示为Auto-CommitTransactions:′False′。

图2 Matlab与SQL服务器连接成功所显示的内容

建立并打开游标的语句为curs=exec(con,′selectfrom database′),其中“con”是上文中的链接对象,selectfrom database表示从database(数据库)选择所有的数据。但是在气象业务中,经常要选择某一时间段内的数据,其语句可改为(例如):“”表示选择AhGis2015Meso2015_hour数据库下应用观测时间字段来选择行政区域内所有区域自动气象站2015年5月14日08:00至5月19日08:00 5 d的气象数据。其中下划线部分是要根据各自的数据库建立格式自行修改的地方。

把数据库中的数据读取到Matlab中的语句是A=fetch(curs)和B=A.data。读取到的数据用变量B保存。

关闭连接语句为close(curs)和close(con)。具体代码为

2 数据的处理分析

从数据库读取的数据需要统计分析后才能用于气象业务服务中。例如行政区域内设有79个区域自动站,每个自动站一天24组气象数据,累计5 d,共为79×24×5组气象数据。每组气象数据包括时间、温度、降水、风速、风向等17类不同的气象观测数据。若是需要每一个区域自动站累计5 d的降水总量,则要应用Matlab完成数理统计。最终形成79行×3列的数组,表示79个区域自动气象站各自的纬度、经度和5 d累计降水量。

3 绘制气象等值线图

绘制气象等值线的基本步骤为:a)采用克里金、三次样条差分等差值方法对区域自动站数据进行差值,形成栅格数据;b)应用掩膜提取方法裁剪出行政区域范围内的栅格数据[10];c)绘制等值线图;d)根据业务规定确定图相中色阶分布;e)添加县级行政区域名称、图例说明和相应的文字说明;f)输出图片。具体的程序(例子)如下:

%%%%%a)差值生成栅格数据%%%%%

cx=linspace(最小经度,最大经度,1 000);%注意此处通过最大、最小经纬度所限定的范围能包含这79个区域自动站。

cy=linspace(最小纬度,最大纬度,1 000);

[lon lat]=meshgrid(cx,cy);%形成1 000 ×1 000的栅格矩阵

%第2部分数据处理分析的最终结果存储在变量data中,

latout=data(:,1);%纬度

lonout=data(:,2);%经度

temp=data(:,3);%5 d累计降水

Z=griddata(x,y,z,lon,lat,′v4′);%通过区域站的散点降水数据差值生成栅格矩阵数据,选择的差值方法为Matlab自带的“V4”方法。

%%%%%b)掩膜提取行政区域范围内的栅格数据%%%%%

jinzhou=shaperead(′area.shp′);%调入准备好的地区边界“.shp”文件

isin=inpolygon(lon,lat,jinzhou.X,jinzhou. Y);

Z(~isin)=NaN;%去掉行政区域以外的数值,相当于surfer软件中的白化功能[11]。

%%%%%c)绘制等值线%%%%% contourf(lon,lat,Z,5);%等值线分为5份shading flat colorbar hold on

plot(jinzhou.X,jinzhou.Y,′-k′,′linewidth′,2)%绘制等直线图像

axis off

%%%%%d)根据业务规定确定图相中色阶分布%%%%%

z_max=max(max(Z));z_min=min(min(Z));color_data=[];cmin=z_min;cmax=z_max;

caxis([cmin cmax]);colormap(jet(64));

color_map=cmin:(cmax-cmin)/64:cmax;size_color=size(color_map);for i=1:(size_color(1,2)-1)if color_map(1,i)<=9.9

color_data(i,:)=[0.60001.0000 0.4000];%小雨0-9.9 mm设置为浅绿色

elseif(color_map(1,i)>=10&color_ map(1,i)<=24.9)

color_data(i,:)=[0.14510.7216 0.1569];%中雨10-24.9 mm设置为深绿色

elseif(color_map(1,i)>24.9&color_ map(1,i)<=49.9)

color_data(i,:)=[00.8000 0.8000];%大雨25-49.9 mm设置为浅蓝色

elseif(color_map(1,i)>49.9&color_ map(1,i)<=99.9)

color_data(i,:)=[0.18040.3569 0.8784];%暴雨50-99.9 mm设置为深蓝色

else

color_data(i,:)=[0.96860.2941 0.9686];%大于100 mm设置为紫色

end

end%RGB 3个分量都在0~1之间,相应的颜色从黑变化到白色。

%%%%%e)在图片中添加县级名称、图例说明等%%%%%

annotation(gcf,′textbox′,[0.4163 0.3425 0.07043 0.07407],...

′String′,{′凌海′},...′FitBoxToText′,′off′,...

′EdgeColor′,′none′);%其中[0.4163 0.3425 0.07043 0.07407]表示文本内容在图片中的位置[文本起始横坐标文本起始纵坐标文本长度文本宽度]。同样可以应用这种方法添加图例说明,图片题目,文字说明。

%确定图例颜色%

annotation(gcf,′textbox′,[0.72 0.22 0.08 0.03],...

′FitBoxToText′,′off′,...

′EdgeColor′,[0.96860.2941 0.9686],...

′BackgroundColor′,[0.96860.2941

0.9686]);%图例的绘制是以文本框textbox为基础的,其中[0.72 0.22 0.08 0.03]表示图例在图片中的位置[图例起始横坐标图例起始纵坐标图例长度图例宽度];[0.96860.2941

0.9686]表示图例的颜色。注意图例的颜色要与c)中规定的颜色一一对应。

%%%%%输出图片%%%%%%

set(gcf,′PaperPositionMode′,′auto′)%按照窗口大小输出图像

print-dbmp-r300降水分布图%图片格式为bmp格式,分辨率为300,其清晰度可以满足业务需求。例如图3是降水空间分布等值线图。

图3 降水空间分布等值线图

4 制作可执行文件

在气象业务工作中,经常需要将上述设计好的等值线程序制作成可执行文件,通过输入一些简单的时间变量一键式就能实现等值线的绘制,这种人机交互的形式有利于不熟悉Matlab的气象业务人员应用该软件[12]。Matlab具备设计友好的图形用户界面(GUI)功能[1]。Matlab提供所有GUI支持的用户控件,并且允许设计者对界面的外观、属性和行为相应方法进行设置。Matlab提供的GUI的开发环境(GUIDE)与VBVC类似,只要设计者直接用鼠标把需要的对象拖拽到目标的位置,就完成了GUI的布局设计。GUIDE将用户设计完成的GUI存储在一个FIG文件中,同时自动生成包含GUI初始化和GUI界面布局设置代码的M-文件。生成可执行文件的基本步骤为:a)进行GUI布局设计;b)将布局控件与相应的代码程序链接,使其实现一定功能;c)生成可执行文件,其代码为“mcc-m可执行文件名称”。注意可执行文件的名称要与布局设置代码M-文件的名称一致,且不能为中文。图4为应用Matlab开发的锦州市内降水空间分布等值线绘制的一个可执行文件界面。

图4 生成可执行文件界面

Matlab可以进行科学计算、数据分析和设计友好型界面。凭借其强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计已经在气象业务研究中得到了广泛的应用。本研究介绍了如何应用Matlab语言访问SQL服务器,获得区域自动站的气象数据;通过数值统计分析后自动绘制成气象等值线图像;并在此基础上设计形成人机交互的可执行文件。应用Matlab一种语言就完成了数据的读取、分析、可视化和人机交互友好界面,且操作方便,避免了不同计算机语言间的转换。

[1]董霖.MATLAB使用详解[M].北京:科学出版社;2008:108-387.

[2]李涛,何勇军,刘志俭.MATLAB工具箱应用指南-应用数学篇[M].北京电子工业出版社,2000:5-10.

[3]楼顺天,于卫,胡昌华,等.基于MATLAB的系统分析与设计[M].西安:电子科技大学出版社,1999:65-97.

[4]汪晓滨,吕亚丽,王广河,等.Matlab在北京飞机增雨航迹分析中的应用[J].气象,2006,32(7):46-51.

[5]刘峰,刘娟,李萍,等.基于MATLAB实现3种气象数据的读取和绘图[J].广东气象,2007,29(4):45-47.

[6]董言治,周晓东,娄树理,等.MATLAB在运用系统建模处理南海气象数据过程中应用[J].成都信息工程学院学报,2004,19(01):76-81.

[7]孟力力,杨其长,闻婧,等.MATLAB和VB在温室环境模型构建中的混合编程研究[J].中国农学通报,2012,28(6):262-268.

[8]李雁,李峰,赵志强,等.中国区域自动气象站运行监控系统建设[J].气象科技,2013,41(2):231-235,277.

[9]周晓峰.Matla链接SQL数据库[OL].http://blog. renren.com/share/234106014/2083786764.2012-07 -16.

[10]斥鷃.Matlab中地图边界与掩膜的实现[EB/OL]. http://bbs.06climate.com/forum.php?mod= viewthread&tid=12340&fromuid=9098.2013-1-30.

[11]李明明,韩照宇,王雁,等.利用VB调用surfer软件实现酸雨数据可视化[C]//第28届中国气象学会年会“大气成分与天气气候变化的联系”分会场论文集,2011.

[12]乌丽雅苏,孟克其劳,苏立娟,等.基于MATLAB GUI的水汽自动处理系统的设计与实现[J].电子设计工程,2012,20(6):1-4.

TP39

A

10.3969/j.issn.1007-6190.2016.04.019

2015-11-10

张慧(1986年生),女,硕士,助理工程师,主要从事农业气象、生态气象服务。E-mail:zhanghui.107@163.com

史奎桥(1961年生),男,高级工程师,主要从事农业气象服务和农业气象试验。E-mail:jzstynqzx@163.com

猜你喜欢
等值线图等值线图例
一种基于IDW 的等值线、等值面前端生成方法
基于规则预计格网的开采沉陷等值线生成算法*
基于GeoProbe地球物理平台的软件等值线追踪算法研究与软件开发
找拼图
犬狗的画法(六)
如何让学生巧用图例解决数学问题
如何来解决等值线问题
“等值线”的数学特征及其应用
可爱的小鸟
Surfer软件在气象资料自动成图中的应用研究