一种港口口岸间主航道的自动生成方法及***
技术领域
本发明涉及一种航线生成方法及***,尤其是一种港口口岸间主航道的自动生成方法及***。属于航线生成领域。
背景技术
借鉴陆路快速通关改革的成功经验,针对珠江水域来往港澳小型船舶的运营和管理现状,遵循“借助社会力量,利用公网资源,加强动态监控,实现快速通航”的开发设计思路,广东南方海岸科技服务有限公司(以下简称“南方海岸”)于2001年开发了“来往港澳小型船舶快速通关***”(以下简称小船***),2002年开始在广州海关进行了推广应用,初步实现了“有效监管”和“高效运作”的统一。
2003年在***广东分署的统一指导下,小船***在广东省内多个关区进行了推广,逐步覆盖到了广州海关、黄埔海关、深圳海关、拱北海关、江门海关、汕头海关、湛江海关等7个关区。2005年,小船***在泛珠区域海关内得到推广应用,应用至泛珠区域所有有小船监管业务的广东、广西、海南、福建四省11个直属海关,现场监管点覆盖了70多个码头。经过十五年的成功运营基础,南方海岸积累了丰富的船舶航行轨迹数据,包括粤港澳通关过程中的所有港口口岸通航航道数据。但目前小船***没有涉及港口口岸间的主航道分析,船舶在港口口岸间航行时,主要还是依赖船主的经验知识,无法形成自动航道路径,而且对于海关缉私部门,不能自动识别船舶航行行为,对船舶轨道偏移等异常行为无法及时发现,导致存在船舶在航行过程中偏离航道进行走私等违法现象。
发明内容
本发明的目的是提供一种港口口岸间主航道的自动生成方法,该方法能够根据历史数据,自动生成任意两个港口口岸间的主航道,主航道可以作为航道偏离数据分析的基础数据,方便小型船舶航行自动行驶,为新的小型船舶开展港口间航行提供参考,同时为缉私部门识别船舶航行行为,对偏航等异常行为进行风险预警。
本发明的另一目的在于提供一种港口口岸间主航道的自动生成***。
本发明的目的可以通过采取如下技术方案达到:
一种港口口岸间主航道的自动生成方法,所述方法包括:
对来往港澳小型船舶快速通关***中数据库积累的轨迹数据进行清洗,得到能够关联真实船舶航次、船舶舱单的轨迹数据;其中,所述轨迹数据包括船舶编号、船舶经纬度位置、船舶航次号和船舶速度;
按照时间、港口分类将清洗后得到的轨迹数据存储到分布式计算平台,并统计各种时间维度下的有效船舶航次;
当选择一种时间维度作为分析维度后,将所选择时间维度中每个时间片段的有效航次数量分别与预设航次数量进行比较;
对于有效航次数量大于或等于预设航次数量的时间片段,将这些时间片段的轨迹数据分别进行空间聚类分析,获得这些时间片段下两个港口口岸间的主航道,并存储到结果数据库;
对于有效航次数量小于预设航次数量的时间片段,取上一个进行空间聚类分析的时间片段所获得的两个港口口岸间的主航道,并存储到结果数据库。
进一步的,所述方法还包括:
当来往港澳小型船舶快速通关***中数据库的时间片段更新后,将更新时间片段的有效航次数量与预设航次数量进行比较;
当更新时间片段的有效航次数量大于或等于预设航次数量时,对更新时间片段的轨迹数据进行空间聚类分析,获得更新时间片段下两个港口口岸间的主航道,并存储到结果数据库;
当更新时间片段的有效航次数量小于预设航次数量时,取上一个进行空间聚类分析的时间片段所获得的两个港口口岸间的主航道,并存储到结果数据库。
进一步的,所述空间聚类分析具体包括:
对于两个港口口岸间轨迹数据的每个轨迹点,计算每个轨迹点分别落在哪个水域网格内;其中,所述水域网格为矩形;
根据每个水域网格内的轨迹点数量,确定阈值,执行如下步骤:
A、若轨迹点数量大于阈值的水域网格,则判断为稠密水域网格,若轨迹点数量小于或等于阈值的水域网格,则判断为非稠密水域网格,并设置所有水域网格为未处理水域网格;
B、当某个水域网格为稠密水域网格时,创建一个队列,将该稠密水域网格置入队列,并设置为已处理水域网格,检查该稠密水域网格的所有邻接的未处理水域网格;
C、若邻接的未处理水域网格为稠密水域网格,则该水域网格放入队列,并设置为已处理水域网格;若邻接的未处理水域网格为非稠密水域网格,则直接将该水域网格设置为已处理水域网格;
D、轮询放入队列的稠密水域网格的邻接水域网格,直至没有邻接未处理水域网格;
E、轮询所有未处理稠密水域网格,找出稠密水域网格簇;
F、若稠密水域网格簇大于1,则降低阈值,重复执行上述步骤A~E,直至稠密水域网格簇小于或等于1;
G、将所有已处理稠密水域网格作为两个港口口岸间的主航道,并存储到结果数据库。
进一步的,所述对于两个港口口岸间轨迹数据的每个轨迹点,计算每个轨迹点分别落在哪个水域网格内,具体包括:
生成水域网格地图,并将水域网格覆盖范围最小经度、最小纬度、最大经度、最大纬度、四个顶点坐标和水域网格索引存入水域网格检索表中;
遍历两个港口口岸间轨迹数据的所有轨迹点,并遍历所有的水域网格,判断每个轨迹点是否在水域网格的最小经度、最小纬度、最大经度和最大纬度范围内,获得符合条件的水域网格列表,计算每个轨迹点落在哪个水域网格内。
进一步的,所述判断每个轨迹点是否在水域网格的最小经度、最小纬度、最大经度和最大纬度范围内,如下:
P.Long>=[MinLong]And P.Long<[MaxLong]And P.Lat>=[MinLat]And P.Lat<[MaxLat];
其中,P.Long表示轨迹点P的经度,P.Lat表示轨迹点P的纬度,[MinLong]表示最小经度,[MaxLong]表示最大经度,[MinLat]表示最小纬度,[MaxLat]表示最大纬度;
所述计算每个轨迹点落在哪个水域网格内,即判断该轨迹点的横坐标和纵坐标是否夹在某个水域网格的左右边和上下边之间,如下:
|P2P|×|P1P2|*|P3P|×|P3P4|<=0And|P1P|×|P1P4|*|P2P|×|P2P3|<=0;
其中,P1、P2、P3和P4表示某个水域网格的四个顶点,P表示轨迹点。
本发明的另一目的可以通过采取如下技术方案达到:
一种港口口岸间主航道的自动生成***,所述自动生成***包括:
清洗模块,用于对来往港澳小型船舶快速通关***中数据库积累的轨迹数据进行清洗,得到能够关联真实船舶航次、船舶舱单的轨迹数据;其中,所述轨迹数据包括船舶编号、船舶经纬度位置、船舶航次号和船舶速度;
统计模块,用于按照时间、港口分类将清洗后得到的轨迹数据存储到分布式计算平台,并统计各种时间维度下的有效船舶航次;
第一比较模块,用于当选择一种时间维度作为分析维度后,将所选择时间维度中每个时间片段的有效航次数量分别与预设航次数量进行比较;
第一分析模块,用于对于有效航次数量大于或等于预设航次数量的时间片段,将这些时间片段的轨迹数据分别进行空间聚类分析,获得这些时间片段下两个港口口岸间的主航道,并存储到结果数据库;
第一获取模块,用于对于有效航次数量小于预设航次数量的时间片段,取上一个进行空间聚类分析的时间片段所获得的两个港口口岸间的主航道,并存储到结果数据库。
进一步的,所述自动生成***还包括:
第二比较模块,用于当来往港澳小型船舶快速通关***中数据库的时间片段更新后,将更新时间片段的有效航次数量与预设航次数量进行比较;
第二分析模块,用于当更新时间片段的有效航次数量大于或等于预设航次数量时,对更新时间片段的轨迹数据进行空间聚类分析,获得更新时间片段下两个港口口岸间的主航道,并存储到结果数据库;
第二获取模块,用于当更新时间片段的有效航次数量小于预设航次数量时,取上一个进行空间聚类分析的时间片段所获得的两个港口口岸间的主航道,并存储到结果数据库。
进一步的,所述空间聚类分析具体包括:
对于两个港口口岸间轨迹数据的每个轨迹点,计算每个轨迹点分别落在哪个水域网格内;其中,所述水域网格为矩形;
根据每个水域网格内的轨迹点数量,确定阈值,执行如下步骤:
A、若轨迹点数量大于阈值的水域网格,则判断为稠密水域网格,若轨迹点数量小于或等于阈值的水域网格,则判断为非稠密水域网格,并设置所有水域网格为未处理水域网格;
B、当某个水域网格为稠密水域网格时,创建一个队列,将该稠密水域网格置入队列,并设置为已处理水域网格,检查该稠密水域网格的所有邻接的未处理水域网格;
C、若邻接的未处理水域网格为稠密水域网格,则该水域网格放入队列,并设置为已处理水域网格;若邻接的未处理水域网格为非稠密水域网格,则直接将该水域网格设置为已处理水域网格;
D、轮询放入队列的稠密水域网格的邻接水域网格,直至没有邻接未处理水域网格;
E、轮询所有未处理稠密水域网格,找出稠密水域网格簇;
F、若稠密水域网格簇大于1,则降低阈值,重复执行上述步骤A~E,直至稠密水域网格簇小于或等于1;
G、将所有已处理稠密水域网格作为两个港口口岸间的主航道,并存储到结果数据库。
进一步的,所述对于两个港口口岸间轨迹数据的每个轨迹点,计算每个轨迹点分别落在哪个水域网格内,具体包括:
生成水域网格地图,并将水域网格覆盖范围最小经度、最小纬度、最大经度、最大纬度、四个顶点坐标和水域网格索引存入水域网格检索表中;
遍历两个港口口岸间轨迹数据的所有轨迹点,并遍历所有的水域网格,判断每个轨迹点是否在水域网格的最小经度、最小纬度、最大经度和最大纬度范围内,获得符合条件的水域网格列表,计算每个轨迹点落在哪个水域网格内。
进一步的,所述判断每个轨迹点是否在水域网格的最小经度、最小纬度、最大经度和最大纬度范围内,如下:
P.Long>=[MinLong]And P.Long<[MaxLong]And P.Lat>=[MinLat]And P.Lat<[MaxLat];
其中,P.Long表示轨迹点P的经度,P.Lat表示轨迹点P的纬度,[MinLong]表示最小经度,[MaxLong]表示最大经度,[MinLat]表示最小纬度,[MaxLat]表示最大纬度;
所述计算每个轨迹点落在哪个水域网格内,即判断该轨迹点的横坐标和纵坐标是否夹在某个水域网格的左右边和上下边之间,如下:
|P2P|×|P1P2|*|P3P|×|P3P4|<=0And|P1P|×|P1P4|*|P2P|×|P2P3|<=0;
其中,P1、P2、P3和P4表示某个水域网格的四个顶点,P表示轨迹点。
本发明相对于现有技术具有如下的有益效果:
1、本发明通过统计各种时间维度下的有效船舶航次,然后选择其中一种时间维度作为分析维度,将所选择时间维度中每个时间片段的有效航次数量分别与预设航次数量进行比较,对于有效航次数量大于或等于预设航次数量的时间片段,将这些时间片段的轨迹数据分别进行空间聚类分析,获得这些时间片段下两个港口口岸间的主航道,对于有效航次数量小于预设航次数量的时间片段,取上一个进行空间聚类分析的时间片段所获得的两个港口口岸间的主航道,通过对所有时间片段的两个港口口岸间的主航道分析,可以作为航道偏离数据分析的基础数据,方便小型船舶自动行驶,为新的小型船舶开展港口间航行提供参考,船舶公司可以查询两个港口间的主航道,为船舶公司规划航线线路提供参考,同时为缉私部门识别船舶航行行为,对偏航等异常行为进行风险预警。
2、本发明可以将来往港澳小型船舶快速通关***中更新时间片段的有效航次数量与预设航次数量进行比较,当更新时间片段的有效航次数量大于或等于预设航次数量时,对更新时间片段的轨迹数据进行空间聚类分析,获得更新时间片段下两个港口口岸间的主航道,当更新时间片段的有效航次数量小于预设航次数量时,取上一个进行空间聚类分析的时间片段所获得的两个港口口岸间的主航道,使船舶公司获得的主航道信息不会滞后,从而为船舶公司提供帮助。
附图说明
图1为本发明实施例1的港口口岸间主航道的自动生成方法流程图。
图2为本发明实施例2的港口口岸间主航道的自动生成***结构框图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例1:
如图1所示,本实施例提供了一种港口口岸间主航道的自动生成方法,该方法包括以下步骤:
一、数据清洗
来往港澳小型船舶快速通关***的数据库积累了大量的轨迹数据,这些轨迹点有些是能关联真实航次的,有些是航次结束后还没有开始新航次的,首先清洗出有效的轨迹数据即能关联真实航次并且能关联到小船舱单的轨迹点数据,这些数据是真正来往港澳有参与进出口货物的小船的轨迹数据。
二、数据存储
通过数据清洗后的轨迹数据、航次数据、港口数据等,按照时间、港口分类将清洗后得到的轨迹数据存储到分布式计算平台,本实施例的分布式计算平台采用Hadoop,它提供高吞吐量(high throughput)来访问应用程序的数据,适合有着超大数据集(large dataset)的应用程序。
三、分析合适的时间范畴
通过以下算法来分析合适的时间范畴:统计各种时间维度下的有效小船航次,来往港澳的小型船舶因为地理位置的原因,离香港和澳门的距离都比较近,一般只需从出发港出来,途径中途监管站再抵达目的港,可以直接通过对有效航次的分析,查询用哪种时间维度比较合适分析;统计按天、按周、按月的有效小船航次,以一天来计算,有效的航次在5~500次之间,其中落在30次以下的比例仅占5%,大部分落在30次以上,30个航次已基本够进行空间聚合分析,所以选择了以“天”作为分析的维度。
四、按时间片段对历年数据进行分析
将30作为预设航次数量,有效航次数量大于或等于30的“天”,将这些“天”的轨迹数据分别进行空间聚类分析,获得这些“天”两个港口口岸间的主航道,并存储到结果数据库;有效航次数量小于30的“天”,则取上一个进行空间聚类分析的“天”所获得的两个港口口岸间的主航道,并存储到结果数据库。
1)相关水域网格化
来往港澳小型船舶快速通关***中的船舶基本在广东省水域、环香港和澳门水域中行驶,为了实现主航道分析的算法,首先确认水域范围并形成了相应图层数据。
水域网格大小会影响分析的效率和质量,在测试数据库中模拟各种水域网格的大小纬度,最终确认了效率和质量两方面都不错的水域网格大小(200米)。
根据水域最大矩形范围,通过空间数据分析工具,生成水域网格图层,图层采用WGS-84坐标系。
最后通过水域网格图层和水域图层的相交,最终得到水域范围内的水域网格地图。
2)主航道分析算法
分析两个港口之间(假设两个港口分别为港口A和港口B)的主航道,首先从已清洗和存储的数据中抓取到有效的轨迹数据,分析每个轨迹点落在哪个水域网格中。广东水域范围不大,而且小船主要港口分布在靠海城市,200米水域网格比较小,在WGS-84坐标系基本会是矩形。
2.1)优化遍历所有水域网格的算法
对于两个港口口岸间轨迹数据的每个轨迹点,计算每个轨迹点分别落在哪个水域网格内,如下:
2.1.1)为了更快的遍历所有的水域网格,在生成水域网格地图的同时,将水域网格覆盖范围最小经度、最小纬度、最大经度、最大纬度、四个顶点坐标以及水域网格索引存入水域网格检索表中。
2.1.2)粗略判断轨迹点有可能落入到哪些网格范围:遍历两个港口口岸间轨迹数据的所有轨迹点,并遍历所有的水域网格,判断每个轨迹点是否在水域网格的最小经度、最小纬度、最大经度和最大纬度范围内,获得符合条件的水域网格列表;
判断每个轨迹点是否在水域网格的最小经度、最小纬度、最大经度和最大纬度范围内,如下:
P.Long>=[MinLong]And P.Long<[MaxLong]And P.Lat>=[MinLat]And P.Lat<[MaxLat];
其中,P.Long表示轨迹点P的经度,P.Lat表示轨迹点P的纬度,[MinLong]表示最小经度,[MaxLong]表示最大经度,[MinLat]表示最小纬度,[MaxLat]表示最大纬度;
2.2)轨迹点是否在水域网格内的算法
当获得符合条件的水域网格列表后,计算每个轨迹点落在哪个水域网格内,即判断该轨迹点的横坐标和纵坐标是否夹在某个水域网格(矩形)的左右边和上下边之间,如下:
|P2P|×|P1P2|*|P3P|×|P3P4|<=0And|P1P|×|P1P4|*|P2P|×|P2P3|<=0;
其中,P1、P2、P3和P4表示某个水域网格的四个顶点,P表示轨迹点。
2.3)聚类算法
在聚类计算主航道上面综合了基于密度和基于网格的聚类方法,其主要思想是将多维数据空间划分为多个矩形单元,通过计算每一个单元中数据点中全部数据点的比例的方法确定聚类。
根据每个水域网格内的轨迹点数量(即每个水域网格的密度),确定阈值(设置为所有密度的中位数[50%]),执行如下步骤:
A、若轨迹点数量大于阈值的水域网格,则判断为稠密水域网格,若轨迹点数量小于或等于阈值的水域网格,则判断为非稠密水域网格,并设置所有水域网格为未处理水域网格;
B、当某个水域网格为稠密水域网格时,创建一个队列,将该稠密水域网格置入队列,并设置为已处理水域网格,检查该稠密水域网格的所有邻接的未处理水域网格;
C、若邻接的未处理水域网格为稠密水域网格,则该水域网格放入队列,并设置为已处理水域网格;若邻接的未处理水域网格为非稠密水域网格,则直接将该水域网格设置为已处理水域网格;
D、轮询放入队列的稠密水域网格的邻接水域网格,直至没有邻接未处理水域网格;
E、轮询所有未处理稠密水域网格,找出稠密水域网格簇;
F、若稠密水域网格簇大于1,则降低阈值(从50%降低至40%),执行上述步骤A~E,若稠密水域网格簇还是大于1,则继续降低阈值(从40%降低至30%),继续执行上述步骤A~E,依次类推,直至稠密水域网格簇小于或等于1,进入步骤G;
G、将所有已处理稠密水域网格作为两个港口口岸间的主航道,并存储到结果数据库。
四、查询主航道
为了更方便用户查询主航道,创建了结果数据库,上述分析的结果都存储在结果数据库中,通过提供船舶公司查询两个港口间的主航道查询服务,可以给船舶公司规划航线线路提供参考。
五、分析更新数据
来往港澳小型船舶快速通关***是实时运行的***,每天都会产生新的相关数据,当来往港澳小型船舶快速通关***中数据库更新后,设定在每天晚上某个时间将前一天更新的有效航次数量与预设航次数量进行比较;
当前一天更新的有效航次数量大于或等于预设航次数量时,对前一天更新的轨迹数据进行空间聚类分析,获得更新时间片段下两个港口口岸间的主航道,并存储到结果数据库;
当前一天更新的有效航次数量小于预设航次数量时,取上一个进行空间聚类分析的“天”所获得的两个港口口岸间的主航道,并存储到结果数据库。
实施例2:
如图2所示,本实施例提供了一种港口口岸间主航道的自动生成***,该自动生成***包括清洗模块、统计模块、第一比较模块、第一分析模块、第一获取模块、第二比较模块、第二分析模块和第二获取模块,各个模块的具体功能如下:
所述清洗模块,用于对来往港澳小型船舶快速通关***中数据库积累的轨迹数据进行清洗,得到能够关联真实船舶航次、船舶舱单的轨迹数据;其中,所述轨迹数据包括船舶编号、船舶经纬度位置、船舶航次号和船舶速度;
所述统计模块,用于按照时间、港口分类将清洗后得到的轨迹数据存储到分布式计算平台,并统计各种时间维度下的有效船舶航次;
所述第一比较模块,用于当选择一种时间维度作为分析维度后,将所选择时间维度中每个时间片段的有效航次数量分别与预设航次数量进行比较;
所述第一分析模块,用于对于有效航次数量大于或等于预设航次数量的时间片段,将这些时间片段的轨迹数据分别进行空间聚类分析,获得这些时间片段下两个港口口岸间的主航道,并存储到结果数据库;
所述第一获取模块,用于对于有效航次数量小于预设航次数量的时间片段,取上一个进行空间聚类分析的时间片段所获得的两个港口口岸间的主航道,并存储到结果数据库。
所述第二比较模块,用于当来往港澳小型船舶快速通关***中数据库的时间片段更新后,将更新时间片段的有效航次数量与预设航次数量进行比较;
所述第二分析模块,用于当更新时间片段的有效航次数量大于或等于预设航次数量时,对更新时间片段的轨迹数据进行空间聚类分析,获得更新时间片段下两个港口口岸间的主航道,并存储到结果数据库;
所述第二获取模块,用于当更新时间片段的有效航次数量小于预设航次数量时,取上一个进行空间聚类分析的时间片段所获得的两个港口口岸间的主航道,并存储到结果数据库。
上述空间聚类分析具体包括:
对于两个港口口岸间轨迹数据的每个轨迹点,计算每个轨迹点分别落在哪个水域网格内;其中,所述水域网格为矩形;
所述对于两个港口口岸间轨迹数据的每个轨迹点,计算每个轨迹点分别落在哪个水域网格内,具体包括:
生成水域网格地图,并将水域网格覆盖范围最小经度、最小纬度、最大经度、最大纬度、四个顶点坐标和水域网格索引存入水域网格检索表中;
遍历两个港口口岸间轨迹数据的所有轨迹点,并遍历所有的水域网格,判断每个轨迹点是否在水域网格的最小经度、最小纬度、最大经度和最大纬度范围内,获得符合条件的水域网格列表,计算每个轨迹点落在哪个水域网格内。
所述判断每个轨迹点是否在水域网格的最小经度、最小纬度、最大经度和最大纬度范围内,如下:
P.Long>=[MinLong]And P.Long<[MaxLong]And P.Lat>=[MinLat]And P.Lat<[MaxLat];
其中,P.Long表示轨迹点P的经度,P.Lat表示轨迹点P的纬度,[MinLong]表示最小经度,[MaxLong]表示最大经度,[MinLat]表示最小纬度,[MaxLat]表示最大纬度;
所述计算每个轨迹点落在哪个水域网格内,即判断该轨迹点的横坐标和纵坐标是否夹在某个水域网格的左右边和上下边之间,如下:
|P2P|×|P1P2|*|P3P|×|P3P4|<=0And|P1P|×|P1P4|*|P2P|×|P2P3|<=0;
其中,P1、P2、P3和P4表示某个水域网格的四个顶点,P表示轨迹点。
根据每个水域网格内的轨迹点数量,确定阈值,执行如下步骤:
A、轨迹点数量大于阈值的水域网格为稠密水域网格,轨迹点数量小于或等于阈值的水域网格为非稠密水域网格,并设置所有水域网格为未处理水域网格;
B、当某个水域网格为稠密水域网格时,创建一个队列,将该稠密水域网格置入队列,并设置为已处理水域网格,检查该稠密水域网格的所有邻接的未处理水域网格;
C、若邻接的未处理水域网格为稠密水域网格,则该水域网格放入队列,并设置为已处理水域网格;若邻接的未处理水域网格为非稠密水域网格,则直接将该水域网格设置为已处理水域网格;
D、轮询放入队列的稠密水域网格的邻接水域网格,直至没有邻接未处理水域网格;
E、轮询所有未处理稠密水域网格,找出稠密水域网格簇;
F、若稠密水域网格簇大于1,则降低阈值,重复执行上述步骤A~E,直至稠密水域网格簇小于或等于1;
G、将所有已处理稠密水域网格作为两个港口口岸间的主航道,并存储到结果数据库。
因此,通过对历史所有自然天的两个港口间的主航道分析以及前一天的主航道分析,可以作为航道偏离数据分析的基础数据。
以上所述,仅为本发明专利较佳的实施例,但本发明专利的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明专利所公开的范围内,根据本发明专利的技术方案及其发明专利构思加以等同替换或改变,都属于本发明专利的保护范围。