基于CIMISS的海南气象信息服务网设计与实现

2022-03-30 07:13杜建华王立俊王双双
计算机测量与控制 2022年3期
关键词:服务网气象预警

杜建华,王立俊,王双双

(1.海南省气象信息中心,海口 570203;2.海南省南海气象防灾减灾重点实验室,海口 570203)

关键字:气象数据;数据共享;数据集约化;数据可视化;云架构

0 引言

近年来,我国气象综合探测系统建设日趋完善,气象部门已经形成了地基和空基相结合的大气及其相关环境探测体系,包括常规地面、高空、辐射、酸雨、农业气象观测、大气本底观测站和其它许多特种观测站网在内的观测体系[1],上述气象数据为做好社会和公众的气象预报、预警服务奠定了坚实的数据支撑。范保松、李娇等人研发的气象信息服务系统,采用“云+端”模式,通过智慧气象盒将气象数据推送到展示平面,为社会公众提供智能化、智慧化的气象服务[2]。陕西、内蒙古、辽宁、吉林等省市气象局均开展了面向公众的信息服务网建设工作,均取得一定的示范作用[3-6]。

随着海南省气象业务的快速发展和社会公众对气象服务需求的日益增大,气象资料及业务产品的综合显示需求也日益迫切。目前,我省存在传统气象资料以文件格式存储在不同网络区域的存储设备中,各业务系统之间的数据格式和流向不统一,数据使用效率较低等问题,急需建设一个以统一数据源为气象基础数据的气象信息服务网。

结合我省气象信息化业务的实际需求,海南省气象局基于中国移动云eCloud的云服务架构[7],搭建以CIMISS系统[8-9]为数据支撑环境的海南气象信息服务网,实现气象数据和业务产品的集约化和可视化,为业务用户和社会公众提供统一、丰富的气象数据展示服务。

1 总体设计

本文设计的信息服务网以中国移动云eCloud平台的云服务器为硬件支撑,使用CIMISS系统作为统一数据源,采用MVC分层设计模式[10-11]和Browser/Server设计架构[12-14],基于高德地图应用编程API[15-16]的Web GIS可视化技术和SSH开发框架[17-20],实现气象观测数据及业务产品的综合展示,满足业务人员及社会公众对气象数据及产品的业务需求。

系统总体架构如图1所示,系统遵循气象信息标准化体系和信息安全与保障体系的要求,采用四层体系架构:1)基础数据层、业务层、服务层和应用层。基础数据层用于汇集各类数据,通过CIMISS系统接入观测数据、预报产品等数据,并依托CIMISS系统建设一个统一数据源平台;2)业务层用于收集、解码入库和存储地面、高空、大气成分等结构化数据及天气雷达、卫星云图等非结构化数据,并封装成CIMISS系统中的MUSIC服务接口形式向外提供服务;3)服务层用于将各类气象基础数据再加工成综合展示所需的各类服务信息及产品,并封装成API服务接口供前端应用使用;4)应用层是通过移动端和Web端应用实时向省、市、县三级业务及管理人员和政府、军队等单位提供各类气象服务。

图1 系统总体架构

1.1 系统业务流程

系统业务流程主要分为实况数据展示、预报预警服务、气象决策服务和气象服务专报四大部分,实现气象观测、预报预警和业务产品等数据的共享服务和综合显示。

1.1.1 实况数据展示

按照十四大类气象资料的分类要求,系统采用资源编目统一对观测业务、预报预警及台风路径等数据及产品进行管理,并通过Web GIS、图片等格式实时显示上述数据及产品。

1.1.2 预报预警服务

根据气象预报、预警的内容进行分类,预报可分为陆地海洋、市县天气、乡镇天气和旅游天气等类型,预警可分为台风、暴雨、雷电、大雾等类型。系统采用信息栏目方式管理上述各类服务内容,通过Word及txt等文档、PNG和JPG图片、Web GIS等格式实时显示预报、预警内容。

1.1.3 气象决策服务

为政府部门、军事部门、社会团体等组织提供防灾减灾救灾、军事活动或其他特殊任务所需的各类气象信息。系统通过单点授权登录方式,分级管理不同用户的访问权限,由气象部门相关人员制作决策材料,为上述部门提供气象决策服务。

1.1.4 气象服务专报

按照服务受众的气象需求,定期制作和发布气候分析专报、农业气象专报、环境气象专报及生活指数等气象产品,为社会公众提供多样化的气象服务产品。

1.2 系统数据流程

系统的统一数据源为CIMISS系统(提供MUSIC数据接口)和本地特色服务产品库(提供本地数据接口及产品存储归档目录),涉及到的数据类型主要有地理数据、气象观测数据、预报预警产品、系统公告信息等。在系统数据流程中,后台数据处理节点分别采用MUSIC数据接口、高德地图API接口、产品库Web Service数据接口和FTP协议接口等方式来获取综合展示的数据,大致分为如下几种场景:

1)调用MUSIC数据接口获取CIMISS系统中实时观测数据,在综合观测页面中展示。

2)调用高德地图API接口获取海南省地图矢量数据,叠加实况观测、预报预警等数据,在系统门户页面中展示。

3)调用本地产品库Web Service数据接口和FTP协议接口将其他气象数据和业务产品采集至本地业务综合数据库,在系统门户页面中进行展示。

根据数据特性来决定数据存储的方式,分析、总结各类气象数据,制定相应的存储方式,再通过统一、规范的接口对外提供数据服务,系统的业务数据存储流程如图2所示,主要分为以下几个过程:1)数据收集:分发模块CTS通过文件传、消息和流传输等方式实时收集台站的各类气象数据,数据达到省级节点后,由CTS中的快速质控程序进行格式检查后,再分别分发至国家级节点和数据加工处理模块DPC。2)解码入库:根据定好的资料四级编码,DPC实时解析分发过来的数据,由数据简约处理程序来解析、入库地面、高空观测等结构化数据,而诸如雷达、卫星云图等非结构化数据由数据存储管理模块SOD上的处理程序负责解析和入库。3)数据监控:CIMISS中各模块的运行告警信息DI/EI实时推送至综合业务监控模块MCP,由其统一进行监控及告警。4)数据服务:通过统一、规范的MUSIC接口形式封装数据库数据,向业务单位和外单位提供数据调用服务。

图2 系统业务数据流程

2 关键技术

2.1 云服务架构

目前,云计算架构的分层主要划分为基础设施层IaaS、平台层PaaS和软件服务层SaaS三个层次。其中,基础设施层旨在能够按需向用户提供相应的计算能力、存储能力和网络能力等IT基础设施类服务;平台层是通过互联网为用户提供一整套开发、运行和运营应用软件的支撑平台;软件服务层则是通过互联网提供软件服务的软件应用模式[9]。

中国移动云的服务架构具有良好的基础支撑体系和安全防护标准:1)建有N个集中节点、31个升级属地化节点和X个边缘节点的全域资源布局,全局智能流量调度和调优;2)提供多类安全服务和通信级安全体系保障。因此,本文研发的信息服务网以中国移动云eCloud为应用支撑层,使系统具备部署快捷、安全可靠和维护简单等特点,较好地解决了业务系统部署分散、资源监控繁杂等问题。

2.2 高德地图

高德地图是国内围绕地理位置数据提供服务LBS(Location Based Services)的服务商,专注地图,拥有国家甲级测绘资质和先进的数据融合技术及海量的数据处理能力,超过6 000万个POI,790万公里道路数据,向广大应用开发者提供覆盖移动端和Web端的、使用便捷的开发工具[14]。

高德地图支持7大类别、百余种地图元素的颜色纹理和标注个性化定制服务,可叠加地图路况、卫星图等图层,良好地支持点、线、面绘制,精确地展示业务数据的位置信息,也可灵活地调用离线与在线两种地图样式[15]。

各类行业用户可通过高德地图进行基于地理位置的定位、导航、位置搜索以及周边检索等各类应用;开发人员可以利用高德地图API/SDK服务接口调用地理信息服务,将“高德地图”的地图服务资源嵌入到已有的各类业务系统(网站)中。

2.3 SSH框架

本文研发的海南气象信息服务网使用浏览器/服务端Browser/ Server开发模式,可跨平台实时展示气象观测、预报预警服务等数据及产品,并采用SSH(Struts 2、Spring和Hibernate)框架技术,较好地对系统中的各功能模块分层、解耦,简化系统开发的复杂度,减少系统研发周期,使系统具备良好的可拓展性和可移植性。

如图3所示,Struts 2是以Webwork为核心的逻辑控制器,采用拦截器机制来响应前端用户提交的web请求,将Servlet与业务逻辑控制器分离[16]。Spring是属于轻量级的Java Web框架,基于IOC容器技术,通过配置文件及事务管理机制,可灵活管理多种数据库,提供多元化的业务逻辑[17]。Hibernate采用O/R Mapping技术,通过配置XML文件或Annotation注解为Java对象和各类数据库中的表结构建立一种或多种映射关系,操控对象即操作数据库[18]。

图3 SSH框架结构原理图

3 功能设计

海南气象信息服务网主要分为首页、预报预警、气象监测、台风路径、决策服务、气候分析和专业气象和系统管理8个功能模块,如图4所示。

图4 系统功能组成

1)首页:

首页是各类信息的综合展示,系统提供各功能模块的导航,可快速进入到各个功能模块。在首页上,用户可获取各市县当前降水及气温等要素实况及24小时趋势图、全省实况填图、雷达云图、预警信号等信息。

2)预报预警:

预报预警用于定期发布各类气象预报和滚动发布及更新预警信号。用户可在页面查阅陆地海洋、市县和乡镇等常规预报产品,旅游、岛礁和港口等特色预报产品,暴雨、雷电和大雾等预警信号。

3)气象监测:

综合观测主要通过Web GIS、图片等方式来显示各类地面、雷达和云图等实况观测数据。常见气象要素有气温、气压、降水、风向风速和相对湿度,数据类型有自动站、辐射观测、土壤水分等地面站点资料,多普勒、风廓线等雷达资料,风云2号、风云4号及极轨卫星等图片资料。

4)台风路径:

台风路径是基于高德地图Web GIS展示当前及历史台风的强度、风力风圈、路径等信息。在台风天气过程中为社会公众和业务人员提供台风的预报信息,提前发布预警信息,有助于防灾减灾,减少人员伤亡和经济损失。

5)决策服务:

决策服务是制作、发布气象决策材料,满足政府部门、军事部门、社会团体等组织开展活动对气象信息的业务需求。在活动服务过程中,制作人员和使用人员需通过系统的权限验证后,方可阅览相应的决策材料。

6)气候分析:

气候分析是通过Word文档形式向社会公众提供高温监测、暴雨监测、干旱监测等中长期气候公报,为森林防火、农业生产、建筑施工等提供气候预测信息,便于做好长期工作计划。

7)专业气象:

专业气象是通过Word、PDF等文档形式向社会公众提供生活指数、环境气象、农业气象和气象科普等服务产品,满足上述人员对专业气象信息的业务需求。

8)系统管理:

系统管理是为管理员提供功能模块、系统用户、站点管理及信息发布等部分的管理功能,便于管理员对上述内容进行维护更新,保证系统各模块正常运行。

4 系统实现

4.1 运行环境

系统运行环境需要4台服务器,操作系统均为Windows 2012 Server SP2 64bit,分别是Web应用服务器、数据库服务器、数据采集服务器和数据加工服务器。Web服务为Apache Http Server,文件服务是通过FTP协议访问文件,使用Surfer 8软件在地图上绘制图像。

其中,Web应用和数据库服务器是部署在移动eCloud云平台上的云主机,依托平台高可靠、高安全的备份和安全防护能力,定期对云主机进行数据备份,实现云平台区域节点故障时,可快速迁移至云平台其他区域节点,通过数据备份快速恢复业务;同时,可根据实际业务需求,弹性扩展云主机的硬件资源。为实现数据的快速交互,数据采集和数据加工服务器部署在省局业务交换区中,使用虚拟机作为备用节点,处理程序版本升级时,同步物理机和虚拟上的部署程序,用于主节点异常时,备用节点可无缝切换来提供服务。

4.2 系统部署

系统部署如如图5所示,业务核心区和交互区位于省局内部,通过内部气象专线交互数据,eCloud云平台和外部用户位于外网区,内外网之间部署有边界防火墙,实现内外网流量控制和访问控制。

图5 系统部署

CIMISS系统负责收集、解析入库全省的地面、高空等观测数据,并提供MUSIC数据服务接口。位于业务交互区的数据及和加工服务器,通过本地产品库的Web Service和MUSIC服务接口快速地获取所需数据,加工、处理上述数据,生成展示数据存储至云端的数据库服务器中,封装成系统API服务接口对外提供访问。Web应用服务器则根据所设计的各数据展示模块,实时调取API接口获取所需数据,以文档、图片或Web GIS等方式将数据呈现给前端用户。

4.3 系统设计

1)数据采集及加工:

在业务交互区中的数据采集和加工服务器上部署数据采集和加工程序,该程序通过数据分类处理、压缩推送等过程实时采集、加工CIMISS接口和其他数据,并将处理后的数据实时推送至eCloud云平台上的数据服务器中,由其进行数据存储。因此,根据业务场景中的数据采集流程,设计如下的数据处理及推送模块,通过匹配数据的唯一标识(四级编码)来选择数据的处理及推送方式,具体代码如下:

public int dataProcessByType(HashMap dataObject){

//参考返回值参考表,-1为数据处理有异常,0为无数据处理,正数为已处理的数据数,该模块用于对待处理的数据进行分类,采集、加工等行为通过相应的进程来处理

int resultCode = 0;

String dataType = ‘’, dataCode = ‘’;

for (Object obj : dataObject.values()){

dataCode = obj.getDataCode(); //获取每个对象的四级编码

//匹配数据类型

if (dataType = = ‘结构化’){ //匹配数据的四级编码,结构化数据解析成存储对象,用于后续入库

if(dataCode = = ‘地面资料’){

resultCode = surfDataProcessAndPush (dataCode, obj); //调用地面资料处理模块

}else if(dataCode = = ‘高空资料’){

resultCode = uparDataProcessAndPush (dataCode, obj); //调用高空资料处理模块

}else{

resultCode = otherDataProcessAndPush (dataCode, obj);

}

}

else if(dataType = = ‘非结构化’){ //按照非结构数据的四级编码,生成数据存储路径及相关信息

if(dataCode = = ‘卫星资料’){

resultCode = sateDataProcessAndPush (dataCode, obj); //调用卫星资料处理模块

}else if(dataCode = = ‘雷达资料’){

resultCode = radrDataProcessAndPush (dataCode, obj); //调用雷达资料处理模块

}else{

resultCode = otherDataProcessAndPush (dataCode, obj);

}

}else{

}

}

return resultCode;

}

2)数据存储:

数据库服务器接收下游推送过来的数据后,根据数据的种类,采用不同的数据入库方法:(1)对于地面、高空等结构化数据,按照数据类型和格式,存储到相应的表中;(2)对非结构化数据,同样按照数据类型,后台将文件归档存放到相应的目录下,并入库文件的存放信息,便于前台展示时快速关联到相关文件。以下具体代码如下:

public int dataStoreByType(HashMap dataObject, String dataType, String dataCode){

//参考返回值参考表,-1为数据处理有异常,0为无数据处理,正数为已处理的数据数,该模块用于对待存储的数据进行分类,入库、归档存放等行为通过相应的进程去处理

int resultCode = 0;

//匹配数据类型

if (dataType = = ‘结构化’){ //匹配数据的四级编码,解析数据,写入相应的表

for (Object obj : dataObject.values()){

if(dataCode = = ‘地面资料’){

resultCode = surfDataReceiveAndStore (dataCode, obj); //调用地面资料处理模块

}else if(dataCode = = ‘高空资料’){

resultCode = uparDataReceiveAndStore (dataCode, obj); //调用高空资料处理模块

}else{

resultCode = otherDataReceiveAndStore (dataCode, obj);

}

}

}else if(dataType = = ‘非结构化’){ //按照非结构数据的四级编码,存放文件到指定目录,写入存储位置信息

for (Object obj : dataObject.values()){

if(dataCode = = ‘卫星资料’){

resultCode = sateDataReceiveAndStore (dataCode, obj); //调用卫星资料处理模块

}else if(dataCode = = ‘雷达资料’){

resultCode = radrDataReceiveAndStore (dataCode, obj); //调用雷达资料处理模块

}else{

resultCode = otherDataReceiveAndStore (dataCode, obj);

}

}

}else{

}

return resultCode;

}

3)数据接口:

为便于其他业务系统快捷地访问本地特色数据,上述各类气象数据经加工处理入库后,通过接口模块将数据封装成WebService接口,对外提供数据服务,外部业务系统调用数据接口的业务流程如图6所示。

图6 接口调用流程

接口调用处理主程序如下:

public void callInterfaceByType(HttpSession session){

//监听用户的接口用户请求

while(!interfaceListener.stopStatus){

//获取session中的接口请求信息

String userKey = session.getUserKey();

String type = session.getTyep();

String url = session.getURL();

//使用接口请求对象存储请求信息

obj.setValue();

//将不同类型的接口请求添加到不同的处理队列

if(type = = ‘地面接口’){

//全局变量sateDataArray;

sateDataArray.add(obj);

}else if (type = = ‘高空接口’){

//全局变量uparDataArray;

uparDataArray.add(obj);

}else{

//全局变量otherDataArray;

otherDataArray.add(obj);

}

}

}

通过不同的全局数组变量来记录各种用户数据接口请求,系统后台再通过不同的子程序去处理接口请求,最终生成可展示的前台数据对象集,本文以地面接口处理子程序为例,后台是通过多线程来并发处理用户的接口请求的。

public void callSateInterface(){

//若无数据请求,则跳过处理

if (sateDataArray.Size = = 0)

return null;

for (int i = 0; i < sateDataArray.Size; i++){

//获取线程池中的空闲线程,处理数组中的接口请求,返回包含请求数据,并释放进程及其它资源

InterfaceThread thread = InterfaceProThreadPool.getIdleThread;

if (thread != null){

List[] resultList = thread.process (sateDataArray.get(i);

thread.close();

toDisplayData(resultList);

resultList = null;

}else{

}

}

}

4.4 系统测试

系统性能测试分为页面请求响应速度测试和系统稳定性运行测试两个部分。

1)页面请求响应速度测试:使用JMeter测试工具模拟30用户分别并行访问交互性页面和一般页面50次时,计算系统各类页面加载的平均时间开销,如表1所示,交互性性页面的平均响应时间均小于3 000毫秒,一般页面的平均响应时间小于2 000毫秒,各类页面错误加载百分比小于1%。

2)系统稳定性运行测试:分别从容错、压力、重复方面进行测试系统的稳定性,其中容错测试是在网络故障、资源路径异常等情况下测试所有功能模块;压力测试为10个用户并行访问系统,保证系统连续48小时运行;重复测试为连续访问气象观测、预报预警、台风路径等功能模块100次,如表1所示。

表1 系统性能测试

测试结果表明,气象信息服务网在请求响应和运行稳定两个部分均达到了测试预期效果,在多用户并发访问下,各功能模块运行正常且稳定,各类页面加载速度较快,数据显示准确,且在网络故障、系统资源路径异常时,页面可正常加载并有相关提示。

4.5 页面展示

根据上述的系统设计和关键技术研发本系统各功能模块,实现预报预警、气象监测、台风路径、专业气象等功能模块,如图7所示,不仅提供气象观测数据、气象预报、预警信号等数据的实时展示,还提供基于Web GIS的实况数据绘制、显示、叠加等功能。目前,该系统界面友好、各功能运行稳定、操作简便。

图7 系统页面

5 结束语

海南气象信息服务网建设是海南省气象局的重要业务系统之一,其设计宗旨是集成各类观测数据、预报预警产品等气象信息为一体,为业务用户和社会公众提供统一、丰富的气象数据展示服务。因此,参考中国气象局及其他省、市县局的建设信息服务网的成功经验,结合我省气象业务的实际需求,依照全国气象信息化标准化、集约化、信息化的总要求,分析、总结海南气象信息服务网建设的业务流程和数据流程,详细阐述和应用系统研发所使用的数据收集加工、数据可视化等成熟可靠的关键技术,并基于中国移动云eCloud的云服务架构,实现集气象监测、预报预警、决策服务等功能于一体的气象信息服务网,系统运行稳定,安全可靠,能满足业务用户和社会公众对观测、预报等数据的服务需求。

猜你喜欢
服务网气象预警
气象树
预警型智能包装在食品安全中的应用和设计
中国听障儿童服务网开通助听器免费借用服务
超级秀场 大风预警
中国气象“风云”
社区治理如何密织服务网——成都安公社区划了“五条线”
四川政务服务网上线
文章有象
预警个啥