本发明涉及船舶自动识别系统技术领域,尤其是一种基于ais大数据的船舶航迹分析方法。
背景技术:
ais系统全称为船舶自动识别系统,由岸基设施和船载设备共同组成,是一种新型的集网络技术、现代通讯技术、计算机技术和电子信息显示技术为一体的数字助航系统和设备。ais系统配合gps将船位、船速、改变航向率和航向等船舶动态结合船名、呼号、吃水和危险货物等船舶静态资料由甚高频(vhf)向附近水域船舶及岸台广播,使邻近船舶及岸台能及时掌握附近海面所有船舶的动静态资讯,得以立刻互相通话协调,采取必要避让行动,有效保障船舶航行安全。
在船舶航行过程中提供精确的航行轨迹,提高ais大数据中航迹的分析速度与精准度,有效减少船舶碰撞、搁浅和触礁等重大海事的发生。
技术实现要素:
本发明要解决的技术问题是:为了解决上述背景技术中存在的问题,提供一种基于ais大数据的船舶航迹分析方法,通过多种算法的融合应用提高ais大数据中航迹的分析速度与精准度,有效减少船舶碰撞、搁浅和触礁等重大海事的发生。
本发明解决其技术问题所采用的技术方案是:一种基于ais大数据的船舶航迹分析方法,其特征是:该方法包括以下步骤:
步骤1,ais数据处理
通过中值滤波、均值滤波方法过滤数据中的异常值并修复数据;
步骤2,ais数据中航迹停留点计算
设定时间阈值和距离阈值,计算锚点与锚点之间的时间跨度和空间距离,通过时间跨度和空间距离分别与设定时间阈值和距离阈值的对比,确定单条航线的停留点;通过球面介绍聚类算法将单条航线上的停留点聚类的方式来获得多条航线的停留点;
步骤3,航迹停留点后台接口实现
数据储存hive模块和postgresql通过jdbc连接,实现hive数据到postgresql数据库的迁移,采用java技术,通过vert.x工具集调取postgresql数据库查询停留点数据;
步骤4,指定参照航迹挖掘相似航迹
使用douglas-peucker算法压缩轨迹数据后,采用lcss算法找出两段轨迹相似的部分,同时通过动态时间规整dynamictimewarping(dtw)运算出航迹之间的相似度;
步骤5,航道挖掘
采用dbscan算法将相似航迹聚类,通过图形描边算法和lcss相似性算法结合实际业务场景进行航迹挖掘。
步骤6,异常航迹检测
计算挖掘航道上的航迹点到航道两边的距离之和,通过对比该距离之和与航道宽度和设定偏离距离阈值距离之和来检测出异常航迹。
ais数据处理在数据清洗子模块中进行,ais数据中航迹停留点计算分别在单条航道停留点子模块和多条航道停留点聚类子模块中进行。
球面介绍聚类算法的部分条件语句增加了限制条件,采用增量的方式对停留点进行检测计算,球面介绍聚类算法中计算数据样本之间的距离,采用大圆距离得到更准确的相似性度量。
postgresql的扩展模块postgis支持所有ogc规范的"simplefeatures"类型,同时扩展了对3dz,3dm,4d坐标的支持,通过postgis可提供矩形,圆形,多边形的停留点区域查询。
dbscan算法里样本集中的距离计算采用动态时间规整dynamictimewarping(dtw)方法聚类。
本发明的有益效果是:
(1)本发明的一种基于ais大数据的船舶航迹分析方法,数据清洗子模块将明显异常的数据更正过来,单条航道停留点子模块根据清洗后的数据计算出单条航道停留点,多条航道停留点聚类子模块在单航道停留点基础上进行聚类,得到多条航道停留点,确保航道分析原始数据的准确性;
(2)使用douglas-peucker算法压缩轨迹数据后,采用lcss算法找出两段轨迹相似的部分,同时通过动态时间规整dynamictimewarping(dtw)运算出航迹之间的相似度,采用dbscan算法将相似航迹聚类,通过图形描边算法和lcss相似性算法结合实际业务场景进行航迹挖掘,多种算法的融合使用,提高了航迹挖掘的速度与精准度。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1是本发明中停留点检测的系统流程图。
图2是本发明中航迹挖掘的流程图。
图3是本发明中航道挖掘dbscan算法中聚类簇实例示意图。
图4是本发明中航道挖掘dbscan算法中航迹计算的应用示意图。
图5是本发明中动态时间规整dtw算法中的实施例示意图
具体实施方式
现在结合附图对本发明作进一步详细的说明。这些附图均为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。
图1、图2、图3、图4和图5所示的一种基于ais大数据的船舶航迹分析方法,如图1所示,为了确保航道分析原始数据的准确性,对ais接收数据的处理与ais数据中航迹停留点的检测具体如下:
步骤1,ais的数据处理在数据清洗子模块中进行,ais数据中一个点的经纬度的数值用该点的一个邻域中各点值的中值代替,同时该点的经纬度的数值用该点的一个邻域中各点值的均值代替,数量大的ais数据,可多次进行同样的方法处理,处理后的数据和原始数据对比后过滤掉偏差较大的数据,并用处理后的数据替换原始数据。
步骤2,单条航道停留点子模块接收到数据清洗子模块清洗后的数据,设定时间阈值和距离阈值,在航行轨迹中选取一个锚点,检查当前锚点与后继锚点之间的距离是否大于设定的距离阈值,该锚点与距离阈值内的最后一个锚点之间的时间跨度大于设定的时间阈值,该锚点即为航迹中的停留点;
步骤3,通过球面介绍聚类算法k-means算法聚类单条航线停留点来获得多条航线的停留点,方法如下:
1.为每个聚类确定一个初始聚类中心,这样就有k个初始聚类中心。
2.将样本集中的样本按照最小距离原则分配到最邻近聚类。
3.使用每个聚类中的样本均值作为新的聚类中心。
4.重复步骤2.3,直到聚类中心不再变化。
5.结束,得到k个聚类。
在计算数据样本之间的距离时,使用大圆距离得到比常用相似度量欧氏距离更准确的相似性度量,在计算聚类中心时,用球面上计算中心点的方法来替换传统的欧氏距离方法。
进一步的,为了提高航迹挖掘的速度,在挖掘相似航迹时使用douglas-peucker算法提前压缩轨迹数据,具体步骤如下:
1.在曲线首尾两点a,b之间连接一条直线ab,该直线为曲线的弦。
2.计算离弦ab距离最远的点与最大距离。
3.比较最大距离与阈值,若小于阈值则舍弃该点,以ab弦作为曲线的近似。
4.若大于阈值,则以此点将曲线划分成两段,并对两段曲线分别进行1-3步操作。
进一步的,为了提高航迹挖掘的精准度,在挖掘相似航迹时采用lcss算法找出两段轨迹相似的部分,同时通过动态时间规整dynamictimewarping(dtw)运算出航迹之间的相似度,具体操作步骤如下:
1.找出最优解的性质,并刻划其结构特征。
序列a共有m个元素,序列b共有n个元素,如果a[m-1]==b[n-1],那么a[:m]和b[:n]的最长公共子序列长度就是a[:m-1]和b[:n-1]的最长公共子序列长度 1;如果a[m-1]!=b[n-1],那么a[:m]和b[:n]的最长公共子序列长度就是max(a[:m-1]和b[:n]的最长公共子序列长度,a[:m]和b[:n-1]的最长公共子序列长度)。
2.以自底向上大方式计算出最优值。
3.根据计算最优值得到的信息,构造最优解。
如图5所示,第一个矩阵是计算公共子序列长度的,可以看到最长是4;第二个矩阵是构造这个最优解用的;最后输出一个最优解bcba。
进一步的,为了提高航迹挖掘的精准度,通过动态时间规整dynamictimewarping(dtw)运算出航迹之间的相似度。
实施例:假设有两条航迹q和c,每条航迹包含的航迹点分别是n和m。
q=q1,q2,…,qi,…,qn;
c=c1,c2,…,cj,…,cm;
qi,cj分别为航迹点的坐标值,多数情况下n!=m,为了对齐这两个航迹,我们需要构造一个nxm的矩阵网格,矩阵元素(i,j)表示qi和cj两个点的距离d(qi,cj),也就是序列q的每一个点和c的每一个点之间的相似度,一般来讲距离越小则相似度越高。一般采用欧式距离,d(qi,cj)=(qi-cj)2,每一个矩阵元素(i,j)表示点qi和cj的对齐。我们采用动态规划(dynamicprogramming)的算法来寻找一条通过此网格中若干格点的路径,路径通过的格点即为两个序列进行计算的对齐的点,dtw用来定义一个累加距离cumulativedistances,从(0,0)点开始匹配这两个序列q和c,每到一个点,之前所有的点计算的距离都会累加,到达终点(n,m)后,这个累积距离就是序列q和c的相似度,累积距离γ(i,j)可以按下面的方式表示,累积距离γ(i,j)为当前格点距离d(i,j),也就是点qi和cj的欧式距离(相似性)与可以到达该点的最小的邻近元素的累积距离之和:
γ(i,j)=d(qi,cj) min{γ(i-1,j-1),γ(i-1,j),γ(i,j-1)}
最终两条航迹的相似度即为dtw(q,c)=γ(n,m)。
进一步的,为了提高挖掘航迹的精准度,利用现有的图形描边算法、lcss相似性算法的思路结合实际业务场景(聚合轨迹)的需求改进dbscan算法,通过改进后的dbscan算法将相似航迹聚类,具体操作步骤如下:
1.任意选择一个没有类别的核心对象作为种子,然后找到所有这个核心对象能够密度可达的样本集合,即为一个聚类簇;
2.接着继续选择另一个没有类别的核心对象去寻找密度可达的样本集合,这样就得到另一个聚类簇;
3.一直运行到所有核心对象都有类别为止。
4.在计算的一组轨迹中,设定一个相似度阈值θ,将相似度低于θ的航迹过滤,剩下的便是有可能挖掘潜在航道的有价值的航迹数据。
实施例:一组航迹共n条,抽取出最长和次长的轨迹记为轨迹a和轨迹b,确定它们将是航道的基线,由于挖掘的航迹线较多,且相似度阈值θ较高,基线的选择对最终航道挖掘出的结果影响不大,遍历剩余的n-2条轨迹数据,每条参与计算的轨迹记为c,通过判断相交和航迹的所在位置,用c中的轨迹部分替换a和b中的部分,便可以完善a、b的航迹,遍历c逐渐挖掘出潜在航道。
进一步的,为了提高挖掘航迹的精准度,挖掘航迹时通过异常检测的方式避开与该航道有异常的轨迹,使用点是否在多边形内的算法来实现,把航道看成一个封闭的多边形,判断航迹点是否在多边形内,如果在多边形内说明没有偏离航道,否则偏离航道。
本发明的一种基于ais大数据的船舶航迹分析方法,数据清洗子模块将明显异常的数据更正过来,单条航道停留点子模块根据清洗后的数据计算出单条航道停留点,多条航道停留点聚类子模块在单航道停留点基础上进行聚类,得到多条航道停留点,确保航道分析原始数据的准确性;使用douglas-peucker算法压缩轨迹数据后,采用lcss算法找出两段轨迹相似的部分,通过动态时间规整dynamictimewarping(dtw)运算出航迹之间的相似度,采用dbscan算法将相似航迹聚类,通过图形描边算法和lcss相似性算法结合实际业务场景进行航迹挖掘,多种算法的融合使用,提高了航迹挖掘的速度与精准度。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。
1.一种基于ais大数据的船舶航迹分析方法,其特征是:该方法包括以下步骤:
步骤1,ais数据处理
通过中值滤波、均值滤波方法过滤数据中的异常值并修复数据;
步骤2,ais数据中航迹停留点计算
设定时间阈值和距离阈值,计算锚点与锚点之间的时间跨度和空间距离,通过时间跨度和空间距离分别与设定时间阈值和距离阈值的对比,确定单条航线的停留点;通过球面介绍聚类算法将单条航线上的停留点聚类的方式来获得多条航线的停留点;
步骤3,航迹停留点后台接口实现
数据储存hive模块和postgresql通过jdbc连接,实现hive数据到postgresql数据库的迁移,采用java技术,通过vert.x工具集调取postgresql数据库查询停留点数据;
步骤4,指定参照航迹挖掘相似航迹
使用douglas-peucker算法压缩轨迹数据后,采用lcss算法找出两段轨迹相似的部分,同时通过动态时间规整dynamictimewarping(dtw)运算出航迹之间的相似度;
步骤5,航道挖掘
采用dbscan算法将相似航迹聚类,通过图形描边算法和lcss相似性算法结合实际业务场景进行航道挖掘。
步骤6,异常航迹检测
计算挖掘航道上的航迹点到航道两边的距离之和,通过对比该距离之和与航道宽度和设定偏离距离阈值距离之和来检测出异常航迹。
2.根据权利要求1所述的一种基于ais大数据的船舶航迹分析方法,其特征是:ais数据处理在数据清洗子模块中进行,ais数据中航迹停留点计算分别在单条航道停留点子模块和多条航道停留点聚类子模块中进行。
3.根据权利要求1所述的一种基于ais大数据的船舶航迹分析方法,其特征是:球面介绍聚类算法的部分条件语句增加了限制条件,采用增量的方式对停留点进行检测计算,球面介绍聚类算法中计算数据样本之间的距离,采用大圆距离得到更准确的相似性度量。
4.根据权利要求1所述的一种基于ais大数据的船舶航迹分析方法,其特征是:postgresql的扩展模块postgis支持所有ogc规范的"simplefeatures"类型,同时扩展了对3dz,3dm,4d坐标的支持,通过postgis可提供矩形,圆形,多边形的停留点区域查询。
5.根据权利要求1所述的一种基于ais大数据的船舶航迹分析方法,其特征是:dbscan算法里样本集中的距离计算采用动态时间规整dynamictimewarping(dtw)方法聚类。
技术总结