王偉懿 李曉勇
(1.中國電子科技集團公司第十五研究所 北京 100083)(2.海軍工程大學導航工程系 武漢 430033)
隨著我國綜合實力和國際影響力的不斷提升,以及“一帶一路”等戰略的深入發展,海洋成為連接中國與世界的重要通道,航行于世界各地船舶也成為傳播中國文化和促進共同發展的重要載體[1]。為了避免船舶與船舶之間發生碰撞,便于船舶與海岸之間通信聯絡,基于網絡技術、導航定位技術、通訊技術和電子技術等,形成了船舶自動識別系統(Automatic Identification System,AIS)[2~3]。搭載AIS的大量船舶航行于世界各地,產生了大量的航跡數據,并具有鮮明的時空屬性,研究和應用好船舶時空大數據對提高船舶航行安全性、挖掘潛在規律和知識等方面具有重要意義[4]。
目前,針對軌跡時空大數據的研究主要側重于地面車輛行駛的軌跡,如文獻[5]利用出租車軌跡數據進行城市道路擁堵狀態估計;文獻[6]基于出租車軌跡數據開展了路徑規劃方法的研究;文獻[7]對公交大數據存在的四類異常進行分析并通過數據清洗提高了預測精度。然而,基于海量船舶時空軌跡數據的處理與應用研究相對較少。本文在深入分析AIS軌跡數據特點的基礎上,通過數據清洗、坐標轉換、數據入庫等處理,開展了航跡線提取與壓縮以及基于密度圖的船舶時空大數據可視化研究。
AIS數據包括靜態信息和動態信息兩部分[8]。靜態信息主要指船舶的名稱與類型等較固定的信息,通常在AIS初始化時輸入系統,一般不進行修改,主要包括唯一識別碼MMSI、船名NAME、船籍國家FLAG、船靜態時間STATICTIME等內容。動態信息來自于船上安裝的和航行有關的傳感器,它記錄了船舶的位置、航向等實時更新的數據,該信息由AIS設備自動讀取與發射,主要包括船舶唯一標識MMSI、靜態時間STATICTIME、航點時間TIME、航點經度LON、航點緯度LAT、對地航速SOG、對地航向COG等內容。[9]
AIS時空大數據處理與可視化主要包括船舶軌跡點異常數據清洗、坐標空間基準轉換、數據入庫、去除漂移點、航跡線提取、航跡線壓縮、關聯靜態數據等階段,如圖1所示。

圖1 船舶時空大數據處理與可視化流程
AIS數據受信號傳輸、設備等因素影響,不可避免地會存在錯誤,主要原因包括:1)設備缺少維護或長時間運行等原因出現問題或損壞;2)航行過程中遇到遮擋、惡劣天氣、航道中船舶數量過多,信號通信不暢;3)不同的監控設備采集到的數據,在進行融合時出現問題;4)操作員沒有按照規范對數據進行操作[10]。若直接用原始數據進行研究分析,必然會影響結果的準確性,因此,在開展下步處理工作前,需要依據不同字段的合理數據范圍,對不符合常識情況的數據進行清洗,比如刪除MMSI長度不為9的數據等,船舶航跡數據字段合理范圍如表1所示。

表1 船舶航跡數據字段合理范圍
AIS船舶軌跡數據和港口位置信息大多是基于地理坐標系的經緯度坐標,為了便于后續計算,入庫前需要將經緯度坐標轉換為墨卡托投影平面直角坐標。轉換公式如下[4]:

式中,q為等量緯度,r0為基準緯度的緯圈半徑,N0為基準緯度處橢球的卯酉圈曲率半徑,φ0為墨卡托投影的基準緯度,a為地球橢球長半徑,e為橢球體第一偏心率,φ和λ為緯度和經度,X和Y為轉換后的墨卡托投影平面直角坐標。
為便于數據處理與應用,需要將經過清洗的數據導入數據庫。本文采用Greenplum作為存儲平臺[11],將AIS船舶數據分為四個表:全球港口數據表、船舶軌跡點表、船舶信息表和船舶航跡線表。如表2所示,全球港口數據表記錄港口位置、名稱、所屬國家等信息,作為判斷出入港航跡點的依據;如表3所示,船舶軌跡點表存儲軌跡點位置、對地航速、對地航向等信息;如表4所示,船舶信息表記錄船舶名稱、貨物類型、船舶類型等信息,船舶軌跡點表與船舶信息表可通過船舶唯一標識進行關聯;如表5所示,航跡線表記錄提取生成的航跡線幾何位置、出入港、行駛時間等信息。

表2 全球港口數據表

表3 船舶軌跡點表

表4 船舶信息表

表5 航線表
AIS記錄的動態數據是帶有坐標的海量點位數據,不利于直接進行分析,并且無法直接反映船舶航行軌跡信息,因此,需要在密集的采樣點中提取出描述原始航跡的關鍵點,按時序連線形成航線[5]。同時,由于點位數據較為密集,為便于可視化和反應航行主要特征,需要對提取后的航線進行壓縮處理。
1)航線提取
(1)根據船舶標識mmsi,遍歷船舶軌跡點數據,得到該mmsi所有軌跡點;
(2)將該mmsi所有軌跡點與全球港口3000m緩沖區求交;
(3)判斷出入港點。取出一個緩沖區,將落入該緩沖區中的航跡點按采樣時間排序,計算每個點到港口中心點的距離,并與前后兩個點的距離對比,如圖3所示,若距離變小,則該點為入港點,若距離變大,則該點為出港點。據此,對每個緩沖區的航跡點進行判斷。一個港口點可能有0個或多個出入港點。

圖2 航線提取流程

圖3 出入港判斷示意圖
(4)判斷航次出入港點。對某港口內所有點按采樣時間排序,連續的入港點或連續的出港點各分為一組,每組入港點中時間最早的點為該組入港點,每組出港點中時間最晚的點為該點出港點;每個港口同一mmsi可能多次出入港口。
(5)提取航線。將該mmsi從一個港口的出港點到另一個港口的入港點的航跡點,按采樣時間排序構成航線。
2)航線壓縮
AIS數據采樣間隔時間短,數據密集,若全部用于構成航線,不僅增大數據量,而且降低可視化效率。因此,需要對航線進行壓縮處理,主要有SPM和Douglas-Peuker兩種算法[12~13]。
(1)SPM算法:如圖4所示,基本原理是將首尾兩點連接形成一條基線,從起點開始的第二個軌跡點依次向基線做垂線,得到垂直歐氏距離d,如果d小于預先設定的閾值δ,則舍棄該點;直到出現軌跡點到基線的距離大于閾值,才將該點重新設置為起點。重復該步驟,直到所有的軌跡點都被掃描、選取。

圖4 SPM算法基本原理
(2)Douglas-Peuker算法:如圖5所示,連接線首尾兩個端點,計算連線上其余節點到該直線距離,取其中最大的距離跟給定的閾值比較,若距離小于閾值,刪除端點以外的所有點,若距離大于閾值則保留該點,從該點將連線分成兩條,分別重復之前的方法,直至處理完畢所有點。

圖5 Douglas-Peuker算法基本原理
本文借助ArcGIS軟件的屬性連接功能,通過統計各個格網中航跡線個數,生成全球航線密度圖[14],如圖6所示。準備8級~11級4個全球范圍格網Shape,借助ArcGIS軟件的連接功能,在各個格網中自動生成Count_字段,標識落在格網中航跡線個數,如圖7所示。

圖6 ArcGIS屬性連接

圖7 ArcGIS格網航跡線統計
利用ArcGIS軟件分級設色功能(圖8),按照各網格航線數進行分級設色,可以得到不同顯示尺度下的航線密度圖,如圖9所示。

圖8 ArcGIS分層設色

圖9 全球船舶航線密度圖
為了驗證本文全球船舶時空大數據處理方法的有效性與可用性,選取2014全球AIS動態數據和5332個港口數據進行數據處理試驗,原始航跡采樣點2809442564個,按照本文2.2節方法進行清洗后,試驗數據1889890232個,數據量141GB,按年存儲表索引容易超出服務器內存,因此,采用按月份分表的方式分別入庫存儲。
對2014年航跡點數據,根據前后兩點的距離和時間差,計算每個采樣點的速度,并繪制各月份速度直方圖,如圖10所示。可以看出,采樣點速度基本分布在50海里/h以內,換算為墨卡托投影平面坐標約25.72m/s。據此,將速度大于50海里/h的作為漂移點并去除。

圖10 2014年試驗數據各月份航跡點速度分布
按照本文方法對2014年全球船舶航跡點試驗數據進行坐標轉換、航線提取與壓縮處理。其中,分別采用SPM算法和Douglas-Peuker算法進行航線壓縮處理,2014年1月份試驗數據14095萬條,經SPM算法壓縮后,剩余8萬條,壓縮速度較慢,適合局部數據的壓縮;經Douglas-Peuker算法壓縮后,剩余12萬條線段,壓縮速度較快,適合全球數據的壓縮。如圖11所示,從壓縮后局部效果來看,兩種算法壓縮后可視化效果差別不大,綜合考慮處理速度,選擇Douglas-Peuker算法更適合全球船舶時空大數據處理。另外,本文通過大量試驗對比發現,兼顧航線細節保留和地圖顯示流暢度,得出地圖顯示級別為0~7級閾值取2500m,地圖顯示級別為8~11級閾值取200m,地圖顯示級別為12~14級不壓縮,對航線壓縮處理的效果更好。

圖11 SPM算法和Douglas-Peuker算法航線壓縮效果對比
壓縮后的航線采用密度圖的方式進行可視化。利用Tippecanoe工具創建矢量瓦片數據,發布至地圖服務器,通過Mapbox GL調用Java Script樣式文件實現Web端實時渲染,地圖顯示級別為8級~11級的密度圖可視化結果,分別如圖12~圖15所示。從圖中可以看出,隨著地圖顯示級別的增大,密度圖可視化的細節效果隨之增加,反映全球船舶航行的時空特征更加明顯。

圖12 8級顯示航線密度圖

圖13 9級顯示航線密度圖

圖14 10級顯示航線密度圖

圖15 9級顯示航線密度圖
本文以全球船舶時空大數據為研究對象,通過分析AIS航跡點信息,研究了船舶時空數據的清洗轉換、數據入庫存儲、航行提取與壓縮以及航線密度圖可視化方法,選用2014年AIS全球數據進行試驗,驗證了本文方法的有效性。下一步,將重點圍繞航線時空規律挖掘分析進行研究。