王新秀,杨黎黎,吉曹翔,于 璐,葛 林
(沈阳市气象局,辽宁 沈阳 110168)
目前沈阳地区共有250个气象自动观测站,气象自动观测站提供所在地的气温、降水量、风向、风速、气压、湿度等要素的实况信息,是预报预警业务不可或缺的材料。因此其数据的准确性和及时性是自动站维护、监测人员必须保障的。为有效支撑气象自动观测站正常运行,提高中小尺度灾害性天气监测预警和气象灾害预警信息发布能力,满足气象防灾减灾需求,信息反馈、交互、考核及评估等工作,加强科学管理水平,提高维护时效,亟需建立气象自动观测站管理监控系统。
国内外气象科研人员在气象与互联网科技的结合方面做了大量研究。钱峥等[1]基于Android 的移动气象信息服务系统设计与实现,能够随时随地获取到气象信息;帅红等[2]基于Android的气象站信息查询及控制系统设计与实现,在移动客户端能够随时查询气象观测站相关数据信息;傅仁壮等[3]基于Android的决策气象服务系统的设计与实现,在手机端获取决策气象服务信息取得了较好的应用;G.Crowley[4]开发了一款基于Android系统的展示空间气象数据的软件;L.Herrera在iPhone[5]平台实现了实时浏览自动气象站数据的功能。借鉴前人的研究成果,将基于Android系统的手机App作为课题的研究对象,实现气象自动观测站在手机客户端的管理系统。
系统由Android手机App和Web服务器组件组成,系统结构如图1所示。手机App是系统的用户访问接口。服务器组件是系统的核心服务层,由4个子模块组成,分别是数据智能采集分析、设备故障报警与反馈、日常维护与管理、服务质量考核。数据智能采集分析模块的数据源包括气象自动观测站数据库、CIMISS系统和省局考核数据。设备故障报警与反馈模块将气象自动观测站的信息发送到手机App,手机App通过百度地图提供位置服务,维护人员通过手机App反馈维修结果并上传照片。日常维护与管理模块可制定气象自动观测站维护计划并提醒维护人员按计划完成维护任务。服务质量考核模块是对维护完成率、修复及时率、数据质量和质量抽查结果进行统计完成考核得出评分。手机App可以方便快捷地解决C/S架构的单一网络模式,其自动报警功能随时随地通知到维护人员,同时该系统的服务器端按日、月、年统计及时率,数据可用率并将结果反馈到手机App,使自动站维护人员和考核业务人员及时直观地了解自动站的考核结果。
图1 系统结构
系统主要使用Java编程语言,开发工具使用了JDeveloper 12c和Android studio。系统部署示意图如图2所示,其承载系统应用的环境包括:
(1)Oracle数据库:数据对象和支撑系统页面。
(2)Java运行时环境:原生Java程序,由系统计划任务控制按时执行。
(3)TomCat服务:Web Service接口、js文件接口、图片发布。
(4)Android系统手机:下载安装App应用即可运行。
图2 系统部署示意图
系统开发服务组件使用Oracle 11G EX DB和Oracle JDeveloper,这是一款基于Java语言的开发平台,开发程序实现功能的同时构建起系统的支撑平台架构。Java是一种跨平台应用软件的面向对象的程序设计语言,且具有简单易用等优点。Oracle JDeveloper是一个免费的集成开发环境(IDE),可简化基于Java的SOA和Java EE应用开发。JDeveloper为Oracle[6]融合中间件和融合应用产品提供完整的端到端开发,支持整个开发生命周期。系统的数据库采用Oracle 11g,Oracle 11g提供了高性能、伸展性、可用性和安全性,并能更方便地在低成本服务器和存储设备组成的网格上运行,相对过往版本而言,Oracle 11g具有了与众不同的特性。
在设计手机App时选用Android系统,它是首个为移动终端设备打造的真正开放和完整的移动软件系统,允许开发人员自由获取、修改源代码[7]。以Android平台为基础,Google公司专门为开发Android应用程序提供了集成开发环境Android Studio,涵盖了所有Android应用开发相关的功能。Android应用程序主要使用Java语言编写,要用到开发工具集SDK(Software Development Kit,提供Java编译工具、Android系统API等,可以直接在Android Studio[8]中下载)。
Android项目开发条件容易满足,手机Android系统覆盖广泛,成为开发首选。Android系统框架使用了分层结构[9],将Android分成四层结构和五个区块。分别为应用层(Applications)、应用程序框架(Applications Framework)、库(Libraries)、Android运行时(Android Runtime)以及Linux内核(Linux Kernel),整个系统的架构如图3所示。在系统的最底层,Android系统采用Linux作为系统的内核,其优势在于成熟的Linux内核可提供稳定的操作系统服务,同时其开源的特点能够使Android系统更容易被各个设备厂商支持[10]。
图3 Android软件栈
系统设计使用Web Service完成手机与服务器组件间交互的工作。Web Service技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。Web Service是自描述、自包含的可用网络模块,可以执行具体的业务功能Web Service,也很容易部署,因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP[11]。依据Web Service规范实施的应用之间,无论它们所使用的语言、平台或内部协议是什么,都可以相互交换数据。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制[12]。
从表面上看,Web Service就是一个应用程序,它对外部系统只露出一个能够通过Web服务的API供外部系统调用。这就是说你能够用编程的方法通过Web老调用这个应用程序。把调用这个Web Service的应用程序叫做客户[13]。Web Service 模块简图如图4所示。
图4 Web Service模块简图
手机客户端提供的自动观测站实况为近24小时的整点和加密数据,供用户查看自动站的实时性和准确性。为了便于用户快速找到站点信息,设计了按自动站所属区县划分的下拉选择框,查找到相关站点后即可显示实况信息以及自动站所在地图的位置,如图5、图6所示。
图5 区县划分自动站
图6 自动站实况信息
在程序设计时,向后台数据接口发起带有站号、站名、所属区县的参数请求,页面将返回携带站名、日期、所在经纬度和实况信息的JSON格式字符串。JSON是一种轻量级数据格式,其对象是属性、值对的结合,是规范的标签形式,具有很强的可读性[14]。设计中采用的JSON数据解析包为fastjson.jar,它是一个性能很好的Java语言实现的JSON解析器和生成器,具有快速、强大和零依赖特点[15]。
服务配置可直接发布.js扩展名的文本文件,要求文件内使用JSON格式、数组格式和js编码,这样设置使用起来非常便利,App应用或网页可以直接使用,并且以静态文本发布数据安全,系统响应速度快不存在安全隐患。
设备故障报警与反馈模块将自动站故障信息发送到手机App,手机App通过百度地图提供位置服务,维护员通过手机App反馈维修结果并上传照片。维护人员及时收到故障信息并将处理情况通过手机App反馈到服务器,实现服务器端和手机App高效信息交互。
系统为了方便管理人员编制保障任务,提供了电子地图功能,系统将近3小时不在线站点和数据质量异常站点显示在页面下方,页面上方是电子地图,如图7所示。管理员查看下方故障站点信息,点选具体站点上方的电子地图就会自动切换并导航,导航数据来自百度电子地图api接口,是按照自驾车辆导航的,管理员可根据目前故障站点分布情况合理安排保障任务,保障人员也可使用电子地图简单了解路线。系统设计通过现场拍照实现证据留存,提交照片的同时任务终结并记录完成时间,任务的提交也需要验证身份,只有确认身份的保障工作人员才能完结任务,同样也只支持现场拍照,如图8所示。
图7 故障报警
手机App要求照片的传输必须要是现场实时的照片,避免维护人员使用相册中的照片,这样考虑主要是管理需要。照片只能通过二进制方式传回服务端,这样服务端就要开发二进制的接收功能模块,并且需要同时传回JSON字符串用于标注任务信息。
图8 故障反馈拍照
自2019年1月起手机App已经运用在沈阳市气象局社会化保障工作中,软件系统的测试在使用中进行,经过一阶段的使用验证,系统运行稳定。截止到2019年12月手机App已经提示故障站点1 460余次,由于网络信号弱等外在原因有些故障站点会在短时间内无需维修可恢复正常。因此维修人员上传维修记录1 400余条,少于故障站点次数。由于手机App对于故障站点的及时报警,以及对维修人员的行程追踪,督促了维修人员的维修进度,最终根据任务时间戳的记录显示维修人员均能按时完成维修任务。根据每个自动站的自身属性制定对自动站的定期维护提醒,及时更换老化的部件有效保障了自动站的正常运行。手机App对维护完成率、修复及时率、数据质量和质量抽查结果进行统计,方便了管理人员对自动站维护的直观了解。该系统的研发达到了预期效果,这充分说明了手机App的自动站管理系统在业务工作中发挥了重要作用。
气象自动观测站的数据是气象事业的基本保障,是预报预警的重要依据。因此保障气象自动观测站的正常运行,确保数据的准确、及时、有效是一项十分重要艰巨的任务。目前基于手机App的自动站管理系统已经应用在沈阳市气象局社会化保障工作中,并且取得了显著的效果。该系统通过服务器端不间断扫描实况数据,能够发现不在线和数据异常的站点,方便管理人员依据异常站点安排保障任务。任务建立和任务结束都有时间戳标记,可以统计任务完成的时间间隔,结合社会化保障要求,提高维修工作效率,使得维修任务执行过程数据化。执行任务需要提供4张现场照片,只能现场拍照不能上传图片,同时反馈地理位置,双重取证避免造假,有效约束才能防微杜渐。鉴于该系统的良好效益,目前已经推广到丹东市气象局的社会化保障工作中。