航空气象数值预报释用系统的设计与实现

2014-11-19 00:35朱剑明
电脑知识与技术 2014年30期

朱剑明

摘要:采用B/S结构,结合DIV+CSS页面布局,使用JAVA、Javascript和批处理等编程语言,设计并开发了基于JSP+AJAX技术的航空气象数值预报释用系统。该系统依据使用方便、稳定可靠、可扩展性强的设计原则,实现了多种不同数据源数值预报资料的产品制作与发布功能,可以支持随时动态修改产品类型和数据源,采用Javascript+AJAX技术实现了局部刷新和动态切换产品的功能,极大地提高了用户体验。该系统解决了民航地方机场气象台使用数值预报产品不方便的问题,提供了最新而且齐全的航空气象数值预报产品,并且可以让预报员在多种数据源产品之间进行对比分析,在保障航空飞行安全,提升预报效率上有一定的贡献。

关键词:数值预报;释用;航空气象;局部刷新; JSP

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)30-7090-04

目前,民航各地区空管系统气象台以及各地方机场气象台使用数值预报系统的产品多是由民航气象中心下发的GRIB格点资料和WAFS资料。而所用解析软件是民航预报业务平台。民航预报业务平台产生的产品多为通用数值预报产品,如风温湿等常规预报产品。鉴于航空气象的特殊性和地域性,现各个地方机场气象台对数值预报产品的需求倾向于更贴近航空飞行和地域特性的数值预报产品。而数值预报资料多用民航ATM网络和进行传输,并使用民航气象数据库系统进行收集和转发,由于各个机场气象台系统的资料由一定差异性,看到的数值预报产品也有较大差距。而且现如今仍有许多地方机场气象台未配备民航气象数据库系统和民航ATM网络,无法查看以及使用数值预报产品。在软件上各个地方机场气象台多使用C/S架构的软件,不仅根据系统的不同(如windows 7,windows XP, Linux等)会在软件兼容性上出现问题,而且软件的更新及维护也极为不便,很多地方机场气象台仍使用较老版本的软件而不能获得更好的产品。

鉴于这些现状,采用B/S结构的航空气象数值预报系统应运而生。采用B/S结构能够让地方气象台只需网络连接通畅,打开浏览器即可获得最新并且齐全的航空气象数值预报产品,并且系统易于维护和升级,能够有效的提升数值预报产品利用率和气象预报的丰富性。

1 系统介绍

航空气象数值预报释用系统数据源采用NCEP提供的0.5x0.5°的GFS数值预报资料、WAFS资料、日本气象厅数值预报资料以及网格资料等,并通过解码、插值、计算等一系列过程而得到的航空气象数值预报产品。逐步增加了目前国内外业务运行最先进的一系列数值预报模式产品,主要有:WAFS(World Area Forecast System)、GFS(Global Forecast System)、ECMWF-thin细网格、T639-thin细网格、GRAPES、Japan-thin细网格资料。

为了保证信息安全,系统数据资料直接从四川省气象局信息服务器中和西南空管局气象中心数据库系统中获取,每天定时自动得到00、06时、12时和18时(UTC)资料,通过数据解码、计算,最后利用绘图软件NCL(NCAR Command Language)批处理得到1000X1000像素的高质量png格式图片。目前主要得到的输出产品有:中国区域的积冰强度、颠簸强度、高空急流、地面阵风、夏季强对流指数(包括螺旋度,CAPE指数、LIN指数等)的诊断预报图,以及常规天气分析图,包括地面、高空各个高度层的风温湿、海平面气压预报图等等,各个主要航站气象要素的垂直廓线和时间序列等。

2 系统设计

2.1 设计原则

2.1.1 数据来源丰富原则

由于数值预报的资料来源较多,并且各个资料有一定的差异性,所以采用多数据来源的产品能够帮助预报员在多种数据源产品之间进行对比分析,能够有效提升航空气象预报的准确性。所以系统采用的数据源有WAFS(华盛顿中心)、WAFS(伦敦中心)、GFS(Global Forecast System)、GRAPES、ECMWF-thin细网格、T639-thin细网格、GRAPES、Japan-thin细网格资料。

2.1.2可扩充原则

由于气象资料类别众多,且随时会根据用户的需求发生变化,系统设计为动态添加产品,每一个大类的jsp均有一个相对应的配置文件。由于产品添加多由预报员自己修改,为了方便预报员修改配置,本系统配置文件采用Microsoft的Access数据库文件如图1。预报员只需后台修改产品配置文件即可实现添加删除修改产品的功能。

2.1.3易用原则

系统功能上充分考虑到用户的使用体验,界面设计上将功能模块一目了然的呈现在用户面前,产品显示为1000px*1000px的高像素图片,并且可以点击查看大图。系统采用了较多javascript效果方便用户进行产品迅速查看和切换。如键盘上下左右键可以切换产品高度层和预报时效,点击图片左右两面可以前后调整预报时效等。

2.1.4效率原则

由于系统每6个小时需要对大量数值预报数据进行处理计算并生成品种多样的产品,所以对部署的服务器系统运行效率要求非常高。所以本系统的资料处理服务器和WEB系统服务器采用稳定的服务器版Linux。资料处理程序是无图形界面后台批处理程序,执行效率非常高,保证了资料的及时处理和产品发布。

2.1.5专注原则

由于系统为航空气象数值预报系统,在产品上更多的考虑为保障航空安全需求的气象特色产品,比如产品的高度层(150 hPa -925 hPa )和产品种类(颠簸积冰、积雨云等)。

2.2 结构设计

系统采用B/S结构, B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件,只要有一台能上网的电脑就能使用,客户端零安装、零维护。endprint

系统的扩展非常容易。现如今B/S结构的使用越来越多,特别是由需求推动了AJAX技术的发展,它的程序也能在客户端电脑上进行部分处理,从而大大的减轻了服务器的负担;并增加了交互性,能进行局部实时刷新。系统采用AJAX技术进行局部刷新,可以提高气象产品的浏览速度和用户体验。

系统采用流行的三层架构,即表现层,业务逻辑层和数据层。表现层主要为将产品展示给用户,业务逻辑层主要为连接表现层和数据层的中间件,而数据层则是负责获取产品数据。

2.3 功能设计

系统采用模块化和多样化的功能设计,如图2将不同数据源的产品分类,并且不同数据源生成的产品也略有不同。

WAFS航空要素:分别有伦敦和华盛顿中心资料生成的颠簸、积冰和积雨云预报产品。

WAFS形势预报:分别有伦敦和华盛顿中心生成的形势预报产品,如风温湿、高空急流、低空急流、最大风速层高度、对流层高度及温度。

T639预报、日本预报、GRAPES预报、欧洲细网格、GFS:分别有形势预报、要素预报和机场预报。形势预报主要有风温湿、急流、地面气压等。要素预报主要有地面对流降水预测、地面总降水预测、高低中云覆盖率和总云覆盖率等。而机场预报主要是对一些机场如成都、重庆、昆明、贵阳等机场的具体产品,如总运量及降水量、10米风及2米温度、温度对数压力图等。

2.4 流程设计

系统流程如图3,通过批处理程序从四川省气象局和西南空管局气象中心数据库将所需要的各种气象资料取回本地服务器,再通过定时批处理程序调用作图软件对取回的气象资料进行处理并作出产品文件。然后将产品文件以一定的命名格式输出到系统部署的服务器上。部署在服务器上的WEB系统通过读取配置文件获得产品类别和产品命名规范后,将产品以图片的形式分类显示在系统上。

系统WEB页面载入流程如图4。

3 系统实现

3.1 关键技术

3.1.1 Javascript

JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML(标准通用标记语言的子集)网页添加动态功能,比如响应用户的各种操作。它是一种动态、弱类型、基于原型的语言,内置支持类。

系统采用Javascript来动态生成产品序列菜单,根据用户的配置文件里的产品内容生成产品种类和具体产品名字。

由于运行环境为Linux系统,所以采用了一个Java访问Access数据库的开源包Jackcess.jar。Jackcess是一个纯Java包用于读取和写入MS Access数据库。

1) 产品名称及种类动态生成:

<% String path1=request.getRealPath("/");

Table table = Database.open(new File(path1+"config.mdb")).getTable("config");

for(Map row : table) {

int b = row.get("periodtime");}

for(int i =0;i<11;i++){

String theid = "xiao"+b;%>

<%b=b+3;}%>

3) 利用Javascript对键盘操作进行监测:

为了方便预报员对产品的前后对比更加方便,预报时效的切换可以使用键盘的左右键或者在产品上左右区域点击进行前后时效的切换。

修改键盘左右键功能部分代码:

event = event ? event : (window.event ? window.event : null);

if (event.keyCode==37){ left();//切换前一时次}

if (event.keyCode==39){ right();//切换后一时次}

4) 图片上左右区域点击切换部分代码:

function preornext()

{var ObjectX = 0;

ObjectX =event.offsetX;

var www = document.getElementById("imgjk").width;

if(ObjectX

else{right();//切换后一时次}}

3.1.2 AJAX页面局部刷新技术

AJAX即“Asynchronous Javascript + XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

系统采用AJAX局部刷新页面技术可以让气象产品不刷新整个页面的情况下进行更新,这样大大减少了系统负载,使系统在多用户频繁的访问下能够自如的传输和展示数据。并且也减少了网络传输的压力,可以使用户在较小的网络带宽下也可以顺利使用本系统。

当用户进行产品切换的操作时,表现层将操作反馈到业务逻辑层,业务逻辑层再将数据层相对应的产品反馈到表现层,而表现层将产品利用AJAX的InnerHTML方式写入对应DIV层的IMAGE控件中,实现局部产品图片刷新,而整个页面无需刷新。

4 结束语

航空气象数值预报释用系统实现了对多种数据源的数值预报资料进行处理并发布产品的功能,为用户提供了良好的交互界面,使其可以查看多种数据源的航空气象数值预报产品,并可以进行对比分析。系统利用配置动态生成产品菜单和种类,极大的方便了产品制作人员随时进行产品的修改和更新。

系统采用B/S结构使用户无需安装任何客户端软件只要具备浏览器就可以使用本系统。系统的分层结构设计具有可扩展性,在以后功能扩展上更方便。系统于2013年8月开发完成并部署在服务器的Linux系统上试运行,至今运行稳定,并不断根据用户需求开发和更新数值预报产品,改进用户体验,用户普遍反映使用方便,资料种类齐全,产品制作及时,使航空气象服务效率和质量显著提高。

(下转第7105页)

(上接第7093页)

参考文献:

[1] 明日科技,卢瀚,王春斌.JAVA WEB 开发实战 1200 例:第 II 卷[M].北京:清华大学出版社,2011.

[2] 张宇,尹嫦姣,许英杰.数值预报及实况资料数值化系统研究和应用[J].黑龙江气象,2013,30(2): 13-15.

[3] 刘中兵.开发者突击:Java Web 主流框架整合开发: J2EE+ Struts+ Spring+ Hibernate[M].北京:电子工业出版社,2011.

[4] 李茂达.基于 J2EE 平台的气象信息系统框架设计[J].气象科技,2009,37(3):363-368.

[5] 钱莉,杨晓玲,殷玉春.ECMWF 产品逐日降水客观预报业务系统[J].气象科技,2009,37(5): 513-519.

4) 图片上左右区域点击切换部分代码:

function preornext()

{var ObjectX = 0;

ObjectX =event.offsetX;

var www = document.getElementById("imgjk").width;

if(ObjectX

else{right();//切换后一时次}}

3.1.2 AJAX页面局部刷新技术

AJAX即“Asynchronous Javascript + XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

系统采用AJAX局部刷新页面技术可以让气象产品不刷新整个页面的情况下进行更新,这样大大减少了系统负载,使系统在多用户频繁的访问下能够自如的传输和展示数据。并且也减少了网络传输的压力,可以使用户在较小的网络带宽下也可以顺利使用本系统。

当用户进行产品切换的操作时,表现层将操作反馈到业务逻辑层,业务逻辑层再将数据层相对应的产品反馈到表现层,而表现层将产品利用AJAX的InnerHTML方式写入对应DIV层的IMAGE控件中,实现局部产品图片刷新,而整个页面无需刷新。

4 结束语

航空气象数值预报释用系统实现了对多种数据源的数值预报资料进行处理并发布产品的功能,为用户提供了良好的交互界面,使其可以查看多种数据源的航空气象数值预报产品,并可以进行对比分析。系统利用配置动态生成产品菜单和种类,极大的方便了产品制作人员随时进行产品的修改和更新。

系统采用B/S结构使用户无需安装任何客户端软件只要具备浏览器就可以使用本系统。系统的分层结构设计具有可扩展性,在以后功能扩展上更方便。系统于2013年8月开发完成并部署在服务器的Linux系统上试运行,至今运行稳定,并不断根据用户需求开发和更新数值预报产品,改进用户体验,用户普遍反映使用方便,资料种类齐全,产品制作及时,使航空气象服务效率和质量显著提高。

(下转第7105页)

(上接第7093页)

参考文献:

[1] 明日科技,卢瀚,王春斌.JAVA WEB 开发实战 1200 例:第 II 卷[M].北京:清华大学出版社,2011.

[2] 张宇,尹嫦姣,许英杰.数值预报及实况资料数值化系统研究和应用[J].黑龙江气象,2013,30(2): 13-15.

[3] 刘中兵.开发者突击:Java Web 主流框架整合开发: J2EE+ Struts+ Spring+ Hibernate[M].北京:电子工业出版社,2011.

[4] 李茂达.基于 J2EE 平台的气象信息系统框架设计[J].气象科技,2009,37(3):363-368.

[5] 钱莉,杨晓玲,殷玉春.ECMWF 产品逐日降水客观预报业务系统[J].气象科技,2009,37(5): 513-519.

4) 图片上左右区域点击切换部分代码:

function preornext()

{var ObjectX = 0;

ObjectX =event.offsetX;

var www = document.getElementById("imgjk").width;

if(ObjectX

else{right();//切换后一时次}}

3.1.2 AJAX页面局部刷新技术

AJAX即“Asynchronous Javascript + XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

系统采用AJAX局部刷新页面技术可以让气象产品不刷新整个页面的情况下进行更新,这样大大减少了系统负载,使系统在多用户频繁的访问下能够自如的传输和展示数据。并且也减少了网络传输的压力,可以使用户在较小的网络带宽下也可以顺利使用本系统。

当用户进行产品切换的操作时,表现层将操作反馈到业务逻辑层,业务逻辑层再将数据层相对应的产品反馈到表现层,而表现层将产品利用AJAX的InnerHTML方式写入对应DIV层的IMAGE控件中,实现局部产品图片刷新,而整个页面无需刷新。

4 结束语

航空气象数值预报释用系统实现了对多种数据源的数值预报资料进行处理并发布产品的功能,为用户提供了良好的交互界面,使其可以查看多种数据源的航空气象数值预报产品,并可以进行对比分析。系统利用配置动态生成产品菜单和种类,极大的方便了产品制作人员随时进行产品的修改和更新。

系统采用B/S结构使用户无需安装任何客户端软件只要具备浏览器就可以使用本系统。系统的分层结构设计具有可扩展性,在以后功能扩展上更方便。系统于2013年8月开发完成并部署在服务器的Linux系统上试运行,至今运行稳定,并不断根据用户需求开发和更新数值预报产品,改进用户体验,用户普遍反映使用方便,资料种类齐全,产品制作及时,使航空气象服务效率和质量显著提高。

(下转第7105页)

(上接第7093页)

参考文献:

[1] 明日科技,卢瀚,王春斌.JAVA WEB 开发实战 1200 例:第 II 卷[M].北京:清华大学出版社,2011.

[2] 张宇,尹嫦姣,许英杰.数值预报及实况资料数值化系统研究和应用[J].黑龙江气象,2013,30(2): 13-15.

[3] 刘中兵.开发者突击:Java Web 主流框架整合开发: J2EE+ Struts+ Spring+ Hibernate[M].北京:电子工业出版社,2011.

[4] 李茂达.基于 J2EE 平台的气象信息系统框架设计[J].气象科技,2009,37(3):363-368.

[5] 钱莉,杨晓玲,殷玉春.ECMWF 产品逐日降水客观预报业务系统[J].气象科技,2009,37(5): 513-519.