談承杰

摘 要:面向大數據的分布式系統,如apache Hadoop,在存儲和分析數量呈指數增長的各種數據(如傳感器數據、客戶生成的媒體、web日志等)方面已被證明是有效的。本文采用分布式可擴展大數據存儲apache Hadoop對船載AIS應答機產生的大量時空數據進行存儲、處理和分析。為了預測船舶在繁忙港口周圍擁擠的航道中航行行為,實驗使用了大約40GB真實南海海區AIS數據。這些數據經過處理形成歷史船舶的航跡,并根據船舶的類型、航行目的地等屬性進行分類。最后,根據目標船的屬性和運動特性,實現了一種簡單的目標船行為預測算法。結果,得到了目標船舶運動預測。實驗結果還表明,在數據處理速度方面,該技術明顯優于傳統的gis應用軟件。
關鍵詞:Apache Hadoop 自動識別系統 運動預測 地理信息系統 軌跡可視化 船舶軌跡分析 大數據
如今,在處理大量增長的AIS數據時面臨著復雜性,這是相當普遍的現象。我們需要對數據進行管理和分析,需要從不斷增長的、已經達到傳統數據處理應用極限的海量數據流中提取價值或意義。這種數據目前被稱為大數據,指的是巨大的數據集,這些數據集在存儲、搜索、共享、可視化和分析方面面臨挑戰。目前,大數據通常被定義為三個特征:容量、變化和速度。如何解決如此復雜的大數據處理呢?我們在海區中心機房搭建了Apache Hadoop 分布式數據處理平臺。在此平臺上存儲和分析著數千萬億字節的AIS數據。AIS是船舶通過無線電波向其他船舶以及內陸基站傳送數據的一種手段。傳輸的數據可分為三類:(1)靜態數據,包括船舶名稱、國際海事組織(IMO)編號、海事移動服務標識(MMSI)編號。(2)動態數據,包括船舶位置、離地速度(SOG)、離地航向(COG)、當前狀態和轉彎速度。(3)航次數據,包括目的地、預計到達時間(ETA)和吃水量。
1. 研究目的及可行性
本次研究目的僅僅是利用AIS數據集的分析結果,預測船舶在港口附近航道上航行的移動。希望通過對船舶行為的近距離預測,為船舶運營商和港口運輸管理者提供有價值的信息。分析數據的過程是在假設船舶運動行為形成其軌跡是由船舶的航向、速度、類型、時間和航行目的地等參數決定的情況下開始的。因此,從邏輯上講,可以根據這些參數預測任何船舶的航跡。然后,根據確定船舶航跡的參數建立統計數據和可視化。在此統計數據的基礎上,結合可視化技術,通過實現一個簡單的算法,對目標船的未來位置進行了預測。通過反復的實驗驗證了結果的正確性。
2.場景和數據建模
2.1場景假設
假設在航道上航行進入或離開港口必須根據其屬性遵循一定的運動規律以及特點。具有完全相同或相似的屬性和特征很可能遵循相似的移動模式。船舶的屬性和特征用作確定船舶移動的參數模式和預測其未來位置,場景參數如下:
(1)當前位置。這個參數是需要收集目標的k近鄰(knn)用于確定其移動模式的船舶。
(2)航向和速度。假設具有相同航向和速度的船舶可能在一段時間內到達同一地點。
(3)船舶類型。不同的類型的船舶通常有不同的航線
(4)目的地。目的地不同的船將通過不同的航線路線
(5)船舶狀態。此參數指示船舶是否在航行、錨泊、擱淺等移動狀態。
2.2設計數據庫htable模型并創建統計可視化
當所需的數據集準備就緒時,下一步是設計hbase表模式的方式應確保提供對空間查詢(如knn查詢和船舶軌跡查詢。有三張表需要創建,即BroadcastTable、VesselTable和VoyageTable。broadcastTable是保存AIS數據,并將回答傳入的查詢。VesselTable可存儲船舶航行時只保存船舶的靜態數據VoyageTable存儲船舶航行的特定信息數據。這兩個表只有BroadcastTable更新或者增加的時候才會用上。broadcastTable的結構如下:船舶類型、吃水深度、狀態和MMSI的組合為選擇為BroadcastTable的行鍵,因為它啟用對船舶軌跡查詢的快速有效響應,可以是查詢請求的船舶軌跡。這些軌跡是利用基于java的開源gis軟件實現可視化從而對船舶運動模式進行可視化分析。船舶軌跡的統計可視通過自定義船舶軌跡參數查詢生成。geohash由船舶位置坐標生成(經度,緯度)構造broadcastTable的列鍵。geohash是一種轉換二維位置的技術一維經緯坐標排序字符串類似于z階空間填充曲線。這個算法使我們能夠簡單地執行前綴搜索以及進行關鍵字搜索。
2.3簡單預測算法的實現
研究的主要思想是預測船舶的未來基于相似屬性船舶過去軌跡的定位以及特點。因此,算法邏輯很簡單,找到與目標船相似的船只并假設目標船將遵循相同的軌道船舶。船舶類型被選為實現算法。其中4種不同類型代碼的船舶。預測算法如下:(1)將目標船舶位置坐標p(x,y)轉換為geohash,其中x是經度值,y是緯度值。目標船必須有目的地。(2)使用行鍵前綴“vesseltype”掃描BroadcastTable?!癲raft. status”作為掃描行鍵和目標發貨位置geohash字符串作為列鍵。結果將是目標船knn,鄰近的將是相同類型,相似吃水,同樣的地位。(3)只選擇并返回滿足下列要求:具有相同的目的地和目標船國籍相同,它的航向和速度與目標相似船。(4)計算目標船位置之間的距離p(x,y)和得到的每個鄰域位置n(x,y)。(5)從BroadcastTable中檢索鄰近的軌跡。每艘船的軌跡都表示為幾何圖形表示的linestring類型線串由鍵入以經緯度坐標表示的點。構成線串的點按時間排序間隔60秒。(6)計算目標船的未來位置使用以下公式:
P(xt, yt) = Nt(xt, yt) ? D(dxt0, dyt0) 公式一、D(dxt0, dyt0) = N(xt0, yt0) ? P(xt0, yt0) 公式二。
式中t=t0+Δt是未來時間,t0是當前時間,而Δt是t0和t.p(xt0,yt0)和p(xt,yt)是當前以及目標船的未來位置。n1(xt0,yt0),n2(xt0,yt0),…,nk(xt0,yt0)是k當前時間的最近鄰位置和n1(xt,yt),n2(xt,yt),…,nk(xt,yt)是它們的位置在時間t時,可從其對應的軌跡。在當前位置,dx和dy是目標和各自的鄰近船。因此,d(dx,dy)是從目標船到其每艘鄰近船舶,如圖1所示。
計算了目標船的預計位置,然后,可以通過簡單的計算目標實際位置與預測的位置。
3.實驗
為了檢驗所提出方法的有效性以及評估預測結果,真實南海海區的AIS數據,在Hadoop上以完全分布式模式處理。真實南海海區的AIS數據是由交通運輸部南海航海保障中心廣州航標處海區導航中心提供的。覆蓋南海海區轄區范圍,一年內(2018年1月1日至2018年12月31日)的數據。數據geodatabase(gd b)文件轉換為sh ap ef i le(shp)格式之后為了進一步的處理,數據大小達到780GB。以2018年11月為測試數據。通過船舶的運動預測算法,可視化結果所示觀察可視化船舶的運行軌跡,我們發現船舶的類型對船舶的航線格局有重大影響,如圖所示南海海區的油船運行目的地集中前往洋浦港、欽州港、高欄港等港口,在前往這些港口的過程中已經形成了明顯的船舶軌跡。這就意味著船舶的運動模式一般可以通過船舶類型來預測其航行。
4.結語
今后我們遇到類似的問題可利用apache Hadoop的優點,在處理大型數據集時。檢驗其可行性和方法的有效性,并利用AIS的實際數據進行實驗。根據實驗結果,提出的方法有兩個好處:(1)方法優于傳統的gis桌面應用程序在快速處理大量ais數據以生成船舶軌跡可視化。(2)僅僅通過實現了一個簡單的算法,就能夠在相對廣闊的海域預測船舶的航行行為。但是,仍然有很多需要改進的工作, 如更先進的算法,其中在預測中使用的每個參數都分配了適當的權重,以便預測精度可以提高。
參考文獻:
[1]Ariel Cary,“在大型空間數據庫中擴展地理空間搜索”,佛羅里達國際大學,2011年.
[2]Hadoop權威指南:大數據的存儲與分析(第4版) Tom White著 2017年.
[3]Hadoop大數據實戰權威指南 黃東軍 編著2017-07-01.