于连庆,胡争光,薛峰
(国家气象中心,北京 100081)
近年来,随着气象科学研究和预报业务的飞速发展,气象预报预警与决策服务对社会经济发展发挥着越来越重要的作用。从业务角度上看,以全面推进气象现代化为目标的智慧气象成为当前业务工作的核心。智慧气象的发展对当前业务系统提出了更高要求,具体表现在两个方面。首先,绝大多数业务单位还是使用网站[1]和桌面应用[2-3]的方式作为服务主渠道,在移动计算、社交网络方面的探索还比较缺乏,导致整体服务体系的协同性和时效性不够。其次,针对灾害性天气,不能高效、快速地将高时空分辨率的精细化预报产品转换为面向决策服务人员的服务产品。从信息技术发展角度上看,近年来移动计算、互联网云服务已经逐步取代传统的桌面计算机、工作站、私有服务器,成为信息发布与共享的主流方法。国内外很多天气类应用均开发了移动版本,例如国外的The Weather Channel、AccuWeather,国内的新浪天气通、墨迹天气等。因此,开发基于中央气象台预报服务产品的智能移动应用是一项既非常必要,又具有重大意义的工作。
中央气象台决策气象服务智能移动终端(本文简称为“决策服务App”)是基于云计算和大数据分析技术,集位置服务、实况观测、预报预警、服务产品展示等多种功能于一体的移动应用。该应用面向国家气象局、省级气象局决策服务领导,一线决策服务人员,以及诸如农业、水利、海洋等相关行业人员。
能否提供高质量的用户使用体验是决定一个软件系统是否成功的重要因素之一。而用户行为分析又是提高用户使用体验的一项重要手段。通过分析用户行为和程序运行状态,可以帮助开发者提高软件的使用效率,了解软件在用户群中的被接受程度,甚至发现信息技术产业的发展趋势。决策服务App从开始立项研发到投入业务运行,对于用户的使用情况和意见反馈还没有一个全面、深入的了解。尽管尝试通过举办用户交流研讨会议,在App中加入用户建议提交页面等方式获取用户反馈,但是这些方法只能得到很小一部分用户的反馈。因此,主动获取用户使用App的信息成为了解用户使用习惯的一种重要方法。
气象数据本质上是四维的,即空间三个维度加上时间维度。然而大多数气象软件仅提供二维可视化方法。为了弥补缺失的维度,软件通常提供沿着垂直或者时间维度进行翻页和动画的功能。气象工作者也已经习惯观看这些二维图表来对数据进行理解并形成他们的预报思路。与技术成熟且应用广泛的二维可视化方法相比,三维可视化方法的发展仍然处于早期探索阶段。一方面,预报员已经习惯使用二维图形产品,缺乏主动接受三维图形产品的意愿[4]。另一方面,三维可视化领域缺乏大量的能够发挥自身优势的显示方法,没有比二维方法更好地帮助预报员理解数据。然而,近年来出现了一些三维可视化软件,实现了创新性的可视化方法。例如,美国大学大气研究协会(University Corporation for Atmospheric Research, UCAR)开发的VAPOR软件[5]实现了在普通PC上处理TB级的数据,并使用体绘制(volume rendering)[6]和域线积分(field-line integration)方法实现数据渲染。德国慕尼黑科技大学开发的Met.3D软件[7-8]利用光线投射等值面方法实现云层和位势涡度的分析,从而帮助预报员获取集合预报不确定性信息[9]。
本文结构组织如下。第1节讨论决策服务App的需求分析、架构设计与技术路线。第2节详细介绍三维可视化和用户行为分析技术。第3节介绍决策服务App的主要功能和业务应用。第4节总结全文并讨论下一阶段的主要工作。
在项目早期,通过与中央气象台和省台决策服务人员的交流,获取了用户的主要需求:
1)以易于操作的方式在手机上提供业务内网中的绝大多数专业预报及决策服务产品,使用户能够随时随地获取信息;
2)提供了基于位置服务(location-based service,LBS)[10]的个性化定制,默认给出用户所在位置的天气实况、预报预警和相关的决策服务产品;
3)提供消息推送通知功能,让用户不会错过任何重要的预警通知;
4)社交共享功能,方便用户将产品共享到微博、微信、QQ等社交网络上。
决策服务App依托气象决策智能平台,该平台是集数据存储、后台服务、客户端应用在内的软硬件一体化计算环境。
1.2.1 数据源
图1给出了气象决策智能平台的系统架构。系统使用的数据有三个来源:产品库、业务内网和台风网。数据中的图片类文件通过CDN(content delivery network)网络[11]加快下载速度以提高客户端响应效率。产品库的数据文件通过FTP主动推送到服务器端的数据存储目录下。与之相反,业务内网和台风网的数据通过服务器端的数据下载作业抓到服务器上,这一数据采集工作每分钟进行一次。所有数据经过预处理后存储在服务器磁盘上,最新时次或者访问最频繁的数据存放在Redis缓存中以加快客户端访问速度。
1.2.2 服务器
服务器端包括以下四个功能模块:
1)管理网站。主要面向系统运行维护人员,提供了App发布管理、用户账号管理、用户角色管理、系统运行监控和用户行为分析结果展示功能。
2)Web接口。这是一个运行在Tomcat容器中的Java Servlet进程[12],它采用REST通信接口[13],为手机客户端提供了数据请求响应、身份认证、访问控制、版本更新检查、App安装包下载、App日志管理、反馈意见收集等功能。
3)消息通知。该服务将重大天气预报、灾情预警的服务产品以消息通知的方式发送到用户的手机上。
4)数据下载、预处理和存储程序。此程序将从数据源获取的数据进行处理,然后保存到磁盘文件系统和MySQL数据库中。
1.2.3 手机App
手机App即决策服务App,面向最终用户。对于数据量较大的图片文件,决策服务App通过CDN网络下载并进行显示,其余数据通过REST接口从服务器获取。
图1 气象决策智能平台的架构设计Fig.1 Architecture design of intelligent platform for meteorological decision-making
如图2所示,气象决策智能平台的功能模块采用层次化的组织方式,尽量减少模块之间的耦合性。
这里按照从下到上的顺序进行讨论。最底层是硬件网络和系统层,气象决策智能平台安装在一台配置为Intel Xeon E5-2682、32GB内存,运行Red Hat Enterprise Linux 7.4操作系统的服务器计算机上。该计算机部署在阿里云上,使用阿里云的磁盘存储及网络环境。次底层为数据库和中间件层,包括Redis数据缓存、MySQL数据库、Apache Tomcat应用服务器、Apache httpd Web服务器等服务中间件,提供基础的缓存服务、数据存储服务及Web应用服务等。此外,为实时监测平台的运行状态,还编写了平台监控模块。第三层为服务层,为了平台的通用性和可扩展性,平台将与具体业务无关的功能实现为相互独立的模块,封装在服务层中。此层提供的功能包括作业调度,数据采集、处理与存储,数据缓存,消息通知,日志服务。第四层为应用层,基于通用的服务层组件,经过业务化封装,形成可对外提供业务化服务的管理网站和Web数据接口。应用监控跨越服务层和应用层,监测这两层中的服务进程是否正常。与之相比,平台监控检查操作系统和中间件服务进程的运行状态。最上面一层是客户端,目前包括运行在浏览器中的管理网站和运行在智能手机上的决策服务App。
图2 气象决策智能平台的功能模块设计Fig.2 Stratified design of function modules of intelligent platform for meteorological decision-making
服务器端程序均使用Java语言开发。面向客户端的服务接口通过REST协议,使用函数工具库Jersey和Spring实现接口功能。运行Web应用的容器采用Apache Tomcat。数据存储采用MySQL关系数据库和文件系统两种方式。为提高服务器端响应速度,使用Redis中间件实现数据库缓存。
客户端以手机App的形式实现,目前支持iOS和Android两种操作系统。程序内均内置OAuth身份认证功能以保证数据安全。涉及地图和图层的图形渲染功能通过内部独立开发的基于WebGIS和OpenGL ES技术的渲染引擎实现。天气预报和决策服务产品页面采用HTML5技术进行显示。面向iOS平台的手机App采用Objective C++与C++两种语言混合开发;面向Android平台的手机App采用Java与C++两种语言混合开发。
目前在iOS和Android平台上,诸如虚拟地球、游戏这样的图形渲染密集型应用都使用OpenGL ES实现数据可视化功能,以利用其提供的GPU硬件加速技术提高图形渲染效率。针对决策服务App的自身特点,实现了OpenGL ES[14]和HTML5 canvas WebGL[15]双核渲染引擎,即将地图和在地图框架中显示的图层(如降水落区、雷达拼图、卫星云图等)放在使用OpenGL ES渲染的视图中;对于城市天气预报、文字服务产品、图表、台风网等放在HTML5页面中。
在实现图形渲染功能时,决策服务App采用了二三维一体化方法,这一设计的考虑因素有以下三点:首先,预报员已经非常熟悉二维图形产品,而且一些相对保守的用户只相信传统的二维方法,不愿意尝试三维方法;其次,很多业务环境下的预报产品是通过二维可视化方法制作的,因此必须保留已有的二维可视化方法;第三,全新的三维可视化渲染效果能够为用户带来令人兴奋的使用体验。
根据上述设计,二三维一体化图形渲染引擎的开发,是在已有二维显示技术的基础上,开发全新的三维渲染方法,包括体绘制和等值面、光照与阴影、空间物体相交检测等。此外,还特别重视二维和三维渲染之间的平滑过渡,实现了以下创新: 1)二维和三维视图可以在应用程序运行期间动态切换,这样就允许用户在熟悉的二维环境中保持工作效率,同时在他们感兴趣的时候去尝试三维可视化方法;2)实现所有图形物体在二维和三维视图下的渲染结果一致,同时新的三维图形表示(如体积渲染)在二维视图下有对应的表示方式。
图3示例了2019年9月12日00时(UTC)欧洲中期天气预报中心(ECMWF)高分辨率(High Resolution,HRES)模式地面气温场在决策服务App中的三维(图3a)和二维(图3b)显示效果。用户通过点击视图中左上角的维度切换按钮在二维和三维视图之间切换。温度场以色斑图形式呈现,且在两种维度下显示效果一致。
图3 欧洲中期天气预报中心高分辨率模式地面气温预报场在决策服务App中的三维(a)和二维(b)显示效果Fig.3 Decision-Making Service App’s 3D (a) and 2D (b) visual effect of surface temperature forecast by ECMWF HRES (High Resolution) model
用户行为分析功能的实现是一个从后台数据接收、处理、存储、统计到前台数据收集、发送、结果展示的一体化集成过程。
2.2.1 创建用户行为数据库
在关系数据库中创建多个表,包括用户信息数据表(记录用户信息如年龄、性别、国家地区、使用的硬件设备、网络环境等)、功能操作数据表(记录用户一次会话时进行的所有操作)、程序运行信息表(记录用户使用时间、异常退出时的错误消息和代码运行堆栈数据等)。
2.2.2 收集、发送用户数据
为缓解服务器压力,手机App应尽量减少向服务器发送数据的次数。当用户终端收集到一条记录后,应该保存到缓冲区中,在经过一段时间(如10 min)或者收集到足够数目(如100条)的记录后,再向服务器发送。当然,在用户退出程序之前,或者检测到程序即将异常退出时应立即向服务器发送数据。
客户端程序中表示用户行为数据的数据结构应该与用户行为数据库中数据表的字段相一致。此外还要注意不同语言(关系数据库,Android系统中的Java, 网页使用的JavaScript和iPhone系统的Objective-C)之间数据类型的对应问题和字符编码问题。
手机App在征得用户同意的情况下将收集以下数据:
1)用户个人信息,包括手机号码、年龄、性别、国家地区、工作单位、使用的硬件设备、网络环境(WiFi/4G)等。
2)注册用户统计。系统维护一个用户信息数据表。对于一个注册用户的登录,终端应从服务器上获取表示该用户的标识(identifier)。这样每次向服务器发送信息时都包含这个用户标识。
3)用户登陆App的次数。这一指标反映了程序被使用的程度。通常以一天作为一次度量周期。
4)程序功能使用情况。程序应记录用户每次操作使用了哪个功能。从这些信息可以知道用户关注哪些功能,以及他的使用习惯。
5)每次会话使用时间。一次会话(session)是指从用户登录App开始,到退出App为止这一过程所经过的时间。
6)应用异常退出时的运行状态数据和发生次数。App应该提供捕获程序崩溃时的运行数据的功能,将其提交到服务器以帮助开发人员改进代码质量。
2.2.3 接收、处理、保存用户数据
接收来自客户端发来的数据,并将这些信息处理后保存到用户行为数据库中。对用户行为数据进行统计计算,并以一天为周期进行更新。
2.2.4 用户行为分析结果展示系统
用户行为分析结果展示系统使用户通过浏览器查看用户行为分析结果。该系统提供了以下功能:
1)管理员登录验证。展示系统是面向项目管理人员的,因此需要提供用户登录验证功能,以保证只有合法的用户能够登录系统。
2)注册用户数量统计。以直方图、折线图、地图或表格的形式显示注册用户的数目。提供的选项包括时间范围,时间间隔(天、星期、月、年),显示方式(直方图、折线图、地图、表格)。
3)用户登录、使用次数统计。以直方图、折线图或表格的形式显示用户登录的数目。提供的选项包括时间范围,时间间隔(天、星期、月、年),显示方式(直方图、折线图、表格)。
4)用户属性统计,包括用户数量的国家地区分布、设备和系统信息、年龄、性别。
5)程序功能使用情况。以直方图或表格的形式显示程序各个功能的使用次数。提供的选项包括时间范围,显示方式(直方图、表格)。
6)会话时间,包括平均会话时间,最长会话时间,最短会话时间。提供的选项包括时间范围,时间间隔(天、星期、月、年),显示方式(直方图、折线图、表格)。
7)异常退出信息。以直方图、折线图的形式显示异常退出的数目。提供的选项包括时间范围,时间间隔(天、星期、月、年),显示方式(直方图、折线图)。点击直方图中的一个竖条或者折线图中的一个顶点,导航到下一级页面。该页面以表格的形式显示所有的异常信息。
图4a以地图的形式给出了最近一周的用户登录次数统计,使用弹出式窗口显示鼠标光标处所对应省市的用户登录次数。图4b显示了程序功能使用情况统计数据,从图中可以看出,实况降水、影响分析和智能网格是最受用户欢迎的三个栏目。
图4 用户登录次数统计(a)与功能使用次数统计(b)Fig.4 Statistics of user login (a) and function use (b)
决策服务智能平台在设计开发过程中,采取了以下几个方面的措施来保证平台的安全。
2.3.1 身份认证
身份认证基于手机号白名单。用户申请并得到批准后,由管理员将用户信息录入到用户信息数据库中。当用户第一次登录或者退出并再次登录时,需要提供短信验证码。对通过认证的用户,系统会分配一个认证令牌(OAuth token)到该用户的手机App。随后用户所有的数据访问请求都需要这个令牌进行权限控制。
2.3.2 数据安全
为确保数据传输中的安全性,采取了以下三种措施:
1)网络层HTTPS加密。为了确保数据传输过程的安全性,手机端与服务器端的所有数据访问接口都通过HTTPS协议进行传输。
2)应用层DES加密。除了网络层通过HTTPS协议传输数据外,在数据传输过程中,还在应用层通过DES算法进行了二次加密。并且加密密钥在服务器端动态管理,可随时通过服务器端来更新加密密钥。
3)解密后的数据直接显示,不落地。从服务器端传到客户端的数据是经过DES加密的,在手机端接收到加密数据后,需经过解密后在界面上进行显示。为了确保数据安全,解密后的数据只暂时记录在手机内存里,不将任何解密后的数据存储在手机存储设备上,确保数据不会被截取泄漏。
2.3.3 代码混淆加密
Java是一种解释性语言,即在Java程序执行期间,Java源代码对应的字节码在虚拟机中被解释执行。而字节码非常容易被反编译。通过反编译结果,系统入侵者能够看出程序的所有逻辑、与服务器端的通信方式、加解密算法、业务流程、软键盘技术实现等,从而利用这些信息窃取客户端的敏感数据;绕过业务安全认证流程,直接篡改用户账号信息;对服务器接口发起攻击等。决策服务App的Android版本使用Java开发,为避免上述安全隐患,开发人员对Android版本进行了代码混淆,极大提高了反编译难度。
3.1.1 客户端功能
决策服务App手机客户端提供四大类专业化栏目,涵盖了上百种专业预报及决策服务产品。四个栏目分别是:
1)精细化实况预报产品。在智能网格天气预报服务的支持下,提供近3 000个国内外城市的主要天气要素(天气现象、气温、气压、湿度、空气质量等)的实况和预报。预报时效长达30 d,0~24 h实现逐小时预报,前10 d实现逐3 h预报。此外,采用基于位置服务(LBS)技术,为用户提供精确到街道级别地址的实况和预报。用户还可以把感兴趣的位置、城市、自动气象站添加到收藏列表中。
2)决策服务产品,包括天气公报、中期天气预报、国外天气预报、两办刊物、灾害性天气预警、台风快讯等。
3)实况监测产品,包括降水、气温、环境实况、雷达、风云四号云图、强天气实况和台风路径。降水和气温包括了国家级地面气象观测站和区域气象观测站共8 996个。自动气象站降水量按照1/6/24/48/72五个预设时段累加,用户还可以自定义累加起止时间以实现任意时段累加。累加结果以排序列表形式展示,点击列表中任意一项转到相应站点的降水时间序列。气温包括逐小时气温、最高气温、最低气温和24 h变温。环境实况覆盖了全国1 459个站点每小时的环境数据,包括AQI、PM2.5、PM10。雷达图像包括全国拼图、区域拼图、单站雷达图像三种。强对流天气监测包括短时强降水、雷雨大风、冰雹、闪电。
4)预警预报产品,包括智能网格预报、灾情影响分析、24~168 h定量降水预报(QPF)、环境气象(雾、霾、沙尘)预报、强天气(短时强降水预报、强对流天气预警、大风降温)预报、预警信号。
除上述四个栏目外,决策服务App还提供了针对手机和平板电脑等移动计算设备的特色功能:
1)支持Android和iOS操作系统,两个版本在交互界面、操作方式、功能上完全一致。
2)灾害性天气推送提醒功能。它实现了强降水、冰雹、寒潮、大风降温、台风等灾害性事件的消息推送通知,让决策用户及时收到相关信息。
3)对于灾害性天气过程,在首页上以数字提醒方式给出事件的个数,用户点击数字提醒消息就可以查看详细内容。
4)提供社交分享功能。用户可以将所有产品分享到诸如微信、QQ、微博等社交网络上。
3.1.2 服务器端功能
决策服务App服务器端提供以下功能:
1)面向客户端的Web应用服务器。通过引入大数据计算处理和分布式微服务框架技术,整合了中央气象台各类天气预报和服务产品,实现了各类数据和预报服务产品的存取接口。
2)用户行为分析。在用户许可的前提下,对从手机App传到服务器的信息进行大数据分析,找出用户的操作使用习惯、感兴趣的产品,以及程序的运行状态。
3)用户数据库。它主要为用户提供个性化定制功能,即根据用户角色提供定制的服务产品、消息通知等。
4)数据缓存。为提高服务器响应速度,为客户端提供流畅的使用体验,系统采用了多级数据缓存策略。对于数据量较小但是存取非常频繁的数据使用HashMap结构将数据存储在系统内存中,作为一级缓存。对数据量略大但是不需要实时计算处理的数据使用Redis进行维护,实现二级缓存。对于数据量非常大的静态数据,如地图瓦片文件、预先制作好的气象要素格点场的填色等值线图片文件等发布到CDN上。
3.2.1 特色应用
决策服务App已融入到国家级与全国各省台实时决策气象服务业务中,用户量超过450人,平均每天服务提供次数约0.5万次,高峰时达到10万次。此外,决策服务App提供了一些独有的特色功能,包括定量降水预报、灾情预警影响分析、重大活动的专项保障。
对于定量降水预报,决策服务App支持灵活多样的站点信息显示,如显示站点详细数据的信息框(图5a)、自定义累加时段(图5b)和单站累加时段内逐小时降水量(图5c)。
灾情预警影响分析功能面向公众服务,给出了预警的主要内容(图6a)、受影响区域内所有城市的国民生产总值(GDP)和人口数量、重要目标物(包括水库、机场和降水落区,如图6b所示),以及自动气象观测站的实况数据。
图5 决策服务App对定量降水预报业务的支持(a.显示站点详细数据的信息框,b.自定义累加时段,c.单站累加时段内逐小时降水量)Fig.5 Support of Decision-Making Service App for quantified precipitation forecast (a. message box for detailed data of a station, b. user-defined time frame for cumulative precipitation, c. hourly precipitation in cumulative time fame at a single station)
图6 面向公众服务的灾情预警影响分析功能(a.灾情预警的主要内容和人口经济影响,b.受影响区域内重要目标物与自动气象观测站实况数据)Fig.6 Disaster warning and influence analysis offered for general public (a. main content of disaster warning and influence on population and economy, b. important target and real observations in affected area)
国家级重大政治、经济活动(如国际会议、大型文体活动等),以及严重的山洪、地震等突发自然灾害的专项保障服务是中国气象局业务工作中的重中之重。为了给决策服务人员提供及时、准确的服务材料,决策服务App开发了专项保障模块,其设计思路是将事件发生地区内的主要城市或者观测站的天气预报、实况监测以及雷达图像这三个决策服务人员最为关心的材料放到一个页面中,以方便用户快速、集中查看感兴趣的产品,而不必从首页进入到各个模块查看。专项保障模块在2016年的杭州G20峰会、2017年的厦门金砖国家峰会、2019年的新中国成立70周年十一国庆等活动的气象服务保障中发挥了良好的效果。
3.2.2 专业版本建设
决策服务App采用模块化设计以提高系统的可扩展性,目的是在开发有特殊需求的专业版本时能够尽可能多地复用已有功能。南水北调中线天气App(以下简称为“中线天气App”)的开发证明了架构设计达到了预期目标。
中线天气App是由中线干线管理局与国家气象中心联合开发,为确保南水北调中线工程安全度汛和平稳运行,特别为及时应对汛期山洪、冬季冰塞等影响输水安全的险情,提供专业准确的气象服务支持。该应用针对水利业务的特殊性,提供了一些专业性功能,包括3 000多个城市和65个节制闸的精细化智能网格预报(图7a)、定制的中线流域地图(图7b)等。
图7 南水北调中线天气App提供的针对水利业务特殊性的大量专业性功能(a.精细化智能网格预报, b.定制的中线流域地图)Fig.7 Professional function for the particularity of water conservancy provided by Weather Application for the middle route of the South-to-North Water Diversion Project (a. refined smart grid forecast, b. customized basin map of middle route)
决策服务App作为国家气象中心现代化预报业务信息支撑平台的重要组成部分,是基于移动互联网、大数据分析技术建设的、面向决策服务领导及一线决策服务人员的移动智能终端。决策服务App能够为国家级、省级用户提供实时的、基于位置服务的实况监测、天气预报、决策服务专报等上百种专业预报及决策服务产品,将决策服务业务延伸至社交网络和移动计算领域。
项目开发过程中在关键技术的攻坚中取得了一些收获,使得决策服务App相比同类应用具备了一些先进的技术。1)实现了二三维一体化图形渲染引擎,在保留传统二维可视化方法的基础上,引入新的三维显示技术帮助预报员更好地理解数据;2)完成了用户行为分析功能,通过利用大数据分析技术,了解用户的使用习惯和程序运行状况,从而有助于个性化定制并提高产品质量;3)通过身份认证、数据传输加密、代码混淆等方法提高了程序的安全性,降低了被攻击隐患。
决策服务App在以下三个方面存在不足之处,这也是今后需要改进的地方。首先,扩展二三维一体化图形渲染引擎的功能,支持诸如等值线、风场粒子动画、流线、特殊符号字符等更多数据可视化方法,从而更好地支持数值模式预报场,卫星云图,雷达等预报员关心的产品。第二,进一步开发大数据用户行为分析功能。目前用户行为分析功能能够收集信息并进行统计处理,但是未对统计结果进行深入分析。今后,将对统计结果进行特征提取,从而实现个性化和智能推送。第三,改进细节,提高用户使用体验。总之,气象决策服务App的升级将致力于提高用户的工作效率,更加智能高效地为决策领导和决策服务人员提供准确的决策服务材料和产品。