航空大数据——使用FineBI对ADS-B接收机布站情况及报文分析

2024-02-04 01:40

本文主要是介绍航空大数据——使用FineBI对ADS-B接收机布站情况及报文分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       这个专题的前面三篇文章主要是由ADS-B报文系统预测飞机坐标,偏向于数据应用。本文主要是对ADS-B接收机的数据做分析,为接收机的维护和增设提供依据,偏向于数据分析。

       本文相当于是对前文数据集的再利用,再分析。使用FineBI作为分析工具,机缘巧合碰到了这个软件,个人感觉在数据可视化上,用起来要比MATLAB方便一点。

       本文只是提供分析思路,所有可视化分析均可由MATLAB实现。

目录

引言

一、数据来源

二、分析思路

三、数据处理

三、可视化报告

四、仪表板总结


FineBI V 5.1.18 试用版下载:

       Windows版:点击下载

       macOS版:点击下载

       Linux版:点击下载

FineBI 资源包下载:

航空大数据——使用FineBI对ADS-B接收机布站情况及报文分析-数据集文档类资源-CSDN文库

(该资源包为FineBI资源包,导入FineBI中,能够获取数据及仪表板)

引言

       ADS-B系统的优势毋庸置疑,但ADS-B接收机的广泛部署,为接收机的维护增加了难度,本文希望为ADS-B接收机布站和维护提供依据。当前主要面临的挑战如下:

       (1)ADS-B的时间戳是毫秒,甚至是纳秒级别,单位时间数据量大,处理困难;

       (2)现有的监测系统大多都是对ADS-B报文进行分析,OpenSky就是使用ADS-B报文数据内容绘制的可视化飞行轨迹,但无法监控及维护大量ADS-B设备,日积月累系统中会出现大量“僵尸设备”,占用资源。

一、数据来源

       数据来自于OpenSky数据库,由于该数据库没有收录国内设备,所以大部分数据来自欧洲部署的ADS-B接收机设备。共涉及以下三个数据集:

(1)ADS-B接收机数据集:

       每行数据表示每台ADS-B接收机的地理坐标及型号,每台接收机都有一个全局唯一的id。

(2)ADS-B报文数据集:

       每行数据表示一条ADS-B报文,报文中包含飞机航班号和飞机当前坐标,除此之外,还有该报文被总服务器(此处是指OpenSky服务器)汇总的时间戳,和该报文一共被多少台ADS-B接收机捕获。每条数据都有一个全局唯一的ADS-B数据id。

(3)报文被接收机的捕获情况:

       该数据集记录了ADS-B报文被ADS-B接收机的捕获情况,如第一行表示,接收机136在2,506,033,793,125这个时间点(单位:纳秒),捕获到了ADS-B数据id为4,549,514的报文,捕获时的信号强度为35dB。同一个ADS-B数据id可能会被多台ADS-B接收机捕获,因此在数据集中会多条相同id的行。

       此处需要特别注意,接收机时间戳不是“ADS-B报文数据集”中的服务器时间戳,每台接收机都有自己的时间戳,接收机时间戳表示该接收机捕获该条数据的时间点,服务器时间戳是汇总多台接收机捕获情况的时间点,每台接收机之间、接收机与服务器之间,它们的时间戳或多或少会有延迟。

       以上三个数据集的关联视图如下:

二、分析思路

预期目标

       (1)利用FineBI处理航空大数据,实现 接收机布站情况 和 航路情况 可视化;

       (2)辅助ADS-B接收机布站和维护等工作做出决策。

实现思路:

       (1)根据“ADS-B接收机数据集”和“ADS-B报文数据集”,对 接收机整体布站情况 和 每个航班的航路 实现可视化;

       (2)分析航路被ADS-B接收机的捕获情况,来确定哪些位置需要增设ADS-B接收机;分析哪些接收机在航路监测中不活跃,哪些接收机接收信号强度有故障,哪些接收机时钟有故障,来对“ADS-B接收机数据集”中的接收机做维护。

三、数据处理

(1)时间戳单位转换:数据集中,接收机时间戳单位是纳秒,服务器时间戳单位是秒,为了统一单位,将接收机时间戳统一除以10^9,统一单位为秒;

(2)计算接收机与飞机的距离:这个距离主要用于判断接收机接收的信号强度接收器是否损坏,理想状态下,飞机离接收机越远,信号强度越小。现在已知飞机的经纬高,和接收机的经纬高,需要将大地坐标系转换为笛卡尔坐标系才能计算出三维空间距离,以飞机为例,根据如下转换公式计算:

       转换完成后,计算距离:

(3)接收机与服务器时间戳的延时:即便接收机与服务器之间的时间戳独立,但是时间前进的速度不变,则理想状态下,接收机与服务器时间戳的差是一个稳定的数值,如果该数值存在波动,则可以认为接收机的时钟损坏。

(4)所有捕获到该航班的接收机数量:如果一个航班被较少的接收机捕获,则需要在该航路上增设ADS-B接收机。

(5)为“ADS-B接收机数据集”增设一列虚拟航班号-1:用于观察哪些接收机被录入了系统,但已经失去活性成为了“僵尸设备”,需要进行相关维护或者剔除,防止资源浪费,后面可视化报告中会有详细展示。

三、可视化报告

       可视化报告一共分为三大块:ADS-B接收机布站情况总览、ADS-B报文数据可视化分析、ADS-B接收机性能分析。分别从ADS-B接收机整体布站情况,和ADS-B接收机个体性能两大方面进行分析。

(1)ADS-B接收机布站情况总览:

       上图组件为接收机布站情况总览,以接收机id为细粒度,根据每台接收机的经纬度,在地图上标出位置,不同型号的接收机以不同的颜色表示,不同型号的接收机有着不同的性能。有些型号的接收机体积大、布站困难,但精准度高;有些型号的接收机体积小、便携,但精准度不高。Dump1090型号是性价比最高的接收机,所以其布站最为广泛。

       上图为数量统计组件,分别统计了接收机数据集总记录数,和每种型号分别的记录数。

       上述组件可以联动,单独观察某型号接收机布局。

       组件功能总结:上述三个组件是对当前系统收录的ADS-B接收机布站情况的总览。

(2)ADS-B报文数据可视化分析:

       由于数据较多,选择部分航班观测。上面两个组件均以服务器时间戳为细粒度,展示了每个航班的航路以及飞机的高度变化。

       以航班3展示联动效果,闪烁动画更加直观地展示了飞机的飞行方向,从上图能够获得的信息是:航班3在服务器时间1000秒时从圣但尼起飞,往日内瓦方向飞行,在服务器时间2462秒时达到水平飞行的姿态。

       上图组件以接收机id为细粒度,不同航班以不同颜色表示,展示了每个航班使用到的接收机,航班号-1表示未被使用到的接收机,这也是为什么在“ADS-B接收机数据集”增设一列虚拟航班号-1的原因。

问题一:“僵尸设备”的判定

       发现问题:继续以航班3为例,单独观察航班3接收机的使用情况,航路上有一些灰色的接收机,这些是录入在系统中,但未被使用到的接收机。

       分析:这些接收机在该航班的航路上,理应能够捕获到该航班的ADS-B报文,但事实上这些接收机并未工作。

       结论:这些接收机就是需要维护的接收机,不能让他们在系统中占用资源,却不工作。

       上图组件是对每个航班被接收机捕获的情况汇总,按照经验值,单一时间的报文被3台以上的接收机捕获才合理,通过上图的组件,能够明显看出,哪些航班的航路需要增设ADS-B接收机。

问题二:哪里需要增设ADS-B接收机

       发现问题:整个数据集的服务器时间戳变化范围为0-3600秒,而航班1的数据在2100秒就消失了。

       分析:结合航班1被接收机捕获的情况汇总,和捕获航班1报文的接收机分布,发现航班1涉及的接收机数量少,航路上存在大量空白,且存在不活跃的接收机。

       结论:1、维护不活跃的接收机;2、航路上增设接收机。

       组件功能总结:上述组件主要对接收到的ADS-B报文结合ADS-B接收机布站情况进行分析,定位“僵尸设备”,为哪些接收机需要维护做出指导,并且为接收机的增设提供思路。

(3)ADS-B接收机性能分析:

       选择一个航班(此处以航班3为例),在指定时间区间观测具体接收机。

       上图组件,以服务器时间戳为细粒度,不同接收机赋予不同的颜色,展现接收机接收信号强度与接收距离的关系。

       组件联动观察id为587的接收机情况,飞机在服务器2000秒的时候飞离接收机,接收机信号强度骤降,直到最后信号消失,飞机飞离接收机监测范围,此接收机接收信号强度与接收距离关系良好,此接收机的信号强度接收器无需维护。

问题三:哪些接收机的信号强度接收器需要维护

       发现问题:id为574的接收机接收信号强度始终维持在0dB附近,而飞机逐渐远离接收机。

       分析:不符合接收距离越近,接收信号强度越强,接收距离越远,接收信号强度越弱的理论。

       结论:该接收机需要维护信号强度接收器。

问题四:哪些接收机的时钟需要维护

       上图组件,以服务器时间戳为细粒度,不同接收机赋予不同的颜色,展现每台接收机相对于服务器时间戳存在的时钟延迟。

       发现问题:id为296和312的接收机的时钟延迟不稳定。

       分析:时间前进速率不变,接收机时间戳与服务器时间戳的差值应为一个相对的稳定的值。

       结论:这两个接收机需要维护时钟。

       组件功能总结:上述组件对接收机个体的性能进行了分析,分别为维护每台接收机的信号强度接收器和时钟做出了指导。

四、仪表板总结

(1)实现了 接收机布站情况 和 各航班的航路 可视化;

(2)为接收机维护提供依据:判定哪些设备是不活跃的“僵尸设备”,判定哪些设备活跃但其相关功能组件存在损坏;

(3)为接收机增设提供依据:判定哪些区域(航路)缺少接收机部署。

最终结果呈现的页面布局如下:

这篇关于航空大数据——使用FineBI对ADS-B接收机布站情况及报文分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/676036

相关文章

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序