等值线图是以相等数值点的连线表示连续分布且逐渐变化的数量特征的一种图形,是气象上常用的气象要素图形显示方法。在气象预测预报和气象服务中,通常要用到以地图为背景的雨量、温度等气象要素的可视化分析,特别是在决策气象服务中可达到直观形象的效果,使人一目了然[1]。因此,目前在许多业务系统中都涉及到如何生成气象要素等值线的问题。
绘制等值线常用的软件很多,常用的主要有Surfer、GrADS、NCAR等。这些软件的功能类似,各有优缺点。例如Surfer软件只能用于Windows操作平台,GrADS (Grid Analysis and Display System)是一组多平台应用及气象数据图形分析和显示系统, 它提供了一个交互操作的气象格点数据和站点数据的分析和显示环境, 但是处理站点资料的能力较弱, 而且无法直接采用站点资料来绘制等值线[2]。NCAR绘图软件包是美国大气科学研究和业务工作通用的计算机绘图工具, 它功能强、使用方便、便于移植[3]。但是NCAR提供的主要是C和F ORTRAN语言的动态库,需要编写C或者FORTRAN的程序来调用,而Linux系统下利用C或者FORT RAN开发绘图系统的难度和工作量都比较大。
基于气象观测数据的自动等值线系统的开发环境和运行环境都是Linux,在比较了几种绘图软件的优缺点后,选用了IDL作为开发语言。IDL(交互式数据语言,Interactive Data Language)是美国Research System Inc开发的面向矩阵的计算机语言,适合数据挖掘和可视化分析。IDL长于矩阵和数组运算,并可方便地对运算结果进行可视化,支持的数据格式多种多样,并附有读写各科研专用格式的IDL库[4]。其图形功能也很强大,可以作二维、三维图像、等值线图、直方图、进行地图投影等,还可以进行复杂的图像处理。它还有较强的跨平台能力,支持Windows、Unix、Linux、MacOS等多个操作系统。选用IDL作为开发语言的优点有许多,例如,系统可以很轻易地移植到不同的操作系统、IDL处理数据的速度快、语言简单易学、减轻了开发任务。此外,IDL绘画的等值线不仅能存为多种格式的图像文件,还能转换为矢量格式,例如GIS中的SHAPEFILE格式,这使得系统输出的等值线图不仅能发布到WEB页面上,还能发布到WEBGIS平台下,给用户提供一些放大缩小的操作,结合地理数据一起使用。
在国际上,许多气象专家都是用IDL来做气象数据的可视化分析,澳大利亚气象局研究中心采用IDL开发了一套综合预报系统,成功地服务于2000年悉尼奥运会,服务于2008年北京奥运会的临近预报实时检验系统也是基于IDL开发的[5]。由此可见,IDL在气象行业的应用前景是十分可观的。然而在国内,IDL在气象领域的使用还处于初级阶段,对IDL熟悉的人很少。本文拟在这些方面开展初步的研究分析,利用IDL的等值线算法,以北京所有自动观测站的资料为原始数据,实现了Linux环境下的自动等值线系统,为IDL在气象上的深层次应用提供一个新的思路。
1 系统设计 1.1 系统总体功能要求① 自动采集装备中心下发的分钟自动气象站报文,进行解码,入库;报文每分钟更新一次,每分钟下发10次,要求系统能及时地处理采集到的报文;
② 对报文中的要素温度和风等,生成每5分钟的等值线图;
③ 在WEB上提供等值线图的动画显示;
④ 能动态生成累计雨量的等值线图;在WEB页面上用户选择开始时间和结束时间,提交后就能生成一张该时间段内的累计雨量等值线图;
⑤ 提供每小时和每5分钟的累计雨量等值线图,并在WEB上动画显示。
1.2 系统开发运行环境系统主要基于工作站开发,操作系统为Linux。开发语言包括IDL、PHP和JAVASCRIPT。气象观测数据主要是站点报文,由装备中心负责传送到服务器上。后端的报文处理和绘图是通过IDL实现的,WEB页面是PHP和JAVASCRIPT脚本实现的。
1.3 系统的主要结构根据以上的功能要求,系统对自动站报文进行实时采集,然后由数据处理模块进行解码入库,然后调用等值线算法模块进行图像处理,最后将生成的图像产品显示在WEB上,并分发到北京市气象局其它业务系统,例如本地探测数据综合显示系统(简称LDAD系统),预报员、专业用户、决策用户等可以通过WEB页面来访问该系统。系统采用了以Oracle为后台数据库,PHP和JAVASCRIPT为前端WEB开发工具,IDL为后台数据处理工具的体系结构。系统采用了模块化设计方案,分为数据库子系统、报文监控子系统、报文入库子系统、等值线生成子系统、图形显示子系统和产品分发子系统6个部分,如图 1所示。
系统自动对存放报文的目录进行实时监控,只要检测到有新的报文,就开始处理文件,解码气象要素存入数据库中。每5分钟系统会从数据库中读出气象要素(温度,雨量)等,再对这些离散的站点进行插值生成一个网格,然后利用IDL的contour过程对网格生成等值线,再利用栅格图像相交的算法MASK去掉边界外的等值线范围,然后存为图像和SHAPEFILE格式,最后将图像文件和SHAPEFILE的矢量格式文件都分发到WEB。温度等值线图、风矢量图、5分钟的雨量等值线图都是每5分钟生成一次,小时累计雨量等值线图每小时生成一次。图 2为系统的数据流程。
等值线绘制优劣的关键点之一是空间内插法的选取,目前较为成熟的插值法有许多种,例如反距离加权插值法, 克里金插值法,自然邻点插值法等。对于空间数据的内插究竟是否存在一种最优的内插法或者说对于某一特定空间变量是否存在某种最优的内插法,研究认为在不同的时空尺度内,每个方法对不同变量估计的误差是不一样的。对于空间数据的内插,一种“包插百量”的最优空间内插法是不存在的;对于不同的空间变量,在不同的地域和不同的时空尺度内所谓的“最优”内插法是相对的[6]。在台站分布密集的区域不同空间内插方法之间差异较小,在台站分布稀疏的区域则差异较大[7-8]。
反距离加权插值法以数据点与网格点的距离平方倒数作为权值,距离越大权值越小,反之则越大。距离倒数加权法的优点是算法简单,易于实现。不足是没有考虑数据场在空间的分布,往往会因为采样点的分布不均而使得估值结果产生偏差,也会漏估其最大值、最小值。由于北京市气象局的自动站分布相对均匀,考虑到反距离加权法易于实现,因此在系统中采用的是反距离加权插值法。
2.2 等值线图边界的剪裁技术IDL提供了插值算法函数和绘制等值线轮廓的函数[9]。系统首先要读入所有北京自动观测站的数据,这些站点是离散的,然后利用插值算法函数将离散点转换成一个格点场,再利用等值线轮廓函数对格点场进行处理生成等值线轮廓图,最后叠加北京市的行政区划地图。格点场是一个矩形范围,因而生成的等值线轮廓图也是矩形范围,必须对北京市行政区划范围外的图形进行裁减,才能得到最后的等值线轮廓和北京行政区划底图完全吻合的等值线图。
在系统开发过程中,采用了一种简单的算法来实现图像的裁减。生成的等值线图是栅格图像,由一系列的像素构成,只要将北京行政区划范围外的像素值,全部赋予到等值线轮廓图上对应的行政区划范围外的像素值,就能实现二者的完全吻合。为了提高系统的运行效率,可以将北京行政区划地图上市界外的范围的像素位置和颜色记录下来,保存到一个文件中(我们称为面罩文件,mask文件),然后在每次进行图像裁减的时候直接从该文件中读出这些像素信息即可。
生成mask文件的步骤如下:
① 打开一个和绘制等值线窗口相同大小的窗口;
② 设置该窗口的地图投影方式, 和等值线的方式一样;
③ 读取北京市边界文件, 显示在该窗口中(是一个多边形区域), 注意一定要使该边界文件在窗口的相对位置和等值线和绘图窗口的相对位置保持一致;
④ 设置多边形外面的像素范围为一个颜色A, 多边形内的像素范围为一个颜色B;
⑤ 保存文件为mask。
在等值线程序中调用mask文件的步骤:
① 打开mask文件, 找出颜色等于A的那些像素范围;
② 找出生成的等值线轮廓中的这些像素范围;
③ 将等值线中的这些像素设置为图像的背景颜色。
3 系统功能基于气象观测数据的自动等值线系统中程序代码与数据分离,具有很好的通用性。系统既可以处理实时的自动站观测资料,也能对历史数据进行重新演算并发布结果到WEB上,供气象业务人员进行天气的案例分析。在WEB页面上,用户可以查询历史的等值线图产品,也可以动画播放来查看其演变的趋势。系统主要实现以下功能:
(1) 气象观测数据的实时采集与处理。北京市气象局的自动气象站资料是每分钟更新一次,每分钟上传10次,每次同时传输多个文件。系统利用Linux核心监控进程,对数据采集的目录进行实时监控,只要有新的文件到达,就会启动一个新的子进程对它进行处理,可以同时处理多个文件,保证了数据处理的及时性。
(2) 报文的实时监控。目前北京市气象局一共有188个自动站,每个站报文到达的时间都不一样,监控子系统监控每个站点报文的到达时间, 每5分钟统计一次站点的到达情况,将迟到和未到的站点列出来,供用户浏览。图 3是监控界面。
如图 3所示, 监控子系统列出了每个时次自动站报文的到达情况, 记录每个站的首次到达时间和末次到达时间,如果报文到达时间比它自身的观测时间晚10分钟以上,作为未到站点处理;如果报文到达时间比观测时间晚5分钟以内,作为迟到处理。通过该子系统,还能查询站点报文历史到达情况。
(3) WEB上等值线的动画显示与查询。在WEB页面上,等值线图实时自动更新,提供每小时等值线图和每5分钟的等值线图,可以选择时间段来显示等值线图的序列动画播放,还可以选择日期查看历史时期的等值线图,如图 4(见彩页)所示。
在图 4所示的页面上,用户能选择查看小时风或者5分钟风的矢量图;可以点击“前一天”和“后一天”看历史数据,也可以在选择日期的输入框中填入日期;用户选择开始时间和结束时间可以查看某段时间内的动画;页面默认的是当前1小时内的动画播放;用户也可以选择查看最近1~4小时的动画情况。
(4) 提供基于WEB页面的降水量累计查询的等值线图。用户在WEB页面上输入起始时间和结束时间,就能查询到该段时间内的累计降水等值线图,从而了解到累计降水的总量以及降水的分布,此功能深受预报员好评。如图 5(见彩页)所示。
(5) 小时累计雨量和每5分钟累计雨量的动画显示。当用户输入起始时间和结束时间查询了该段时间内的累计雨量等值线图后,通常会想看看该段时间内的雨量分布情况,雨量集中在哪些时次下的, 分布情况如何。这个时候,就可以利用此功能,选择起始时间和结束时间, 点击动画播放就可以查看这段时间内每小时或每5分钟的雨量等值线图序列动画, 能很好地看出雨量的趋势。如图 6(见彩页)所示。
在这个页面中,用户可以在开始时间和结束时间中输入不同的日期,然后点“查看”按钮,再点击’动画显示的播放按钮,就能查看这段时间内的每5分钟的累计雨量的动画情况。用户可以按照天气过程来选择起始时间和结束时间,然后查看雨量分布的变化情况,从而和预报结果进行对比, 分析天气过程。
4 结束语基于气象观测数据的等值线系统生成等值线的速度很快,平均耗时0.2~0.3秒,而且CP U的占有率也很低,在2%~3%左右;在同时处理多个文件的时候CPU的占有率也只有12%左右;生成的等值线图也很准确、美观;WEB页面能支持200人左右的同时访问,一般的并行访问量都在50人左右,用户主要是气象台、专业台的预报员。系统已经在北京市气象局投入业务使用,运行稳定。该系统功能齐全、界面友好,具有较强的可操作性和实用性,已经成为天气监测的重要手段之一,在预报服务工作中发挥了重要作用。尤其是每年汛期,气象台预报员利用该系统所提供的等值线图产品,能较准确地掌握北京实时降雨量的情况,对气象预报提供了重要的参考信息。2008年北京奥运会期间,来自多个国家的气象专家和预报员一起利用该系统监测北京天气的实况情况,并对预报做出及时的订正,为奥运会提供准确的预报作出了重要贡献。此外,系统的实现不仅为等值线的绘制提供了又一条新思路,也是Linux环境下的气象要素可视化的一个尝试。利用功能强大的IDL来进行气象要素可视化方面的开发应该是一个不错的选择。
张蔺廉, 范其平, 2006. 用规则四方矩阵网格资料分析等值线的一种方法[J]. 气象, 32(6): 75-79. DOI:10.7519/j.issn.1000-0526.2006.06.013 |
况雪源, 2001. GrADS绘图系统在站点等值线中的应用[J]. 广西气象, 22(2): 53-56. |
赵连伟, 柳晓放, 赵远东, 2000. Windows版本NCAR绘图软件包的开发与应用[J]. 辽宁气象, (4): 27-28. |
谢鉴衡, 2004. 江河演变与治理研究[M]. 武汉: 武汉大学出版社.
|
贾宏元, 赵光平, 孙银川, 等, 2006. 基于Surfer Automation对象技术的等值线自动绘图方法研究与应用[J]. 计算机系统应用, (7): 21-24. |
冯锦明, 赵天保, 张英娟, 2004. 基于台站降水资料对不同空间内播方法的比较[J]. 气候与环境研究, 9(2): 2620. |
韩培友, 2006. IDL可视化分析与应用[M]. 西安: 西北工业大学出版社.
|