船舶频繁模式模型
本模型結合頻繁模式常用算法FP-tree 算法進行頻繁線路預測,同時對頻繁線路進行相關屬性聚類,采用DBSCAN,進行線段聚類(相關的FP-tree和DBSCAN會后續總結)
一、需求分析
主要針對①每艘船舶經常走的起止港口及經停港口;②每類船舶(分不同噸位等級、分不同長度等級、分不同寬度等級、分不同吃水等級)經常走的真實航跡線。數據統計周期為每個季度和每年。
統計數據內容如下:
1、每艘船舶
(1)?? 常走起止港口、經停港口
(2)?? 常走航跡線
(3)?? 港口平均停留時間
(4)?? 經停港口間的平均行駛時間
(5)?? 從某個泊位出來經常到某個港口(主要用于船舶在運送不同類型的貨物的時候,可能目的港口不同,這個作為后續優化方向)
2、港口間真實航跡線
(1)?? 港口與港口間的真實航跡線
(2)?? 航跡線的屬性:①可以航行哪些類型的船舶;②分類型的船舶的最大噸位;③可以航行船舶的最大長度;④可以航行船舶的最大寬度;⑤可以航行船舶的最大吃水深度。
二、輸入輸出輸出
2.1 輸入數據
1)船舶的OD數據;
2)船舶的AIS數據;
3)船舶的類型數據;
三、模型
3.1 模型主要思路
1. 通過OD數據統計船只在一個季度/年內的所有抵達港口,并統計其在該港口的平均時間、到港的次數、以及該船只在所有港口停留的平均時間。按照到港的次數進行排序,得到到港次數大于等于2次(若數量少于3個,則取前三個;次數出現一次的港口排序按照在港時間,時間長的排在前邊)的港口為標記港口;
2. 統計船只的航線的起始港口,并記錄途中經停港口。
3. 通過統計的起始航線,運用FP-tree頻繁統計方式來計算船只的頻繁線路。
4. 通過船只OD數據和AIS數據來確定港口間的真實航跡線;
5. 通過相同港口間的航跡線聚類,生成該港口間的航道信息,根據航道內的航跡線數據來進行屬性統計,并關聯相應的航跡線屬性表上。
?
3.2 模型流程框圖
?
3.3 模型的流程詳細說明
流程說明:
(一)輸入OD數據
(二)OD數據輸入后先進行OD數據統計,基于OD數據統計結果,再分別對OD數據進行完整航線統計(三)和真實航跡線生成處理(四)。
(三)完整航線統計——1)根據OD數據和OD節點數據信息判斷船只航行過程中起始、經停、終止港口,起始港口到終止港口為完整一條航線,統計該條船所有的航線;2)根據FP-tree方法對該條船的航線進行頻繁統計(具體統計過程見下文);3)根據2)中統計結果,確定該船只的頻繁線路,輸出該船的頻繁線路數據。
(四)真實航跡線生成——1)輸入處理港口間的所有船只OD數據和對應的船只AIS數據;2)以船只的original_out_utc 時間對應的時間點開始,到destination_in_utc時間點結束,對該船只AIS數據進行稀疏化——每隔兩海里保留一個AIS點。該段內的稀疏點跡作為該船在這兩個港口間航行的真實航跡線,保存該航跡線。
(五)航道屬性統計:1)基于(四)的真實航跡線數據,統計該條航跡線數據的特征點,根據特征點對OD數據進行分段處理,且特征點的連線作為該段的特征直線;2)對所有OD的特征直線根據DBSCAN方法進行聚類;3)統計每類航道的屬性(船只最大噸位、船只最大寬度、船只最大長度、船只最大吃水深度),保存相應航道信息;4)相同類別內航跡線段共享該類內的屬性,填充航跡線對應的屬性信息。
(六)對(一)~(五)進行循環處理,直到所有船只頻繁模式和所有港口真實航跡線處理完畢。
流程中具體操作解釋說明:
1. OD數據統計:
1)統計該船只一年的OD數據,記錄所有的抵達港口、抵達港口的次數、抵達港口的平均停留時間 ,以及其在所有港口的平均停留時間 ;
2)對統計的結果,按照港口抵達次數進行排序,將到港次數大于等于2次(若數量少于3個,則取前三個)的港口作為標記港口。
?
2. 船只完整航線統計:1)根據OD數據和OD節點數據來判斷船只航行起始港口、經停港口、終止港口;2)起始到終止港口為一個完整的航線。
起始港口判斷:
①OD數據的起始點港口(original_port);
②之前的OD已經標記為終止,則線路重新開始時的original_port為起始港口;
經停港口判斷:
①OD中的destination_port港口對應的node_type為泊位,且在港停留時間T滿足 ;
終止港口判斷:
①OD中的destination_port港口對應的node_type為泊位,且在港停留時間T滿足 ;
②若起始港或之前的經停港出現過該港口,則對該條線路拆分為兩條;第一條為起始港到該港之前的經停港,第二條為該港之前的經停港轉為起始港,該港作為終止港保存。
根據上述的起始港口、經停港口、終止港口來判斷船只的起止港口,。
?
3. FP-tree統計港口(泊位)到港口的頻繁線路:
1)統計港口到港口:
2中統計的船只航線,按照1中的標記港口對起止港口進行排序,出現次數多的排在前邊;統計相同線路數據。
2)泊位出發統計:
根據1)獲取的港口到港口頻繁數據,增加泊位數據進行劃分,統計相同泊位出發到達的港口的次數,出現次數大于等于2次則記錄。
4. 根據OD數據和AIS數據生成港口間的真實航跡線:
根據港口間OD數據和AIS數據進行稀疏化表示,以original_out_utc對應點為起始點,每隔2海里記錄一個新的點,直到destination_out_utc。
5. 基于DBSCAN線段聚類方法,對所有在此港口間航行的航跡線進行聚類,獲取兩個港口間真實航道信息,統計航道屬性,并關聯相應的航跡線。
?
注:
DBSCAN線段聚類算法:
1)軌跡特征點提取:
兩點P1(x1,y1),P2(x2,y2)的正向直線方程F12的表達式為
F12(x,y) = (y2 - y1)(x –x1)+(x2 – x1)(y – y1);
P1(x1,y1),P2(x2,y2), P3(x3,y3),P4(x4,y4)是連續的四個點。連接P1,P2的直線方程F12(x,y),計算F12(x3,y3);連接P2,P3的直線方程F23(x,y),計算F23(x4,y4)。若F23(x,y)* F23(x4,y4)< 0 ,則P3(x3,y3)為特征點。
軌跡線的起止點為特征點,起止點之間的點則通過上述方法生成。
2)計算兩段特征直線間的距離
軌跡線中兩特征點P1,P2;另一條軌跡線中兩特征點A,B。θ為兩特征線段的夾角,A點到P1P2的距離為L1,B點到P1P2的距離為L2.
條件處理:
①AB與P1P2相交則,兩線段間距離為0;
②若A,B兩點的x坐標在P1P2內,則分別計算L1和L2,AB到P1P2的距離為 ;
③若A,B兩點的x坐標與P1P2所在x范圍有交集,則需要計算L1和L2,以及P1,P2到AB的距離L3和L4,此時AB到P1P2的距離為L1、L2、L3、L4中最小的一個;
④若A,B兩點x坐標與P1P2所在的x范圍沒有交集,則分別計算P1,A;P1,B;P2,A;P2,B的距離,取最小的距離作為兩線段的最小距離。
3)軌跡間聚類
①以某條軌跡為標準計算該軌跡所在的航道數據。
②起始線段為起始,開始計算:該線段與其它軌跡線線段的距離,若軌跡線段間的距離小于5海里,則將其歸為一類。統計所有與該軌跡線段距離小于5海里的線段,并將其歸為一類。
③依次循環所有未分類的軌跡線,統計其軌跡線內的分類。
如果該軌跡內部分線段屬于A類,部分線段屬于B類,則該軌跡需要記錄兩類的分界點和屬性值。
④統計各個分類內,船只的類型、船舶的最大噸位、船舶的最大長度船舶的最大寬度、船舶的最大吃水深度。
⑤對于該類內的線段就行屬性與軌跡線進行關聯。
總結
- 上一篇: 大数据开发岗位的几个方向
- 下一篇: 怎样将多个视频快速分割成两段或者多段