船舶自动识别系统(Automatic Identification System,AIS)是船舶航行必须安装的船载AIS设备,其主要作用是实现船舶导航和监控[1]。目前海上管理系统不断完善,已经形成AIS基站的基础网络体系[2]。随着船载AIS设备数量的逐渐增加,设备信息的收集和管理逐步完善,形成了海量的船舶AIS轨迹数据。该数据可为船舶异常识别、交通情况监测等提供可靠依据[3]。但是该数据量较大、维度较高,并且数据格式存在一定差异,导致数据的查询效率、效用程度受到影响,同时数据的传输耗时较大[4]。因此,数据压缩成为解决该问题的有效手段。在压缩过程中,如何保证数据的完整性,避免数据在压缩过程中发生损坏,成为重点研究内容。刘歌等[5]为保证多维数据的压缩效果,以MVC架构为核心,通过正交变换的方式实现数据重构,并对重构后的数据进行编码,以此完成多维数据压缩。该方法在应用过程中,可实现数据降维,但是无法实现不同数据格式的处理。张晓梅等[6]为实现数据压缩,利用边缘计算较好的计算能力,实现数据无损压缩。但是该方法在应用过程中,对于维数较高数据的压缩率较低。
提升算法属于框架算法,该算法能够强化数据点的处理效果,常见的提升算法包扩道格拉斯-普克算法(Douglas–Peucker,DP)、机器分类算法等。本文以DP算法为核心,提出船舶AIS航迹数据压缩方法。
1 船舶AIS航迹数据压缩 1.1 AIS数据处理 1.1.1 AIS轨迹数据格式转换AIS在使用过程中,仅可实现可打印的AIS字符传输,该字符的有效范围为0X20~0X7E,在该范围内,可将字符划分为保留、有效和未定义3 种字符。其中保留字符指的是传输数据中,用于控制数据格式的关键字[7],有效字符用于描述能够用于打印的ASCII字符,未定义字符用于描述无法直接进行传输的字符。
AIS数据的每条记录均由开始符(!)开始,以结束符(<CR><LF>)结束。采用封装方式对AIS数据进行处理,利用高级链接HDLC(高级数据链路控制)进行传输,对其进行不归零倒置编码并进行数字调制解调,同时插入同步和停止位,最后经由甚高频进行传输,以此可通过IEC61162-1标准和ITU1371-1协议,完成AIS轨迹数据格式的转换,将其从暗码转换成明码。
1.1.2 AIS轨迹数据清洗由于AIS数据中包含静态数据、动态数据等所有和船舶航行相关的数据,这些数据在采集过程中,会受到网络性能、采集环境以及采集设备性能的影响,导致数据不完整、错误或者重复,影响数据的效用水平。因此,完成AIS数据格式转换后,需对AIS数据进行清洗,清洗的主要目的是删除AIS数据中的不完整数据,并且清除数据中的错误数据,同时对重复的数据进行筛选,只保留一条数据记录。本文针对AIS数据的清洗需求,采用基于偏序集的规则链方法完成AIS数据清洗,整体结构如图1所示。该方法整体分为标准模块、业务模块以及自动模块,将格式转换后的数据作为该方法的输入,结合数据清洗需求按层选择相应规则,以此生成每一层的规则链,最后依据规则链完成数据清洗,并输出清洗后的AIS数据。
海量的AIS轨迹数据的存储和调用,是实现该数据快速压缩以及显示的主要基础,如何高效完成所需AIS数据的提取,并按照时间顺序将其导入DP算法中进行压缩,是待解决的首要问题。为保证AIS轨迹数据的快速压缩,采用SQLite数据库进行AIS轨迹数据的管理,清洗后数据存储在数据库中,为轨迹数据压缩提供支撑。数据库的管理方案如图2所示。该数据库以单TRACK表库结构为主完成构建,并且单表的各条记录中包含MMSI(数据识别码)、经度、纬度以及时间4个字段。单表的一条记录则对应AIS设备一次发送的数据,以此实现AIS轨迹数据的可靠管理,保证AIS轨迹数据的高效压缩。
AIS轨迹数据中,主要是依据经度和纬度描述船舶的地理位置,在进行数据压缩前,先对经度和纬度进行转换,形成墨卡托坐标,在此基础上进行转换使其形成屏幕坐标进行显示。在上述转换过程中,依据等角正圆柱投影原理完成,如果船舶在某处的经度和纬度坐标用
$ {r_0} = \frac{a}{{\sqrt {1 - {e^2}{{\sin }^2}\varphi } \times \cos \varphi }} ,$ | (1) |
$ q = \ln \tan \left( {\frac{\varphi }{2} + \frac{\varphi }{4}} \right) - \frac{e}{2}\ln \frac{{1 + e\sin \varphi }}{{1 - e\sin \varphi }},$ | (2) |
$ \left\{ \begin{gathered} x = {r_0} \times \lambda ,\\ y = {r_0} \times q 。\\ \end{gathered} \right. $ | (3) |
式中:
依据上述公式即可完成所有AIS轨迹数据中,船舶位置数据的转换,转换后的数据存储在数据库中。
1.3 基于DP算法的AIS轨迹数据压缩AIS轨迹数据压缩的主要目的是快速获取AIS数据中的目标数据,实现船舶航行轨迹的识别监测。DP算法属于一种曲变形逼近算法,主要采用以直代曲的理念,保留AIS航迹中的关键航迹点,舍弃其中的非关键航迹点,以此高效实现船舶AIS航迹数据压缩。该算法的详细压缩过程如下:
步骤1 船舶轨迹离散点为
步骤2 在
步骤3 设定AIS轨迹数据的压缩阈值
步骤4 按照上述步骤完成整个航迹数据处理后,连接航迹曲线
为验证本文方法对于船舶AIS航迹数据压缩的处理效果,以某公司的船舶AIS航迹数据为例,进行相关测试。该数据主要以csv的文件格式进行存储,共包含256艘船的航迹数据,共计1200条,部分数据详情如表1所示。
为验证本文方法的船舶AIS航迹数据压缩效果,采用压缩率ζ、数据长度损失率
$ \xi = \frac{{{N_o} - {N_s}}}{{{N_o}}},$ | (4) |
$ l = \sum\limits_{n = 1}^{N - 1} {\overline {{p_n}{p_{n + 1}}} },$ | (5) |
$ {l_L} = {l_o} - {l_s},$ | (6) |
$ {l_R} = \frac{{{l_L}}}{{{l_o}}} 。$ | (7) |
式中:No和Ns均为船舶航迹数据点数量,前者对应压缩前,后者对应压缩后;
依据上述公式计算本文方法在不同航迹数据点数量下的压缩率和数据长度损失率,结果如表2所示。可以看出,采用本文方法对船舶AIS航迹数据进行压缩后,其压缩率均在90.6%以上,数据长度损失率最大值为0.11%。满足使用需求,可保证AIS航迹数据的压缩效果。
为验证本文方法对于船舶AIS航迹数据的压缩应用性,随机选择一艘船舶的AIS航迹数据,对该数据进行转换和清洗后,进行数据压缩,并且获取压缩前后的AIS轨迹结果,如图5和图6所示。可知,船舶AIS轨迹数据压缩前,原始数据中包含若干个数据点,采用本文方法对数据进行压缩后,共剩余13个数据点,这些数据点完好保存了船舶转向行为数据点,能够精准描述船舶的操纵情况,不会遗漏船舶航行过程中的关键点,完好保存船舶运动特性。因此,该方法具有较好的应用性,能够在保留AIS轨迹特征数据的前提下,完成数据压缩,为船舶航行情况管理提供可靠依据。
船舶航行情况监测、运动模式识别等是船舶管理的重要部分,在管理过程中,由于AIS数据量较大,并且数据中存在一定的重复或者损坏数据,导致数据的效用水平较低,直接降低船舶的管理效率。因此,为提升船舶的管理效果,针对海量AIS船舶航迹数据,提出提升算法下的船舶AIS航迹数据压缩算法,并对该算法的应用效果进行测试。结果表明,本文所提方法具有较好的船舶AIS航迹数据压缩性能,并且压缩后数据能够可靠描述船舶航行过程中操纵情况,为船舶航行管理提供可靠保障。
[1] |
高大为, 朱永生, 张金奋, 等. 基于AIS数据的船舶航迹多维预测方法[J]. 中国航海, 2021, 44(3): 56-63. |
[2] |
鄢博冉, 高大为, 朱永生, 等. 基于低信噪比AIS数据的船舶航迹精准预测[J]. 船舶工程, 2021, 43(10): 111-117. |
[3] |
陈晓杰, 李斌, 周清雷. RTL级可扩展高性能数据压缩方法实现[J]. 电子学报, 2022, 50(7): 1548-1557. |
[4] |
卢民荣, 郑建宁. 基于极值点特征识别的大规模时序数据压缩分析[J]. 统计与决策, 2021, 37(20): 39-43. |
[5] |
刘歌, 芮国胜, 田文飚, 等. 序贯压缩感知下的海洋监测数据在线重构方法[J]. 西安电子科技大学学报, 2022, 49(1): 173-180. |
[6] |
张小梅, 曹蓥, 娄平, 等. 基于边缘计算的数据无损压缩方法[J]. 计算机科学, 2022, 49(S2): 842-847. |
[7] |
姜琨, 刘征, 朱磊, 等. 基于有向无环图的倒排链等字长划分压缩算法[J]. 计算机应用, 2021, 41(3): 727-732. |