赵晔晖,廖彬武,梁希豪
(民航宁夏空管分局,宁夏 银川 750009)
目前,民航气象人员判断天气演变趋势使用的气象系统为气象MⅠCAPS系统[1-3],该系统存在如下缺陷:资料更新时间间隔过长,MⅠCAPS 资料3 h 更新一次,而民航气象人员需要未来0.5~2 h 区间的资料。中国气象科研工作者结合信息地理系统[4-6]和计算机技术优势,设计和开发了许多实用的气象数据显示系统。周钦强等[7]通过分析研究实时监控技术,建立自动气象站实时监控模型,开发了自动气象站实时监控系统;李雁等[8]研究了区域自动站特点,设计实现了区域自动站监控系统。这些系统虽然在日常工作中发挥了比较重要的作用,但总体来讲,无法提供机场周边实时的气象资料,如何给预报员提供实时完善的气象资料,尤其是机场周边的气象资料是整个民航气象亟待解决的问题。
为解决以上问题,本文设计开发了气象信息监控系统,能直观地关注机场周边天气实时变化,为预报员决策提供手段和工具。系统采用B/S 架构[9-10]进行设计,结合JavaScript 脚本语言和HTML 编码,使用C#语言开发编码。
程序使用Windows 系统自带的Ⅰnternet 信息服务器作为Web 服务器,结合最新的开发技术相如ODBC、ASP.NET、B/S 模式等进行设计和开发。系统框架结构如图1 所示,分为3 层,分别为展示层、逻辑层和数据访问层,3 层之间相互关联,缺一不可,同时在功能上相互独立,提高了系统的可扩展性。
图1 气象信息监控系统功能结构图
展示层包括站点设置、目录设置、告警阈值设置、显示设置4 部分内容,主要对系统各项参数进行设置。用户在系统通过站点设置,确定系统显示的站点位置和数量,目录设置主要功能是通过设置默认输出目录,将数据自动保存到本地磁盘中。系统采用浏览器/服务器模式(B/S)进行设计,在网页上对气象信息进行监控显示,告警阈值主要功能是当站点某个要素超过所设阈值时,系统显示告警,同时将告警信息记录在后台,用户可对近期一段时间内的告警信息进行查询分析。
逻辑层由自动站资料、自动观测资料、数据库资料、遥测资料、读取解析、加载显示6 部分组成。系统要处理的资料包括4 部分:气象局自动气象站资料、机场自动观测系统资料、民航气象数据库资料和机场遥测系资料,设置一进程,对上述4 种资料进行解析,提取各个站点的气象数据和经纬度坐标,根据坐标将气象数据显示在百度地图上。系统默认每5 min 更新一次数据,为避免加载整个地图,采用JQuery AJAX异步刷新技术,更新站点数据而不加载整个地图。
数据访问层包括数据访问模块、气象数据、ODBC数据库访问、SQL SERVER 数据库、.XML 图表、移动终端6 部分,访问层主要功能:使用SQL SERVER 2010 数据库存储数据,采用ODBC 数据库访问技术读取气象数据,设置一进程,将数据下入XML 文件中,Fusionchat 插件通过读取XML 数据,在地图上以图表形式显示近期特殊天气。
气象信息监控系统读取宁夏地区各县市自动气象站数据和机场实况天气报告,并提取、解析,根据经纬度坐标,将数据显示标注在百度地图中,用户鼠标经过该地区会自动显示重要数据,当用户点击该图标时,系统会弹出窗口,显示该地区详细天气信息。用户还可以通过访问民航气象数据库系统,统计本场近1年来天气变化趋势,使用Fusionchart 插件以图表形式将天气变化趋势直观显示出来。同时,由于宁夏地区站点较多,设计一个搜索对话框,用户输入要查询的地点点击搜索,直接定位到该站点。
气象信息监控系统分3 部分进行设计,分别为本地气象自动站数据模块、河东机场气象要素监控模块、系统设置模块,系统采集宁夏地区自动站数据和河东机场自动观测系统数据,对数据进行分析处理,根据用户需求将数据以合理的方式显示在百度地图上,系统功能结构如图2 所示。
图2 气象信息监控系统功能结构图
本地气象自动站数据。对宁夏地区各县市的气象自动站数据进行读取,数据在网页上进行显示,设置一定时期数据,每10 min 自动更新一次。为有效监控自动站数据,地图上有数据的气象站添加红色覆盖物,无数据的则不添加,通过红色覆盖物判断站点资料是否完整。设置一导航按钮,查看完其他地方的数据后,点击导航按钮,返回默认地点。地图精细化等级为7级,可精细化至县一级,用户双击鼠标可对地图进行缩放,鼠标单击各站点,会显示温度、湿度、风向、风速、气压、云高、雨量等详细气象要素。为方便查找站点,设置一检索按钮,用户输入地点,点击检索,地图会自动定位到该地点,并显示相关气象数据。
河东机场气象要素监控。主要功能读取机场气象自动站资料和机场观测员发报的实况报文,显示在百度地图上。为方便用户使用,网页上显示最近3 h 内的气象数据。若本场出现复杂天气如大风、扬沙时,告警信息会显示Web 网页上,提醒预报员。系统自动统计每天的告警次数,以文档的方式记录在后台。
系统设置。主要功能是管理本地气象自动站数据,设置系统相关参数,实现对气象自动站站点的增加、删除和修改功能。对报表默认输出目录进行设置,以便用户进行天气复盘。对复杂天气进行报警阈值设置,如风速大于10 m/s,能见度小于800 m 等,达到告警阈值时,页面出现告警信息。数据显示设置,设置页面显示哪种气象要素,如显示风向风速、能见度等。
当复杂天气发生时,气象预报员短时间内工作量急剧上升,需要分析的资料比较多,涉及到多个不同的气象系统如气象自动站系统、气象数据库系统、本场遥测系统等,容易造成预报员工作的失误。为进一步提升预报工作质量,使预报员能够及时掌握最近一段时间内天气变化情况,气象信息监控系统通过访问气象数据库系统、气象自动观测系统、气象遥测系统数据,使用图表Fusionchart 插件,结合XML 语言、JavaScript 脚本语言,将最近一段时间内发生的复杂天气(低能见度、强沙尘暴等)以图形界面的方式直观显示在界面上。函数TransDataToXml 访问气象数据系统表rpt01_cac,读取表中的气象信息,转化成XML数据形式。函数TransAwosToXml 读取气象自动观测系统六要素数据压、温、湿、风向、风速、雨量,转化成XML 数据形式。函数TransYaoceToXml 读取气象遥测系统六要素数据压、温、湿、风向、风速、雨量,转化成XML 数据形式。XML 转换完毕后,将数据传递给后台,利用JavaScript 脚本语言读取处理后台数据,处理完毕后通过Fusionchart 插件进行绘图,以图表的方式显示在百度地图上,动态显示数据变化。
以银川河东机场为例,若本场出现复杂天气如大风、扬沙时,告警信息会自动显示在Web 网页上,提醒预报员。系统自动统计每天的告警次数,以文档的方式记录在后台。设置一函数GetⅠnfoFromDataBase 检索气象数据库系统,GetinfoFromAwos 读取自动站气象数据六要素,将取到的数据返回Web 前端,前端通过JavaScript 脚本语言处理数据,通过数据解析分解提取各个要素,结合经纬度坐标将数据准确地显示在百度地图对应的各级站点。使用AJAX 局部页面刷新技术,用户鼠标移动至该站点时,自动刷新该站点部分常规数据,若用户想进一步了解详细信息,双击该站点,会看到该站点的详细信息。机场周边若突然发生复杂天气(大风、强沙尘暴、低能见度等),系统会有告警提醒,并以醒目的颜色标注在地图上。
JQuery AJAX 页面局部刷新技术。在气象信息监控系统中,鼠标经过相关站点时,显示该站点的最新数据,只刷新一个站点,其他站点数据不刷新,采用传统技术时,刷新一个站点,整个网页页面所有的站点必须刷新,地图所有资源重新加载,导致资源浪费,系统响应速度慢。为解决这一问题,采用AJAX 页面局部刷新技术。AJAX(Asynchronous JavaScript And XML)即异步JavaScript 和XML,是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量的数据交换,实现网页异步更新,在不加载整个网页的情况下加载部分网页。主要优点:实现客户端的异步请求操作,在不需要刷新页面的情况下与服务器进行通信,减少用户的等待时间,减轻服务器和带宽的负担,提供更好的服务响应。本系统中,鼠标移动到站点时,触发函数在Web 前端调用后台进程读取数据,读取的数据直接返回给前端进行显示,不需要加载整个系统就能刷新站点资料。
覆盖物MARKER 标志嵌入技术。系统通过加载百度MARKER 覆盖物技术,实现各气象站点的气象信息显示。标志物MARKER 根据经纬度坐标,在系统地图初始化时加载到各个站点,每个站点的覆盖物设置为静止的椭圆形,MARKER 覆盖物响应鼠标移动,当鼠标移动至覆盖物时,触发鼠标移动函数读取气象数据,并显示气象信息。若想要进一步了解详细气象信息,点击覆盖物,触发鼠标点击函数,通过弹出的对话框,显示该站点的详细数据。具体实现过程通过调用百度地图JS 离线包或者在线包:①根据各个站点提供的经纬度坐标,加载覆盖物MARKER 到地图上,由于站点较多,采用数组存放经纬度坐标;②在各个覆盖物上添加鼠标移动和点击的响应函数StrMouseMove 和MouseMoveAndClick;③响应函数,读取数据并显示。
本系统运行环境为Windows7 操作系统,采用面向对象思想进行设计,前台开发语言为C#,结合JavaScirpt 脚本语言、JQuery AJAX、Fusionchart 插件开发完成该系统,实现气象信息的实时显示、局部刷新、统计分析等功能。
本文提出一种以直观方式显示银川河东机场周边站点天气变化的系统,系统通过服务器端访问气象自动站和机场气象数据库,数据通过JSON 格式采用AJAX 异步传输技术传递到浏览器端,浏览器端利用经纬度和百度地图APⅠ将各个站点气象数据在地图上显示出来。在百度地图应用方面,主要采用百度地图的加载、MARKER 覆盖物添加、函数响应、地理信息获、Fusionchart 绘图等技术,并给出了相关代码。在气象要素的显示方面,主要实现了区域内各自动站气象要素的提取、访问、解析以及快速展示,机场气象数据库气象要素的访问、展示、统计,分析最近一段时间的复杂天气等功能。同时为加快数据响应,实现鼠标移动时局部站点气象信息刷新,本系统采用AJAX异步传输技术,在不重新加载百度地图的情况下,实现单个站点更新气象数据,克服了全部站点一起更新系统响应慢的问题,使得页面加载速度非常迅速,在日常业务应用中效果明显。