APP下载

北斗船载终端可视化气象预警信息技术研究

2020-10-28莫云音吴盛洪叶彩荣

计算机技术与发展 2020年10期
关键词:字节台风北斗

莫云音,吴盛洪,陈 亮,叶彩荣,李 勋

(1.海南省气象服务中心,海南 海口 570100;2.海南省南海气象防灾减灾重点实验室,海南 海口 570100;3.海南省气象台,海南 海口 570100)

0 引 言

依托北斗卫星导航定位系统和北斗民用运营中心,海南省气象局建成了海南省气象局海洋渔船气象信息卫星发送系统,该系统可以向渔船或商船发送海洋气象灾害预报预警的信息,有效地解决了海洋气象信息服务传递的盲区,实现了海洋气象预警信息广覆盖的要求。但是,受限于北斗卫星通讯传输数据容量小,每次最多传输120字节,该系统无法直接给船只发送图文信息,只能发送文字形式的预报预警信息。然而,文字信息存在不直观、不清晰等缺点,船只接收到台风、海上雷电大风等灾害天气的预报预警信息时,只是知道海上有灾害性天气及发生灾害性天气的海区,无法精准地知道自己是不是在灾害天气的影响区域内,自己离灾害天气的影响区域有多远,避险时该往哪个方向航行。因此,为了给海上作业用户提供更优质及时的海洋气象服务,为安装北斗终端的船只实时提供直观的、图形化的台风、海上雷雨大风等气象预报预警信息是非常有必要的。为此,海南省气象局设计开发了北斗船载终端可视化气象预警系统,实现了在北斗船载终端图形显示台风、海上雷雨大风、海上大风、海上大雾等信息的功能。该系统通过对气象信息进行编码,解决了北斗系统字节传输限制的问题,利用北斗组播技术[1-2]将气象信息传输到北斗船载终端,通过在北斗船载终端中内置气象信息处理模块实时接收信息进行解码,并将台风、雷雨大风、海上大雾等灾害性天气预警区叠加在北斗船载终端的海图上,同时自动测量出灾害性天气影响区域与北斗船载终端位置的距离。海上作业用户可以实时动态了解自己的船只与台风、海上雷雨大风等灾害性天气落区之间的位置关系,及时判断出避险的最佳路线和时机。

1 系统架构设计

北斗船载终端可视化气象预警系统,是在现有北斗卫星对北斗船载终端的通讯支持的基础上,依托海南省气象局提供的短时临近预报预警平台[3],向海上作业提供精细化、可视化的台风信息及气象预警信息,提升海洋防灾减灾的能力,最大程度上降低海上气象灾害造成的损失,保护人民生命财产安全。

北斗船载终端可视化气象预警系统,主要由气象数据接入模块、气象数据处理模块、气象信息编码模块、北斗气象信息通讯模块及北斗船载终端气象信息展示模块五个部分构成,系统总体框架如图1所示。

图1 系统框架

气象数据接入模块负责从短时临近预报预警平台获取最新台风数据及气象预警信号数据,输出到消息队列[4]。气象数据处理模块负责对消息队列中的气象数据进行解析、关联、过滤及入库,实现气象数据的持久化。气象信息编码模块负责制定台风信息及海上大风、海上大雾、海上雷雨大风等气象预警信息的编码通讯协议。北斗气象信息通讯模块根据气象信息编码模块制定的编码通讯协议对气象数据处理模块处理完成的气象数据进行编码,并通过短报文方式将信息发送至北斗船载终端。北斗船载终端气象信息展示模块负责对接收到的气象信息进行解析,并叠加展示在北斗船载终端的海图上。

2 系统信息发布流程

系统信息发布流程如图2所示。

图2 系统信息发布流程

短时临近预报预警平台制作完成台风信息和气象预警信息后,通过HTTP协议,将气象数据以JSON[5-6]数据格式提交输出到消息队列。气象数据处理模块对消息队列中的气象数据进行解析、关联、过滤及入库。气象信息通讯模块根据定义好的气象信息编码通讯协议,对存入数据库的气象信息进行编码,并通过卫星中转发送给对应的卫星定位终端。卫星定位终端接收到气象信息后,将收到的信息下发给北斗船载终端。北斗船载终端根据北斗通讯协议对接收到的信息进行解析并叠加展示在北斗船载终端的海图上。

3 气象信息编码

受限于北斗卫星通讯传输数据容量小(每次最多为120字节[7]),无法直接向北斗船载终端发送图文信息。在传输台风信息及气象预警信息之前,需要对信息进行编码。

3.1 台风信息编码

台风信息编码长度为75字节,传输的信息包括台风编号、台风中文名、实时点及5个预报点。实时点由时次、中心经度、中心纬度、中心气压、风力、移动速度、移动方向、七级风圈半径、十级风圈半径、十二级风圈半径等字段定义。预报点由预报时次、中心经度、中心纬度、中心气压、风力等字段定义。台风信息编码如图3所示。

图3 台风信息编码

台风ID:用1个字节表示,取值0~256。

台风编号:用3个字节表示,采用BCD编码方式,例如台风编号201902编码为001000000001100100000010。

台风中文名:用6个字节表示,最长3个汉字。

实时点共占25字节,各个字段代表的含义及其所占的字节如下:

时次:用4个字节表示,年、月、日、时各占1个字节。年的取值范围为0~100,月的取值范围为0~12,日的取值范围为0~31,时的取值范围为0~24。

中心经度:用2个字节表示,单位为百分之一度,取值范围为-18 000~18 000。

中心纬度:用2个字节表示,单位为百分之一度,取值范围为-9 000~9 000。

中心气压:用2个字节表示,单位为百帕,取值范围为0~2 000。

风力:用1个字节表示,单位为级,取值范围为0~256。

移动速度:用1个字节表示,单位为千米/小时,取值范围为0~256。

移动方向:用1个字节表示,取值范围为0~15,表示风向传感器的16方位图的16个方位,0表示北,1表示北东北,以此类推,15表示北西北。

七级风圈半径:用4个字节表示,东北半径、东南半径、西北半径、西南半径各占1个字节,单位为10公里,取值范围为0~256。

十级风圈半径:用4个字节表示,东北半径、东南半径、西北半径、西南半径各占1个字节,单位为10公里,取值范围为0~256。

十二级风圈半径:用4个字节表示,东北半径、东南半径、西北半径、西南半径各占1个字节,单位为10公里,取值范围为0~256。

预报点信息共占40字节,共有5个预报点,每个预报点占8字节,预报点的中心经度、中心纬度、中心气压、风力等字段的编码定义与实时点同名字段的编码定义一致。预报时次用1个字节表示,取值范围为0~256。

3.2 海上大风预警信号信息编码

海上大风预警信号信息编码长度为22字节,传输的信息包括预警信号的发布时间、预警信号ID、状态、影响区域,平均风、阵风以及风向。影响区域为椭圆形状,通过中心点经度、中心点纬度、长轴、短轴、长轴方向等字段定义。海上大风预警信号信息编码如图4所示。

图4 海上大风预警信号信息编码

发布时间:用6个字节表示,年、月、日、时、分、秒各占1个字节,年的取值范围为0~100,月的取值范围为0~12,日的取值范围为0~31,时的取值范围为0~24,分的取值范围为0~60,秒的取值范围为0~60。

预警信号ID:用2个字节表示,取值范围为0~216。

状态:预警信号状态有发布(Alert)和解除(Cancel)两种状态,用1个字节表示,取值0表示Alert,1表示Cancel。

中心经度:用2个字节表示,单位为百分之一度,取值范围为-18 000~18 000。

中心纬度:用2个字节表示,单位为百分之一度,取值范围为-9 000~9 000。

长轴:用2个字节表示,单位为公里,取值范围为0~2 000。

短轴:用2个字节表示,单位为公里,取值范围为0~2 000。

长轴方向:用2个字节表示,单位为度,取值范围为0~360。

平均风:用1个字节表示,单位为级,取值范围为0~256。

阵风:用1个字节表示,单位为级,取值范围为0~256。

风向:用1个字节表示,取值范围为0~15,表示风向传感器的16方位图的16个方位,0表示北,1表示北东北,以此类推,15表示北西北。

3.3 海上大雾预警信号信息编码

海上大雾预警信号信息编码长度为21字节,传输的信息包括预警信号的发布时间、预警信号ID、状态、影响区域以及能见度。影响区域为椭圆形状,通过中心点经度、中心点纬度、长轴、短轴、长轴方向等字段定义。海上大雾预警信号信息编码编码定义如图5所示。

图5 海上大雾预警信号信息编码

预警信号的发布时间、预警信号ID、状态、中心点经度、中心点纬度、长轴、短轴、长轴方向等信息字段的编码定义与海上大风预警信号同名字段的编码定义一致。

能见度:用2个字节表示,单位为米,取值范围为0~216。

3.4 海上雷雨大风预警信号信息编码

海上雷雨大风预警信号信息编码长度为21字节,传输的信息包括预警信号的发布时间、预警信号ID、状态、影响区域、风力、风向。影响区域为椭圆形状,通过中心点经度、中心点纬度、长轴、短轴、长轴方向等字段定义。海上雷雨大风预警信号信息编码定义如图6所示。

图6 海上雷雨大风预警信号信息编码

预警信号的发布时间、预警信号ID、状态、中心点经度、中心点纬度、长轴、短轴、长轴方向、风向等信息字段的编码定义与海上大风预警信号同名字段的编码定义一致。风力:用1个字节表示,单位为级,取值范围为0~256。

4 关键技术应用

为了实现业务所需的功能,系统在设计和开发过程中应用了比较成熟的软件技术,创新地实现了业务所需的功能要求。

4.1 负载均衡技术

系统采用Nginx实现软件负载均衡,拥有配置简单灵活,易于扩展的优点。Nginx是一个高性能、轻量级的Web服务器和反向代理服务器,也是一个电子邮件(IMAP/P0P3/SMTP)代理服务器在一个BSD-like协议下发行。其特点是占用内存少,并发能力强,并发能力在同类型的网页服务器中表现较好。

4.2 消息队列

系统使用RocketMQ[8]建立集群消费模式的消息队列来管理系统各软件模块的中间消息。RocketMQ是一款分布式、队列模型的消息中间件。提供丰富的消息拉取模式,能够保证严格的消息顺序,具有高效的订阅者水平扩展能力和亿级消息堆积能力,可实现实时订阅消息。

4.3 北斗短报文编码

系统利用北斗RDSS[9]的中远海覆盖范围优势,有效利用北斗RDSS传输容量,针对气象预警产品进行合理压缩编码,最终通过北斗短报文通信[10-11],实现向海南安装了北斗船载终端的船只精准定向推送气象预警信息。北斗短报文数据传输格式包括指令、报文头信息、电文内容、校验和四个部分,如图7所示。其中电文内容是气象信息编码可用部分,长度为120字节。根据气象信息内容分析,对短报文中的电文内容进行格式定义,具体定义方法在第三节中已给出。

图7 北斗短报文数据传输格式

4.4 数据存储技术

系统采用Oracle Data Guard[12-13]和RAC[14]技术实现气象预警数据的存储,以保证数据的安全备份。Data Guard是Oracle推出的一种高可用性的数据库方案。它是在主节点与备用节点间通过日志同步来保证数据的同步,可以实现数据库快速切换与灾难性恢复。用户能够在对主数据库影响很小的情况下,实现主备数据库的同步。而主备机之间的数据差异只限于在线日志部分,因此被不少企业用作数据容灾解决方案。Oracle RAC是Oracle9i新版数据库中采用的一项新技术,也是Oracle数据库支持网格计算环境的核心技术。Oracle RAC—般由两台或者两台以上同构计算机及共享存储设备构成,可提供强大的数据库处理能力。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。

4.5 数据缓存技术

系统对经常查询的热点数据进行缓存,以加快查询业务的操作,减轻数据库的压力,数据缓存主要选用Redis[15-16]来实现。Redis是一个高性能的key-value数据库。支持存储多种value类型,并且支持不同的排序方式。为了保证效率,Redis把数据缓存在内存中,会周期性地把新的数据写入磁盘。同时Redis支持主从同步,数据可以从主服务器向任意数量的从服务器同步,这对读取操作的可扩展性和数据冗余很有帮助。

5 结束语

在现有北斗卫星对北斗船载终端的通讯支持的基础上,北斗船载终端可视化气象预警系统通过对气象信息进行合理压缩编码,采用北斗短报文通信技术,实现向海南安装了北斗船载终端的船只精准定向推送气象预警信息。通过在北斗船载终端中内置气象信息处理模块实时接收信息进行解码,根据各预警信息的展示要求,利用北斗船载终端的海图叠加绘制技术,实现了在北斗船载终端图形显示台风、海上雷雨大风、海上大风、海上大雾等气象预警信息。通过该系统,海上作业用户可以实时动态了解自己船只与灾害性天气落区之间的位置关系,及时判断出避险的最佳路线和时机,可以有效降低海上气象灾害造成的损失,保护人民生命财产安全。也有助于提高防灾减灾的能力,提升海上突发环境事故的应急处理能力。

猜你喜欢

字节台风北斗
北斗和它的N种变身
台风过韩
北斗时钟盘
No.8 字节跳动将推出独立出口电商APP
台风来了
“北斗”离我们有多远
No.10 “字节跳动手机”要来了?
台风爱捣乱
简谈MC7字节码
台风来时怎样应对