1. 引言
航空气象报文是民航气象中最重要的气象产品之一,包括了机场航空气象实况和机场预报、重要气象情报及低空气象情报等,其中航空气象实况数据主要包括机场例行天气报告和机场特殊天气报告。随着航空事业的飞速发展,用户对航空气象数据的及时性、有效性、气候统计资料及日常业务化报表统计效率等都提出了更高的要求 [1]。梁艳等 [2] 通过对机场预报进行解析得到了更简单、更容易理解的气象信息提供给用户;曹正等 [3] 通过对实况报文和预报报文进行解码构建了实时机场可视化监控平台,为用户提供实时的机场气象信息;陈阳权等 [4] 通过正则表达式对机场实况和预报进行解码构建了一套实时天气的辅助决策工具,提高了气象信息使用的效率。以上成果无不在实时的航空气象报基础上为用户提供有效、及时的实时气象服务,但在对历史资料应用上的成果较少。
长期以来,新疆航空气象部门的航空气象历史报文主要以光盘、硬盘持久化等方式进行存储,用户需要时需要在光盘或磁盘上进行拷贝、读取和解析,这种方式极不方便,用户体验也较差,难以满足用户对航空气象历史报文数据的需求。本平台就是在这种亟待解决的问题基础上研发的,通过搭建历史数据库,以统一便捷的方式为用户提供数据提取和统计支持服务,可大大改善用户对历史报文数据的使用效果。
2. 资料介绍
本平台所用资料主要包括机场例行天气报告、机场特殊天气报告、机场预报等报文。机场例行天气报告(简称METAR)是机场按规定时间间隔有序发布的包含“风向风速、温度、主导能见度、跑道视程、天气现象、修正海平面气压、露点温度、云量云高以及部分量未来2小时的趋势变化”等要素的天气报告,该报告以航空电码形式发布;机场特殊天气报告(简称SPECI)包含的要素与METAR中一致,但发布时间不是固定的,当机场天气达到规定的阈值时发布该报文;机场预报包含了9小时机场预报(简称FC)和24小时机场预报(简称FT),包含的要素有“风向风速、主导能见度、天气现象、云组、最高温度、最低温度”等以及要素在未来9小时或24小时内的变化,是用于描述机场未来天气变化的预报产品,以航空TAF电码格式发布。
通过METAR和SPECI报文可以解析得到一个机场逐30分或1小时的气象要素实况信息,通过对实况信息进行统计分析即可得到重要天气发生日期、时段,给定时段内历年重要天气发生的情况,给定日期要素最高、最低、平均状态等的统计数据,结合机场预报产品可得到航空天气信息的统计分析等对行业运行有用的数据,为航空运行部门提供有力的数据参考。
3. 系统设计
此平台包括了基于报文的历史报文数据库和基于历史报文数据库的查询统计平台。
3.1. 报文数据库的设计
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,是Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。本平台的报文数据库采用MySQL数据库,安装在Windows Server 2012服务器上,入库数据包括机场例行天气报告、机场特殊天气报告、机场预报等报文数据,建立表为“metabbr”,按报文的要素信息构建字段为“id、odate、otime、vtime、tt、cccc、rptkey、rptcontent、inserttime”等字段,具体表设计如表1所示。
![](Images/Table_Tmp.jpg)
Table 1. Airport message data table design
表1. 机场报文数据表设计
3.2. 报文入库服务
设计好数据库后,需要在数据库中填充报文数据。本平台的报文入库服务采用C#编写,以Windows服务方式运行在服务器的后端。服务通过实时从民航气象实时数据库中检索近3天的报文数据,若报文数据在本数据库中不存在,则按入库规则插入到历史数据库中供机场重要天气分析平台。开发中采用“Oracle.ManagedDataAccess.dll”工具来读取民航气象实时数据库Oracle数据库,采用“MySql.Data.dll”工具将读取的数据入库到MySQL数据库中。报文数据结构如下所示:
///
/// 通用要素
///
class MsgHelper
{
public string Id { get; set; } // 数据ID
public string Odate { get; set; } // 数据日期
public string Otime { get; set; } // 数据时间
public string Vtime { get; set; } // 有效时间
public string Tt { get; set; } // 数据种类
public string Cccc { get; set; } // 机场代码
public string RptContent { get; set; } // 报文内容
public DateTime InsertTime { get; set; } // 插入时间
}
///
/// 气象报文
///
class SaspFcftMsgInfo:MsgHelper
{
public string Bbb { get; set; } // 修订标识
public DateTime RefTime { get; set; } // 报文时间
}
在实际运行环境中,通过Windows命令行控制服务的加载和解除,加载服务的命令行如下:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe气象报文数据存储服务.exe
Net Start ServiceForAreoMsg
sc config ServiceForAreoMsgstart= auto
解除服务的命令行如下:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe/u气象报文数据存储服务.exe
具体数据入库业务流程如图1所示。
![](//html.hanspub.org/file/23-1542327x7_hanspub.png?20211130085435799)
Figure 1. History message library entry process
图1. 历史报文库入库流程
由图1的历史报文库流程可见,通过不断轮询民航气象数据库,每次读取该数据库中3天的报文数据,读取后将获取的数据封装为SaspFcftMsgInfo对象,对象在InsertMsgHelper入库程序中进行数据校验,若已经入库则不做处理,等待下一次运行,若未入库则将数据按设计的方案入到历史数据库中。入库程序每10分钟运行一次,能够保证这些数据及时入库。
3.3. 系统设计
在历史报文库基础上,构建一套机场重要天气统计分析平台,可为用户提供丰富的历史数据统计分析服务,从而提高气象服务水平。
3.3.1. 平台架构
统计分析平台采用全B/S架构,以微软最新的开源框架ASP.NET Core 3.1作为底层框架,采用MVC架构模式,以FineUI Core框架作为开发框架进行构建。FineUI Core是一个企业级别的UI控件库,由合肥三生石上软件有限公司研发和维护,封装了大量的前端UI和前后端通信操作的程序,能够满足快速开发程序的目的。
此平台主要包括给定时段的产品及重要天气日数统计、航空气象报文检索、给定阈值的重要天气个例统计、给定时段历年该时段重要天气统计、给定日期的该日期要素统计分析等功能,统计结果以表格或图形方式展示给用户,用户可以根据需要进行数据导出。系统整体架构如图2所示。
![](//html.hanspub.org/file/23-1542327x8_hanspub.png?20211130085435799)
Figure 2. Schematic diagram of the overall system architecture
图2. 系统整体架构示意图
由图可见,系统在实现上分三层,数据层或模型层、业务逻辑层、表现层等,数据层即数据模型,封装了报文数据、解码数据、航空器空中报告的对象模型和数据库数据读取程序以及一些公共的方法;业务逻辑层处于数据层和表现层的中间,主要负责与表现层和数据层进行通信,表现层中所需要的数据均通过业务逻辑层进行解析处理和按表现层所需格式进行封装,然后传递到表现层中进行展示;表现层也称UI层,只对前端渲染负责,当用户需要某类数据时,用户端通过前端UI按钮,以AJAX技术与服务器进行交互,表现层收到相应请求时,向业务逻辑层请求数据,得到反馈后展示数据。产品及重要天气日数统计、重要天气案例统计、历年重要天气统计、给定日期要素分析均在气象报文检索基础上实现。
3.3.2. 系统实现
本平台中实现的模块均需要对航空气象报文进行解码,对报文的解码方案主要有两种,一是通过对报文每一项按行业标准进行拆解和赋值,二是采用正则表达式对每一项进行正则匹配和赋值。第一种方案是全体拆解方案,即无法直接获取到某一个单一要素,拆解时需要一一对比每一个字段逐一进行,而第二种方案则可直接获得单一要素,而无需对每一个字段都进行拆分。本平台中由于需要直接统计某一单一要素,为了提高整个系统的运行效率,采用的是正则表达式的解码方案。正则表达式解码方案可参考陈阳权等 [4] 等对报文的处理方案。通过对报文数据的解码处理,可为本平台的统计分析模块提供可用的数据源。
气象报文检索即从气象数据库中按给定时间检索气象报文,包括机场实况报文、预报报文等,检索的气象报文可进行显示,供用户查询和下载,同时也是其它统计模块的数据基础。气象报文模块展示展示了气象报文的时间和气象报文的内容,同时对气象报文中平均风速 ≥ 12 m/s或阵风 ≥ 17 m/s、主导能见度小于1000 m、对飞行有严重影响的天气现象如雷暴、冻雨等给出着色展示,同时还可导出为csv格式数据。如图3所示为气象报文检索示意图。
![](//html.hanspub.org/file/23-1542327x9_hanspub.png?20211130085435799)
Figure 3. Schematic diagram of meteorological message retrieval
图3. 气象报文检索示意图
产品及重要天气日数统计分析模块主要对报文进行解码,对解码后的要素提取出报文的类型、报文中风温压湿等进行统计分析,可得到给定时段内各类报文的份数、重要天气的日数及时段、最高最低温度及时段等对用户有重要意义的统计信息,以减轻用户在报表统计中的工作量。另外,对这些信息按时段进行实时的监控,还能及时发现数据质量问题。如图4所示。
重要天气案例统计及提取即给定案例提取的时间段,通过自定义案例提取阈值,即可从历史气象报文中提取出所需要的天气案例的时段,并可展示和下载。此模块查询天气案例主要基于大风、天气现象、低能见度、高温等要素,在查询过程中,设置了默认阈值,使用者也可根据需要更改阈值。
默认大风阈值为平均风 ≥ 12 m/s或阵风 ≥ 17 m/s,低能见度为主导能见度<1000 m且跑道视程<550 m,高温 ≥ 35℃,默认天气个例长度为2小时且两个天气个例之间间隔2小时。对天气现象不设置默认阈值,用户可根据需要输入天气现象即可进行个例查询。
用户对个例进行查询时可以按已经设置的阈值进行查询,若有特殊需要可自定义阈值的上限和下限进行查询。天气个例长度和天气个例之间的间隔也可以按需要进行设置。对低能见度的提取还可根据输入的天气现象如大雾、沙尘等进行提取。
重要天气案例统计提取如图5所示。
![](//html.hanspub.org/file/23-1542327x10_hanspub.png?20211130085435799)
Figure 4. Schematic diagram of the statistical analysis of the number of products and important weather days
图4. 产品及重要天气日数统计分析示意图
![](//html.hanspub.org/file/23-1542327x11_hanspub.png?20211130085435799)
Figure 5. Schematic diagram of statistical extraction of important weather cases
图5. 重要天气案例统计提取示意图
历年重要天气统计是给定日期时段,提取该时段近10年内历年的重要天气,可以供管理部门或预报员查阅如节假日期间或重要活动期间历年的天气状况,以便更好的做好决策分析。提取重要天气时的天气类型主要包括大风、低能见度、冻降水、中或大的降水、大雾、浓烟、沙暴、尘暴、雷暴、高温等。提取时可以选择所有天气,即提取出所有设定值的天气,也可以勾选各个天气分别提取,对提取的天气按一定的阈值设置颜色,用户可根据需要进行导出。提取结果可展示为报文,也可展示为天气要素。如图6所示。
![](//html.hanspub.org/file/23-1542327x12_hanspub.png?20211130085435799)
Figure 6. Diagram of important weather extraction in the last 10 years of the calendar year
图6. 近10年历年重要天气提取示意图
给定日期要素分析是用户给定一个日期,通过检索近10年当日的实况报文,解析出风、温度、气压、湿度、风速、主导能见度、跑道视程等气象要素,通过计算可得到这些要素的多年平均值、最大值、最小值等,以图形和表格方式呈现给用户。同时给出历年所有要素的数据列表展示。统计结果可直接导出为csv数据,图形产品可下载为图片或pdf文件。如图7所示。
![](//html.hanspub.org/file/23-1542327x13_hanspub.png?20211130085435799)
Figure 7. Schematic diagram of the statistical analysis of the elements for the last 10 calendar years for the given date
图7. 给定日期近10年历年要素统计分析示意图
通过对上述功能的实现,大大减轻了管理部门和气象人员在天气案例查询及数据统计分析上的工作量,为报表制作、天气研究提供了有用的数据支撑。
4. 结束语及展望
以航空气象报文为基础,通过构建航空气象数据历史数据库,构建了一套机场重要天气统计分析平台,该平台实现了航空气象数据检索、航空产品及重要日数统计、重要天气案例提取、给定时段历年重要天气信息查询、给定日期重要天气要素统计分析等功能,为用户提供了便捷有效的数据提取及统计分析平台,为用户报表制作、天气研究提供了可靠的数据支撑。
以航空气象历史数据库为基础,通过不断累积气象数据序列,未来可通过智能算法来实现对航空气象要素的预测,并以此自动生成航空气象预报报文,为机场预报人员提供基于实时预测的报文参考,同时对于不发布气象预报的机场,也可作为航空公司等部门提前进行预案分析的参考数据。除此之外,研究历史数据的相似性,通过历史天气相似原则,还可为中长期预报提供参考依据。