一种基于AIS轨迹大数据的船舶交通环境重构方法与流程

文档序号:15937147发布日期:2018-11-14 02:34阅读:409来源:国知局

本发明涉及一种大数据处理方法,尤其是一种基于ais轨迹大数据的交通环境重构方法。

背景技术

内河航运在新形势、新政策下得到空前重视和发展,在庞大的内河航运信息化系统中,船舶自动识别系统(automaticidentificationsystem,ais)扮演了重要角色,船舶通过ais设备互相识别,避免碰撞,保障航行安全。同时,岸基ais网络接受所有船舶的动态信息,监控着整个航道的交通状态,从而进行有效的交通管理和服务。随着ais的强制安装,几乎所有的船舶都在无时不刻地通过ais发送自己的位置及其他动静信息。据估算,仅长江每天ais岸基网络可接受到的ais数据就超过亿条。只要ais在连续不断的运行,船舶的位置数据就在持续不断的产生,这些数据的积累即形成了船舶轨迹(众多位置可连成船舶航行的轨迹)大数据。

近年来,与大数据及其可视化相关的技术不断推陈出新,相比较其他领域而言,对于水上交通信息的可视化研究还相对落后,采用的可视化方式基本是静态的,无法很好反应水上交通态势演变过程,以及通过时空关系分析发现其规律。

现有技术“一种实时ais数据虚拟船舶视频化现实方法”(申请号201410265059.3),通过对航道船舶的ais数据进行虚拟船舶视频化显示及预测虚拟船舶位置,实现电子航道图中显示的ais虚拟船舶与视频监控船舶图像的准确对应。其存在的缺陷是,运用摄像头容易被例如大雾、雨雪等恶劣天气干扰,从而影响整个系统正常工作。经过ais信号提供的参数预测出来的航行轨迹数据量大,难以实时显示,在外界风浪流影响大的时候更难做到精准预测,因此其难以掌握由船舶交通环境演变态势。

现有技术“一种船舶轨迹监控系统及方法”(申请号201710329337.0),可实时监控船舶的运行轨迹,该系统包括卫星定位船载设备、后台应用支撑平台。其存在的缺陷是,通过卫星传输数据需要时间,难以做到实时显示。且缺少动态更新的设计,难以展现船舶的真实运动态势。数据量巨大时需要高昂的成本来支撑系统运行,不经济。



技术实现要素:

针对现有技术存在的缺陷,以及ais系统实际使用中船舶轨迹点的ais数据更新间隔参差不齐和数据清洗后船舶的轨迹数据不完整的问题,本发明提供了一种基于ais轨迹大数据的船舶交通环境重构方法,通过异常和优化处理提高重构的时空准确性,以尽可能真实地还原由船舶活动构成的交通环境演变态势,实现动态更新和持续化演进。

本发明的技术方案是这样实现的:

一种基于ais轨迹的船舶交通环境重构方法,包括轨迹重构和空间关系重构,所述方法适用于一种船舶交通环境重构系统,该系统主要由服务器、非关系型后端数据库、web前端及前端数据库构成,所述方法包括以下步骤:

步骤1-1,将时间区间参数进行分割,细化为一个个时间片段,每次只请求在一个时间片段内指定地理范围的所有船舶的轨迹数据;

步骤1-2,web前端对步骤1-1中所述轨迹数据进行临时存储、预处理、空间关系计算和重构;

步骤1-3,web前端再从服务器定期请求新的轨迹数据,进行动态更新;

步骤1-4,重复上述步骤1-1、1-2、1-3,实现web前端交通环境持续重构。

进一步的,所述轨迹重构分为两个阶段,分别是数据准备阶段和回放进行阶段。

更进一步的,所述数据准备阶段,后端数据库为每艘船舶提供有一个存储单元,用于回放进行阶段从该存储单元中获取数据进行插值计算和显示。

进一步的,所述存储单元缓存有每艘船舶的轨迹数据和静态信息,其数据存储结构为:

{ship_id:[{timestamp,latitude,longitude,course,speed},…]}。

进一步的,所述存储单元有两个缓存变量数组s1和s2,分别存储所有船舶在当前和下一个时间戳的差值结果,并随着回放的进行,s1和s2取值持续更新。

进一步的,前端数据库将整个回放过程产生的所有插值计算结果进行存储,回放过程的所有插值结果缓存的数据存储结构为:

{ship_id_1:[{t1,latitude1,longitude1,course1,speed1},{t2,latitude2,longitude2,course2,speed2}…]。

进一步的,所述回放进行阶段步骤如下:

步骤7-1,从服务器获取第一个时间片段的船舶轨迹数据,存入轨迹缓存数组;

步骤7-2,获取回放时刻t,判断下一个时间片段起始时刻tupdate与t的差值是否小于两倍步长,如果是,进入步骤7-3,如果否,进入步骤7-4;

步骤7-3,判断下一个时间片段是否已经更新,如果未更新,进入更新流程,获得新轨迹数据存入对应船舶轨迹数组中;如果已更新则结束;

步骤7-4,读取存储单元中船舶轨迹数组,取轨迹数组中时间戳小于和大于回放时刻t相邻两个轨迹点,并判断两个轨迹点是否都存在,如果是,进入步骤7-5,如果否,进入步骤7-3;

步骤7-5,判断前后两个轨迹点是否存在,如果否,进入轨迹点更新流程,获取数据存入对应船舶轨迹数组中,如果是,进行插值计算,得出的插值结果值,分别存入缓存数组和前端数据库,同时删除轨迹数组中已经使用过的数据;

步骤7-6,完成上述步骤后,跳转到步骤7-2,进入下一个周期计算。

进一步的,所述步骤1-3中,当出现个体船舶轨迹数据质量不佳,需要提前进行数据补充时,则提前进行下一个时间片段的整体数据更新,更新步骤如下:

步骤8-1,以新时间段的开始时间tupdate、时间片段的间隔t以及优化过的地理范围为参数,向服务器提出数据请求,服务器从后端数据库检索出按时序排列的轨迹数据到前端数据库中;

步骤8-2,在前端数据库中将该时间段标记为已更新,同时对轨迹数据缓存数组进行更新,更新时需要根据以下两种情况分别处理:

1)能够在轨迹数据缓存数组找到对应船舶的轨迹更新数据时,利用轨迹点的ship_id找到船舶记录的轨迹数组,将新轨迹点插入到数组末端;

2)不能在轨迹数据缓存数组找到对应船舶的轨迹更新数据时,按照数组的存储结构,以轨迹点的ship_id为键索引,生成新轨迹点数组,新增一个船舶记录,同时,根据ship_id从服务器请求该船舶的静态信息,形成新的船舶静态信息记录;

步骤8-3,在当前时间片段的轨迹回放过程中,如果一直没有船舶需要补充轨迹数据,则一旦回放时刻与下一个时间片段起始时间的差小于设定值时,例如小于2个时间步长,就进行轨迹数据更新请求,进行缓存的更新操作。

进一步的,所述步骤1-3中,回放过程中由于用户的干预,时间戳直接从t1跳转到了t2,其间会跨越多个时间片段,针对此情况采取如下应对步骤:

步骤9-1,在从前端数据库提取数据回放过程中增加的一个时间戳插值缓存判断节点,判断其下一个时间戳是否存在缓存数据,如果是,则继续回放;如果否,则跳回轨迹重构流程,重新从服务器请求缺失部分数据并进行插值;

步骤9-2,将插值结果插入前端数据库相应位置,直到前端数据库重新发现具有缓存的时间戳。

一种基于ais轨迹的船舶交通环境重构方法,所述重构方法为船舶空间关系重构方法,步骤如下:

步骤10-1,采用两个变量存储数组r1和r2分别存储所有船舶在当前时间戳和下一个时间戳的空间关系,船舶间的空间关系通过船舶拥有的邻近船舶及与它们的距离来表达,其数据存储结构为:

{ship_id:id1,timestamp:t1,

relationship:[{ship_id:id2,distance:d2},{ship_id:id3,distance:d3}]};

步骤10-2,一个时间戳上(t+1)船舶的轨迹重构完成后,除了存入s2数组中,还将它们插值得到的位置及ship_id发送到服务器端,服务器程序按照后端数据库的地理索引格式要求将其存入临时集合,如果首次插入时临时集合不存在则新建临时集合并建立地理索引;

步骤10-3,针对每艘船舶利用其经纬坐标通过后端数据库提供的地理检索函数获取其周围船舶的ship_id和距离,最后将结果返回web前端;

步骤10-4,在数据返回web前端后,后端数据库中的临时集合可以删除,亦可以保留,作为另一种形式的重复回放轨迹缓存,起到与前端数据库类似的作用。

本发明的有益效果在于:

1.利用本发明所述方法解决了ais信息数据丢包、数据异常或数据冗余等情况造成船舶的轨迹数据存在断断续续、不完整的现象。

2.采用异常和优化处理提高了重构的时空准确性,尽可能真实地还原了由船舶活动构成的交通环境演变态势,实现动态更新和持续化演进。

3.数据库从创建到删除的用时非常短,解决了数据量过大导致的数据冗余问题,大大降低了成本。

4.为各个船载设备和海事监管部门的设备提供基于ais数据的可视化技术手段,使内河航运更加畅通有序和平安高效,具有明显的经济和社会效益。

5.为航行于沿海和内河的船舶掌握水上船舶交通态势提供新的方法,便于海事监管部门重点监控轨迹异常的区域,及时警告,避免事故发生。

附图说明

附图1为本发明所述方法中轨迹点线性插值示意图;

附图2本发明所述方法中某个时间片段的船舶轨迹时间戳的分布示例图;

附图3为地理范围参数优化方法示意图;

附图4为后端数据库中数据结构示意图;

附图5为轨迹回放进行阶段的算法流程示意图;

附图6为轨迹数据缓存更新流程示意图;

附图7为跳跃式回放示意图;

附图8为前端数据库缺失数据时的轨迹重构示意图;

附图9为空间关系重构流程示意图。

具体实施方式

下面结合附图对本发明具体实施方式做进一步说明:

参考附图1-8所示,一种基于ais轨迹的船舶交通环境重构方法,包括轨迹重构和空间关系重构,所述方法适用于一种船舶交通环境重构系统,该系统主要由服务器、非关系型后端数据库、web前端及前端数据库构成,所述方法包括以下步骤:

步骤1-1,将时间区间参数进行分割,细化为一个个时间片段,每次只请求在一个时间片段内指定地理范围的所有船舶的轨迹数据;

步骤1-2,web前端对步骤1-1中所述轨迹数据进行临时存储、预处理、空间关系计算和重构;

步骤1-3,web前端再从服务器定期请求新的轨迹数据,进行动态更新;

步骤1-4,重复上述步骤1-1、1-2、1-3,实现web前端交通环境持续重构。

进一步的,所述轨迹重构分为两个阶段,分别是数据准备阶段和回放进行阶段。

更进一步的,所述数据准备阶段,后端数据库为每艘船舶提供有一个存储单元,用于回放进行阶段从该存储单元中获取数据进行插值计算和显示。

进一步的,所述存储单元缓存有每艘船舶的轨迹数据和静态信息,其数据存储结构为:

{ship_id:[{timestamp,latitude,longitude,course,speed},…]}。

进一步的,所述存储单元有两个缓存变量数组s1和s2,分别存储所有船舶在当前和下一个时间戳的差值结果,并随着回放的进行,s1和s2取值持续更新。

进一步的,前端数据库将整个回放过程产生的所有插值计算结果进行存储,回放过程的所有插值结果缓存的数据存储结构为:

{ship_id_1:[{t1,latitude1,longitude1,course1,speed1},{t2,latitude2,longitude2,course2,speed2}…]。

进一步的,所述回放进行阶段步骤如下:

步骤7-1,从服务器获取第一个时间片段的船舶轨迹数据,存入轨迹缓存数组;

步骤7-2,获取回放时刻t,判断下一个时间片段起始时刻tupdate与t的差值是否小于两倍步长,如果是,进入步骤7-3,如果否,进入步骤7-4;

步骤7-3,判断下一个时间片段是否已经更新,如果未更新,进入更新流程,获得新轨迹数据存入对应船舶轨迹数组中;如果已更新则结束;

步骤7-4,读取存储单元中船舶轨迹数组,取轨迹数组中时间戳小于和大于回放时刻t相邻两个轨迹点,并判断两个轨迹点是否都存在,如果是,进入步骤7-5,如果否,进入步骤7-3;

步骤7-5,判断前后两个轨迹点是否存在,如果否,进入轨迹点更新流程,获取数据存入对应船舶轨迹数组中,如果是,进行插值计算,得出的插值结果值,分别存入缓存数组和前端数据库,同时删除轨迹数组中已经使用过的数据;

步骤7-6,完成上述步骤后,跳转到步骤7-2,进入下一个周期计算。

进一步的,所述步骤1-3中,当出现个体船舶轨迹数据质量不佳,需要提前进行数据补充时,则提前进行下一个时间片段的整体数据更新,更新步骤如下:

步骤8-1,以新时间段的开始时间tupdate、时间片段的间隔t以及优化过的地理范围为参数,向服务器提出数据请求,服务器从后端数据库检索出按时序排列的轨迹数据到前端数据库中;

步骤8-2,在前端数据库中将该时间段标记为已更新,同时对轨迹数据缓存数组进行更新,更新时需要根据以下两种情况分别处理:

1)能够在轨迹数据缓存数组找到对应船舶的轨迹更新数据时,利用轨迹点的ship_id找到船舶记录的轨迹数组,将新轨迹点插入到数组末端;

2)不能在轨迹数据缓存数组找到对应船舶的轨迹更新数据时,按照数组的存储结构,以轨迹点的ship_id为键索引,生成新轨迹点数组,新增一个船舶记录,同时,根据ship_id从服务器请求该船舶的静态信息,形成新的船舶静态信息记录;

步骤8-3,在当前时间片段的轨迹回放过程中,如果一直没有船舶需要补充轨迹数据,则一旦回放时刻与下一个时间片段起始时间的差小于设定值时,例如小于2个时间步长,就进行轨迹数据更新请求,进行缓存的更新操作。

进一步的,所述步骤1-3中,回放过程中由于用户的干预,时间戳直接从t1跳转到了t2,其间会跨越多个时间片段,针对此情况采取如下应对步骤:

步骤9-1,在从前端数据库提取数据回放过程中增加的一个时间戳插值缓存判断节点,判断其下一个时间戳是否存在缓存数据,如果是,则继续回放;如果否,则跳回轨迹重构流程,重新从服务器请求缺失部分数据并进行插值;

步骤9-2,将插值结果插入前端数据库相应位置,直到前端数据库重新发现具有缓存的时间戳。

如附图9所示,一种基于ais轨迹的船舶交通环境重构方法,所述重构方法为船舶空间关系重构方法,步骤如下:

步骤10-1,采用两个变量存储数组r1和r2分别存储所有船舶在当前时间戳和下一个时间戳的空间关系,船舶间的空间关系通过船舶拥有的邻近船舶及与它们的距离来表达,其数据存储结构为:

{ship_id:id1,timestamp:t1,

relationship:[{ship_id:id2,distance:d2},{ship_id:id3,distance:d3}]};

步骤10-2,一个时间戳上(t+1)船舶的轨迹重构完成后,除了存入s2数组中,还将它们插值得到的位置及ship_id发送到服务器端,服务器程序按照后端数据库的地理索引格式要求将其存入临时集合,如果首次插入时临时集合不存在则新建临时集合并建立地理索引;

步骤10-3,针对每艘船舶利用其经纬坐标通过后端数据库提供的地理检索函数获取其周围船舶的ship_id和距离,最后将结果返回web前端;

步骤10-4,在数据返回web前端后,后端数据库中的临时集合可以删除,亦可以保留,作为另一种形式的重复回放轨迹缓存,起到与前端数据库类似的作用。

如附图2所示,假设tn为整个重构设定的时间区间的第n个时间片段,其中的黑点为根据该时间片段从服务器端获取船舶轨迹数据,虚竖线为重构时船舶动态更新的时间戳,它们的间隔假设为1秒。为了在所有时间戳都能够对船舶轨迹点顺利地进行插值计算,需要对某一特定船在该时间段内的轨迹点进行边界分析分别采取不同方法进行应对处理:

1)该时间片段内的第一个轨迹点,刚好在起始时间戳,如图中的a。该种情况下,第一个时间戳就已经有轨迹点数据,从第二个时间戳开始即可寻找其前后两个轨迹点进行插值。

2)该时间片段内的第一个轨迹点,不在起始时间戳上。本发明采取的应对策略是从前一个时间片段寻找该船舶的最后一个轨迹点。如果前一个时间片段有该船的轨迹点,则利用该轨迹点进行插值,如图中的b;如果前一个时间片段没有该船的轨迹点,则放弃插值,如图中的c;如果本时间片段为整个重构过程的起始时间片段,则需要从服务器端请求获取船舶在时间区间往前一个时间片段的轨迹数据。

3)该时间片段内的最后一个轨迹点,刚好在结束时间戳,如图中的d。该种情况下,最后时间戳有轨迹点数据,倒数第二个时间戳可寻找到前后两个轨迹点进行插值。

4)该时间片段内的最后一个轨迹点,不在结束时间戳上。对于该种情况,本发明采取的应对策略是从后一个时间片段寻找该船舶的第一个轨迹点。如果后一个时间片段有该船的轨迹点,则利用该轨迹点进行插值,如图中的e;如果后一个时间片段没有该船的轨迹点,则放弃插值,如图中的f;如果本时间片段为整个重构过程的结束时间片段,则需要从服务器端请求获取船舶在时间区间往后一个时间片段的轨迹数据。

确定地理范围参数后,在重构的时间区间中,会出现一部分船舶在中途进入该地理范围,另一部分船舶会中途离开该地理范围的现象。而且,在上述时间片段往前和往后延伸的策略中获取的船舶轨迹点亦可能超出参数定义的地理范围。因此,为了确保地理区域边缘处的轨迹重构的持续平滑性,保证重构还原出来的进出边缘船舶的运动真实性,需要在该地理范围的外围建立一个缓冲带,并用加上缓冲带的范围作为从web服务器端获取船舶轨迹数据的优化参数。如附图3所示,设t为船舶轨迹数据更新的时间片段间隔,缓冲带的宽度为d。d是船舶在t时间片段内可能进入初始地理范围内的最大距离,可通过t与船舶的最大船速speedmax的乘积获得。通过优化处理,可以确保每个t时间片段的重构中,进出地理边缘的船舶也能够进行顺利的插值。

实施例中在后端数据库,数据结构的设计如附图6所示。一个数据库拥有多个集合,每个集合包含多个文档对象。因此基于功能分析的要求,本发明建立了3个数据集合:动态数据集合、静态数据集合和附近船舶数据集合。如附图6中所示,动态数据集合存储船舶的动态数据如时间、经纬度、船速、航向等。在字段“postime”上建立升序索引保证查询获取的数据按照时间顺序序排列,web端轨迹分类后每艘船轨迹点才能按时间顺序排列。静态数据集合存储船舶的静态数据如船长、船宽、吃水等,通过字段“ship_id”与动态数据集合建立关联。并在该字段上创建升序索引提高查询的效率。附近船舶数据集合是一种临时性的集合。只包含经纬坐标和ship_id三个参数,主要辅助获取周围船舶数据。

在环境重构过程中本发明以俯视的角度,还原指定地理区域和时间段内的船舶运动态势。时空重构包含轨迹重构和空间关系重构。轨迹重构过程分为两个阶段:数据准备阶段和回放进行阶段。

如附图4所示,数据准备阶段本发明设计了存储单元在后端数据库中来缓存每艘船舶的轨迹数据和对应的静态信息(长、宽和吃水等),该数据结构如下所示:

{ship_id:[{timestamp,latitude,longitude,course,speed},…]}

并且为每艘船舶设计了一个单元存储结构,在回放进行阶段则需要从该存储结构中获取数据进行插值计算和显示。之后设计两个缓存变量数组s1和s2分别存储所有船舶在当前和下一个时间戳的差值结果。随着回放的进行,s1和s2取值持续更新。此外,为了方便后续的对同一轨迹进行不同类型时空分析计算的方便,则利用前端数据库将整个回放过程产生的所有插值计算结果进行存储。在回放过程的所有插值结果的缓存数据结构如下所示:

{ship_id_1:[{t1,latitude1,longitude1,course1,speed1},{t2,latitude2,longitude2,course2,speed2}…]

其中,回放进行阶段的算法流程如附图5所示,具体步骤为:

1)回放开始时,首先从服务器获取第一个时间片段的船舶轨迹数据,存入轨迹缓存数组;

2)然后获取回放时刻t,判断下一个时间片段起始时刻tupdate与t的差值是否小于两倍步长?如果否直接进入第4)步,如果是则同时进入第3)步分支;

3)判断下一个时间片段是否已经更新?如果未更新,进入更新流程,获得新轨迹数据存入对应船舶轨迹数组中;如果已经更新则结束该分支;

4)读取轨迹缓存中船舶轨迹数组,取轨迹数组中时间戳小于和大于回放时刻t相邻两个轨迹点,并判断两个轨迹点是否都存在?如果是直接进入第5)步,否则同时进入第3)步的分支;

5)根据前后两个轨迹点不存在,判断没有轨迹更新,进入更新流程,获取数据存入对应船舶轨迹数组中。如果两个轨迹点存在,进行插值计算。得出的插值结果值,分别存入缓存数组和前端数据库。同时删除轨迹数组中已经使用过的数据。完成所有船舶的处理后(跳过无法插值的船舶)和更新步长,跳回第2)步,进入下一个周期计算。

在轨迹重构时,时常会出现由于个体船舶轨迹数据质量不佳而需要提前进行数据补充的情况。本发明采取了一旦有一艘船舶有补充数据的需求即提前进行下一个时间片段的整体数据更新模式,轨迹数据缓存的更新流程如附图6所示,具体步骤如下:

首先,以新时间段的开始时间tupdate、时间片段的间隔t以及优化过的地理范围为参数,向服务端提出数据请求,服务端从后端数据库检索出按时序排列的轨迹数据,返回前端。

在前端将该时间段标记为已更新,同时对轨迹数据缓存数组进行更新,更新时需要根据几种不同的情况进行分别处理。

1)能够在轨迹数据缓存数组找到对应船舶的轨迹更新数据:利用轨迹点的ship_id找到船舶记录的轨迹数组,将新轨迹点插入到数组末端;

2)在轨迹数据缓存数组找不到对应船舶的轨迹更新数据:按照前述点存储结构,以轨迹点的ship_id为键索引,新轨迹点形成数组,新增一个船舶记录。同时,根据ship_id从服务器端请求该船舶的静态信息,形成新的船舶静态信息记录。

在当前时间片段的轨迹回放过程中,如果一直没有船舶需要补充轨迹数据,则一旦回放时刻与下一个时间片段起始时间的差小于设定值例如2个时间步长,就进行轨迹数据更新请求,进行缓存的更新操作。轨迹回放时,常常需要加快或减慢回放进程,此时可以通过调整步长频率来控制。调整步长频率,可以在时间进行总体的加速或减速,但仍然按照一个个步长依次重构。然而,在轨迹回放过程还可能出现跳越式快进或者回退。

如附图7所示,回放过程中,由于用户的干预,时间戳直接从t1跳转到了t2,其间跨越了多个时间片段。对于这种情况,本发明采取如下策略进行应对:

根据新的回放时刻t2,判断其所在时间片段步长(如10)。由前述的时空重构过程分析可知,该时间片段的前后边界都将出现数据空缺,为了能对所有船舶进行插值计算,需同时请求该时间片段以及其前后两个时间片段(9和11)的轨迹数据,获取到轨迹数据同时更新轨迹数据缓存和前端数据库。

上述的处理,可以保障船舶活动动态显示的平滑性,但对于重构整个时间区间的轨迹则会遗落了跳跃跨过的时间片段。如果利用这个过程形成的前端数据库去重做其他类型时空分析,将造成中间部分轨迹数据缺失的问题。对于该问题本发明采用重复回放优化来解决。

此外,对同一个区域同一时段内船舶轨迹进行不同类型的时空分析时,需要多次重复轨迹回放。为了降低服务器和前端的系统负担,避免重复进行数据获取和更新过程,如前所述,本发明采取了前端数据库来缓存已经重构的轨迹点(插值形成)。因此,当再次轨迹回放时,可直接从前端数据库中提取数据进行相关模型计算,实现不同的时空分析功能。

如附图8所示,当在第一次轨迹回放时,对于用户干预造成的中间部分轨迹数据缺失问题,采取了一个重返轨迹重构流程的策略。即:在从前端数据库提取数据回放过程中,增加了一个时间戳插值缓存判断节点,一旦下一个时间戳不存在缓存数据,马上跳回轨迹重构流程,重新从服务器请求缺失部分数据并进行插值,然后将插值结果插入前端数据库相应位置,直到前端数据库重新发现具有缓存的时间戳。

在空间关系重构中,为了在轨迹回放过程中实现对船舶交通环境的时空分析,除了需要对船舶轨迹进行重构,还需对每个时间戳船舶间的空间关系进行重构。为了达到好的显示和分析效果,采用两个变量存储数组s1和s2分别存储所有船舶在当前时间戳和下一个时间戳的空间关系。船舶间的空间关系通过船舶拥有的邻近船舶及与它们的距离来表达,例如:

{ship_id:id1,

timestamp:t1,

relationship:[{ship_id:id2,distance:d2},{ship_id:id3,distance:d3}]

}

表示船舶标识为id1的船舶在t1时间戳,其邻居有2艘船舶id2和id3,它们的距离分别为d2和d3,而根据id2和id3可以在轨迹数据缓存中提取出周围船舶的详细动态信息。对当前时间戳和下一个时间戳都为每艘船舶形成这样的结构并形成数组,即形成船舶空间关系的重构。

如附图9所示,所述船舶空间关系重构方法中采用了在后端数据库构建临时数据集合作为缓存的策略,即:一个时间戳上(t+1)船舶的轨迹重构完成后,除了存入s2数组中,还将它们插值得到的位置及ship_id发送到服务器端,服务器程序按照后端数据库的地理索引格式要求将其存入临时集合,如果首次插入时临时集合不存在则新建临时集合并建立地理索引,然后再用针对每艘船,利用其经纬坐标通过后端数据库提供的地理检索函数获取其周围船舶的ship_id和距离,最后将结果返回web前端。在数据返回web前端,后端数据库中的临时集合可以删除,亦可以保留,作为另一种形式的重复回放轨迹缓存,起到与前端数据库类似的作用。

上述具体实施方式通过船舶交通环境重构的应用示例,研究实现了web端船舶交通环境的持续重构,采用了分时请求和动态更新的策略,对时空重构过程进行了分析,然后从时空重构的准备工作、轨迹重构的实现以及空间关系重构的实现等方面,对整个时空重构过程采取的算法、机制等进行了详细的介绍。整个重构过程可以顺畅运行,可通过动态可视化分析技术进行融合运用,揭示交通环境的时变特征,挖掘隐含的行为模式,从而便于船舶安全航行。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何基于ais轨迹大数据通过上述方法重构船舶交通环境的思路均属于本发明技术构思的保护范围,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1