1. 引言
民用航空气象工作是民航事业的重要组成部分,是民航安全、高效发展的重要力量。气象情报与相关信息作为民航气象的基础,涵盖机场实况及预报、航路重要气象情报以及其他预报预警产品,是民航气象工作中最重要的一环。随着民航气象业务的发展,民航气象情报由原先单一的报文产品,逐渐拓展至报文、图形、格点产品,每日的数据交换量达上万条。同时,按照《民航空管系统气象工作质量管理办法》的要求,气象信息系统维护人员需要确保气象情报及时有效的收集、转发工作。
根据民航气象中心2019年7月至2020年6月全国各地区错报情况统计数据显示,新疆地区错报356份,占全国错报总数的13%;错报份数达到20份以上的34个机场中,新疆地区有9个机场,占比超过26%。由此可见,新疆区域气象情报质量控制水平亟需提高。但是目前,新疆区域各支线机场并没有配备完善的情报监控手段来进行气象情报交换的监控和告警,在新疆区域内支线机场出现迟报、错报时未能实时发现、提醒、纠正,而是在每月汇总时进行整体统计,影响疆内气象情报参与全国交换的质量,一定程度上影响了新疆区域整体的气象服务水平。邓生寅(2020年)在预防气象报文迟发漏发措施的研究中强调,气象报文的迟发和漏发会构成不安全事件及工作质量差错中的一般差错或严重差错,他对具体迟发漏发的案例进行了分析,并且探索改进的方法 [1]。朱国栋等人(2019年)设计开发了民航气象报文质控与编发系统,通过要素分解、定义完善的质量控制算法,降低了民航气象情报在编发过程中出现错误 [2];韩阳、何正斌等人(2020年)均对民航气象报文在数据库、MQ及AFTN线路的监控方法做了详细阐述,有助于设备维护人员及时排除安全隐患和故障 [3] [4]。以上研究对于本平台设计具有重要的启发性和参考意义。本平台参考以上成果,结合新疆地区气象中心实际需求,运用C#编程语言,结合气象情报在民航气象数据库、MQ及AFTN线路的入库和流转情况,实现对新疆地区现有23个机场气象情报发布及时性、准确性进行实时监控。除在平台界面反馈监控结果外,还能实现实时通过语音电话方式自动提醒发布机场值班人员,将提醒场景进一步延伸到报文编发者,有利于新疆区域各机场气象报文的及时发布和更正,提高新疆区域民航气象情报质量控制水平。
2. 系统设计
2.1. 功能需求
根据平台用户使用需求调研,平台总体设计需满足以下需求:
1) 具有友好的可视化交互界面,融合GIS地图直观显示所有机场的气象情报发布状态。
2) 多数据源采集,避免单一源数据缺失或交换不及时造成误报警。新疆地区现有23个机场中,多数机场的发报终端通过AFTN进行发报,所以在数据采集过程中需要考虑多数据源采集。
3) 针对某一机场发布的某一类型报文的发布状态,需以线路流转图的方式直观体现,便于值班人员第一时间判断情报流转的问题节点,及时处理线路故障。
4) 针对不同机场不同岗位可设置多个联系人,包含座机号码和手机号码。
5) 针对每个机场可设置仅监控、监控并告警、不监控三种方式,避免由于机场设备维护或故障时,持续监控告警干扰值班人员。
2.2. 总体设计
新疆区域民航气象情报交换监控平台采用C#编程语言进行开发,数据存储采用MySQL数据库,部署在Windows操作系统环境下。平台从模块划分上分为数据采集模块、预报报文监控模块、观测报文监控模块、错报判定模块、GIS集中显示模块,从界面设计上分为总体监控、观测情报监控、预报情报监控、记录查询、设置五部分。
平台总体结构见图1:
Figure 1. Overall structure diagram of platform
图1. 平台总体结构图
2.2. 主要功能设计
1) 多源数据采集功能。支持从气象数据库、MQ留底文件、AFTN留底文件、错报留底文件4类数据源中提取最新的新疆区域内的气象报文数据,其中气象数据库应包含了二期数据库、交换区数据库、机场引接数据库、对外服务数据库共4个Oracle数据库,避免单一检索结果不准确导致数据判断错误。
2) 机场天气预报FC及FT类报文监控功能。实现对新疆区域内所有机场的FC及FT预报报文的发布状态解析,包含报文在各线路上接收、发送时间,报文存入气象数据库时间,报文是否迟发、漏发判定,历史报文监控状态查询等功能。
3) 机场例行天气报告SA类报文监控功能。实现对新疆区域内所有机场的SA观测例行天气报告的发布解析,包含报文在各线路上接收、发送时间,报文存入气象数据库时间,报文是否迟发、漏发,是否自动报等的判定,历史报文监控状态查询等功能。
4) 错报判定功能。通过实时读取错报留底文件,对新疆地区23个机场的错报进行判定。
5) GIS集中显示功能。以红绿灯方式直观展示新疆区域23个机场情报监控状态。光标停留机场状态灯时,能够显示该机场情报监控的具体状态信息。
6) 告警功能。实现对告警、警告、提醒信息的声音、界面、短信、电话提醒功能。
7) 查询导出功能。实现新疆区域各机场的情报监控状态历史记录、情报入库信息、告警信息的自定义查询功能,并能够将查询结果导出。
2.3. 数据库设计
本平台的监控结果存储数据库采用MySQL数据库,其具有运行速度快、体积小、命令执行的速度快、免费开源、移植性强等特点。
入库数据包括机场例行天气报告监控数据、机场预报的报文监控数据、告警提醒数据和机场联系人数据。其中对机场例行天气报告监控数据建立表为“sa_report”,按报告的监控结果要素信息构建字段为“fID, record Time, record Time Bj, cccc, obcc, tt, sender Address, different Sender Addr”等字段,具体表设计见表1。
Table 1. Data table fields of airport routine weather report
表1. 机场例行天气报告数据表字段
3. 平台功能的实现
3.1. 数据采集模块的实现
数据采集模块负责从气象数据库、MQ留底文件、AFTN留底文件、错报留底文件中提取最新的新疆区域内的气象报文数据,交由相应报文监控及错报判定模块进行检测处理。针对数据采集异常的情况调用告警。气象数据库包含了二期数据库、交换区数据库、机场引接数据库、对外服务数据库共4个Oracle数据库。MQ及AFTN留底文件记录了所有通过网络和AFTN线路收发气象报文数据,模块通过正则表达式对留底文件进行解析提取。通信分系统通过纠错规则判定的错报存入错报留底文件,模块通过正则表达式将实时的错报数据进行提取。数据采集的部分源代码如下:
//建立ftp连接
FTPHelper ftp = new FTPHelper(getXmlConfig(ftpHisServerIP), getXmlConfig(ftpHisRemotePath), getXmlConfig(ftpHisUser), getXmlConfig(ftpHisPassword));
//下载留底文件
bool ftpR54Flag = ftp.ftpDownload(Application.StartupPath + @\temp\SA\+ path + @\, RXXX + datetime.ToString(yyMMdd) + .54);
bool ftpS54Flag = ftp.ftpDownload(Application.StartupPath + @\temp\SA\ + path + @\, SEND + datetime.ToString(yyMMdd) + .54);
bool ftpS63Flag = ftp.ftpDownload(Application.StartupPath + @\temp\SA\ + path + @\, SEND + datetime.ToString(yyMMdd) + .63);
if (!ftpR54Flag)
{
ftpR54Flag = ftp.ftpDownload(Application.StartupPath + @\temp\SA\ + path + @\, RXXX + datetime.ToString(yyMMdd) + .54);
}
if (!ftpS54Flag)
{
ftpS54Flag = ftp.ftpDownload(Application.StartupPath + @\temp\SA\ + path + @\, SEND + datetime.ToString(yyMMdd) + .54);
}
if (!ftpS63Flag)
{
ftpS63Flag = ftp.ftpDownload(Application.StartupPath + @\temp\SA\ + path + @\, SEND + datetime.ToString(yyMMdd) + .63);
}
3.2. 预报报文监控模块的实现
预报报文监控模块通过数据采集模块获取的多数据源报文数据,对23个机场的预报FC、FT报文进行提取、检查,进行报文未发、迟发判断,对在发报时次45分、47分、50分未发报的机场,调用告警模块进行提醒。该模块的展示界面包含机场列表、报文发布状态及基本信息、入库状态及留底状态、报文流转图、历史报文状态查询。光标停留状态灯及流转图时,会显示记录的时间戳信息。预报情报监控界面见图2。
Figure 2. Forecast information monitoring interface
图2. 预报情报监控界面
3.3. 观测报文监控模块的实现
观测报文监控模块通过数据采集模块获取的多数据源报文数据,对23个机场的观测SA整点报或半点报报文进行提取、检查,进行报文未发、迟发判断,对在发报时次3分、5分、7分未发报的机场,调用告警模块进行提醒。该模块的展示界面和预报情报监控界面类似,包含机场列表、报文发布状态及基本信息、入库状态及留底状态、报文流转图、历史报文状态查询。光标停留状态灯及流转图时,会显示记录的时间戳信息。观测情报监控界面见图3。
Figure 3. Observation information monitoring interface
图3. 观测情报监控界面
3.4. 错报判定模块的实现
错报判定模块基于数据采集时对错报留底文件的实时提取数据,对涉及新疆地区23个机场的错报进行分解判断,并根据判定结果调用告警模块对发布机场岗位值班人员进行提醒。错报监控结果会对应显示在情报监控界面。
错报留底文件中记录了符合错报检测规则的各类型错报的详细信息,包含报文接收时间、报文来源线路号、错误代码、报文内容5项信息。常见的错误代码及含义见表2:
错报判定模块利用正则表达式对错报留底文件进行匹配检索,获得错误报文的详细信息,并根据报文类型、机场四字代码从MySQL数据库获取机场联系人数据,调用告警模块将错报内容及时进行提醒。错报提取部分代码如下:
//报文质量控制模块
this.Error =
if (asynContent.IndexOf(err)>=0)
{
this.Error = 错报
//替换掉报文,剩余的就是报错信息。
Match code = Regex.Match(asynContent, @(FCCI|SACI|SPCI|FTCI)[\s\S]*?=);
if(code.Success)
{
this.Error = Regex.Replace(asynContent, code.Value, );
this.Error = Regex.Replace(this.Error, @\(, 错报内容:);
this.Error = Regex.Replace(this.Error, @\), );
//line_no
this.Error = Regex.Replace(this.Error, @line_no, 线路号);
//err_code
this.Error = Regex.Replace(this.Error, @err_code, 错误编号);
}
//剔除报文中的line_no和err_code
//报文具体内容
code = Regex.Match(asynContent, @line_no[\s\S]*?err_code[\s\S]*?\n);
if (code.Success)
{
this.asynContent = Regex.Replace(asynContent, code.Value, );
}
}
3.5. GIS集中显示模块的实现
GIS集中显示模块可实现以Shp矢量地图或瓦片地图为底图,以红绿灯方式直观展示新疆区域23个机场情报监控状态。状态灯包含绿色代表正常,红色代表超过有效发报时间却未发,或迟发、错发,紫色代表有效发报时间内暂未发布。当光标停留在某一机场状态灯上时,会显示该机场情报监控的具体状态信息。总体监控界面见图4。
3.6. 告警模块的实现
告警模块可根据其它模块调用信息获取报文类型、发布机场、岗位类型、主备用联系人电话号码等信息,在平台界面进行红色告警提示并用人声播放具体告警内容,同时生成提醒文本文件,利用本单位现有的自研提醒软件调用短信Modem进行向发布机场联系人短信及电话提醒。机场是否进行情报监控及告警可在提醒设置界面进行设置,提醒设置界面见图5。
新疆区域各机场联系人电话可通过联系人设置界面进行设置,每个岗位可设置部门座机和备用手机联系人,告警模块在进行提醒时会优先拨打部门座机号码,在未接听的情况下会拨打备用手机联系人号码,可有效避免提醒不到位的情况发生。联系人设置界面见图6、图7。
4. 结语
本平台以新疆区域民航气象情报交换为监控对象,开发设计集收集、监控、告警、显示功能于一体的模块化程序,实现对新疆区域现有23个机场发布的飞行气象情报进行及时性、准确性监控,异常情况下通过声音、短信、电话方式及时提醒至机场发布人员,可有效降低新疆地区各机场报文发布时出现迟发、漏发、错发的可能性,避免发生业务差错甚至安全差错,提高气象情报质量控制能力。本文参考既有研究成果,综合了错报检测,数据库入库监控,MQ线路、AFTN线路流转监控,利用GIS技术进行集成化显示,同时能够及时进行短信、电话提醒,相较于各参考文献中单一功能的研究成果,在技术上具有一定的集成性和创新性,在业内具备较高的实用价值。
该平台可通过配置参数,使其可作为其它地区气象中心对辖区内的气象情报交换工作的监控与告警平台,也可单独应用于支线机场观测室、预报室的报文发布提醒、漏发告警以及报文覆盖警告等场景,具有较高的移植性,推广应用前景较好。
参考文献