姜書成 鞏海方
摘 ?要:隨著時間的推移、航運經(jīng)濟的快速發(fā)展,以及AIS設(shè)備裝船的數(shù)量的增加,中國沿海AIS岸基系統(tǒng)每年都產(chǎn)生海量的AIS數(shù)據(jù),如何快速地從中找到所需的數(shù)據(jù),成為迫在眉睫需要解決的問題。該文通過對AIS數(shù)據(jù)文件結(jié)構(gòu)、AIS語句結(jié)構(gòu)的研究,對比計算生成的特定船舶發(fā)出AIS報文起始字符串,大大地減少了解析數(shù)據(jù)量,從而提高了AIS報文抽取和解析效率。
關(guān)鍵詞:船舶自動識別系統(tǒng) ?數(shù)據(jù) ?抽取
中圖分類號:U675.7 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼:A ? ? ? ? ? ? ? ? ? ? ? ? 文章編號:1672-3791(2019)06(a)-0032-02
20世紀90年代,國際海事組織推出了船舶自動識別系統(tǒng)(Automatic Identification System,簡稱AIS),在船上安裝船載的識別終端,希望船舶通過自動獲取岸基和其他船舶信息,加強船舶之間、船岸之間的聯(lián)系,防止船舶碰撞,降低因船舶事故造成的人身、財產(chǎn)損失和海洋環(huán)境污染。作為國際海事組織的A類理事國,我國積極履行國際公約,于2001年12月18日發(fā)布了船舶強制配備該設(shè)備的公告。
自AIS系統(tǒng)投入運行以來,在船舶避碰、海事監(jiān)管和搜救方面發(fā)揮了重要的作用,已成為海上船舶目標識別的重要手段。AIS數(shù)據(jù),在船舶的密度分布、航跡分布、船速分布、類別分布,以及交通流量、領(lǐng)域容量、會遇概率等多方面進行了應(yīng)用,成為海上航路規(guī)劃和設(shè)計的重要參考依據(jù),其歷史軌跡也成為海事調(diào)查工作中的重要證據(jù)。
隨著數(shù)據(jù)的累積,從浩如煙海的AIS數(shù)據(jù)中調(diào)取某一條特定船舶特定時間段內(nèi)的AIS數(shù)據(jù),將是一件比較困難的事情。該文將分析從龐大的AIS歷史數(shù)據(jù)中快速抽取某條船舶的中長期AIS數(shù)據(jù)的方法。
1 ?船舶AIS數(shù)據(jù)快速抽取技術(shù)的開發(fā)
1.1 AIS報文的種類及數(shù)據(jù)結(jié)構(gòu)
由于Class-A和Class-B類的AIS提供了總計24種AIS報文,但是對于船舶軌跡回放和分析的僅僅只有第1類(定時的船位報告,由A類船載移動設(shè)備播發(fā))、2類(分配時間表的船位報告)、3類(特別船位報告,對詢問的回復(fù))、5類(定時的靜態(tài)數(shù)據(jù)和與船舶有關(guān)的船舶數(shù)據(jù)報告)、18類(標準Class-B類設(shè)備位置報告,用以替代第1、2、3類的Class-B類船載移動設(shè)備的標準船位信息報告)、19類(擴展B類設(shè)備位置報告,包括附加的靜態(tài)信息)這6類信息。這6類報文的數(shù)據(jù)結(jié)構(gòu)大致類似,都包括報文ID、用戶ID、報文內(nèi)容及通信狀態(tài)等內(nèi)容,該文就不再做詳述。
1.2 快速抽取指定船舶AIS數(shù)據(jù)的方法
由上面的分析可以看出,將每一條數(shù)據(jù)都解析,都可以獲得發(fā)送該條語句的船舶AIS設(shè)備的MMSI(海事移動業(yè)務(wù)識別碼)號碼,可以根據(jù)解析得的MMSI號碼與給定的船舶MMSI號碼進行對比,找到并保存需要抽取的目標船舶的數(shù)據(jù)。然而抽取目標船舶的AIS數(shù)據(jù)在整體數(shù)據(jù)中所占的比重非常小,在這樣的計算過程中,將大量的時間耗費在解析非抽取目標船舶的數(shù)據(jù)上,不能快速地從大量的原始數(shù)據(jù)中獲得抽取目標船舶的AIS數(shù)據(jù)。
進一步分析這6類AIS數(shù)據(jù)的結(jié)構(gòu)可以看出,每一類數(shù)據(jù)的前38bit的結(jié)構(gòu)都是相同的,如表1所示。
通過表1可知,可以通過給定的抽取船舶的MMSI號碼,計算出該條船舶AIS設(shè)備發(fā)射的這6類AIS信息封裝ITU-R M.1371報文的起始字符串,符合該字符串的數(shù)據(jù)即為要抽取的目標船舶的AIS數(shù)據(jù),對其進一步解析,這樣大大地減少了解析數(shù)據(jù)的條數(shù),提高了解析效率。
查表法是高效的計算機方法,為進一步提高從給定MMSI計算ITU-R M.1371報文的起始字符串的效率,該項目研究中利用了6bit ASCII碼與二進制對照表,運用下述算法生成的二進制在對照表中快速地查找對應(yīng)的6bit ASCII碼,組成ITU-R M.1371報文的起始字符串。
算法描述如下。
步驟一:依次將給定的消息識別碼、轉(zhuǎn)發(fā)指示符和用戶識別碼分別按次序計算各自對應(yīng)的二進制形式的無前導(dǎo)“0”的ASCII數(shù)字字符串,如果該數(shù)字大小等于0,則用一個“0”字符表示。
步驟二:將步驟一計算得到的二進制ASCII字符串,在其左端填充字符“0”,使填充后的字符串長度等于其表1中所示的比特數(shù);如果填充前字符串長度已經(jīng)達到該參數(shù)在表1中標明的比特數(shù),則無需填充。
步驟三:將填充后的各字符串按照步驟一中傳入?yún)?shù)的順序連接,即消息識別碼填充后的二進制字符串在最左端,用戶識別碼填充后的二進制字符串在最右端;該字符串的總長度應(yīng)為38。
步驟四:將步驟三生成那個的二進制字符串,從左端第一個字符開始,按照步長等于6進行分隔,可分隔出7段,最后一段僅2個字符應(yīng)舍去。對分隔出的每一段字符串從6bit ASCII碼與二進制對照表查找對應(yīng)的6bit ASCII字符,可得到6個字符,這6個字符就是需要的ITU-R M.1371報文的起始字符串。
1.3 舉例驗證分析方法的可行性
如查找MMSI號碼為“412049010”播發(fā)的第一類AIS報文,其轉(zhuǎn)發(fā)標志設(shè)為0。
按步驟一,依次傳入1,0,412049010,生成的未左端填充的二進制字符串分別是:
1:1
0:0
412049010:11000100011110101111001110010
按步驟二,對上述生成二進制字符串左端補“0”達到其對應(yīng)的比特數(shù),填充后為:
1:000001
0:00
412049010:011000100011110101111001110010
按步驟三:將上述3個字符串按次序連接,新的字符串如下:
00000100011000100011110101111001110010
按步驟四,將上述字符串按步長為6進行分隔,舍去僅有2字符的最后一段,剩余6段,如下:
1,000001
2,000110
3,001000
4,111101
5,011110
6,011100
最后在6bit ASCII碼與二進制對照表查找對應(yīng)的6bit ASCII字符分別是:
“1”,“6”,“8”,“u”,“N”,“L”
則快速抽取該船舶發(fā)送的第一類轉(zhuǎn)發(fā)次數(shù)為0的ITU-R M.1371報文數(shù)據(jù)起始字符串為“168uNL”。
按以上算法編制的程序在硬件配置為Intel Core i3 2.52GHz,內(nèi)存2G,操作系統(tǒng)為Windows7 Home Edition(x86)的普通筆記本計算機上創(chuàng)建4個線程從2011年1月的AIS歷史數(shù)據(jù)(共744個文件)中抽取船舶數(shù)據(jù),實驗結(jié)果如下:
MyWorkingThread-1讀取數(shù)據(jù)總數(shù):1040806239, 發(fā)現(xiàn)目標:15450
MyWorkingThread-1→耗時:2294.467s
MyWorkingThread-2讀取數(shù)據(jù)總數(shù):977810566,發(fā)現(xiàn)目標:14239
MyWorkingThread-2→耗時:2040.14s
MyWorkingThread-3讀取數(shù)據(jù)總數(shù):920864808,發(fā)現(xiàn)目標:13163
MyWorkingThread-3→耗時:1927.383s
MyWorkingThread-4讀取數(shù)據(jù)總數(shù):936319319, 發(fā)現(xiàn)目標:13571
MyWorkingThread-4→耗時:1955.541s
最終耗時以耗時最長的線程為準為2294s,約38.2min,抽取MMSI號碼為“412049010”的船舶歷史軌跡位置點共56423個。
從驗證中可以看出,該方法可以快速地從大量AIS數(shù)據(jù)中抽取特定船舶的AIS數(shù)據(jù),達到了預(yù)期效果。
2 ?結(jié)語
該文通過研究AIS報文數(shù)據(jù)結(jié)構(gòu),對于給定的船舶MMSI號碼,計算生成該船舶發(fā)射的6類AIS信息封裝ITU-R M.1371報文的起始字符串,通過比對得到符合該字符串的數(shù)據(jù),即為要抽取的目標船舶的AIS數(shù)據(jù),這樣大大地減少了解析數(shù)據(jù)的條數(shù),提高了解析效率,從而得到了一種從海量船舶AIS數(shù)據(jù)中快速抽取指定船舶AIS數(shù)據(jù)的方法。
參考文獻
[1] 徐鐵,蔡奉君,胡勤友,等.基于卡爾曼濾波算法船舶AIS軌跡估計研究[J].現(xiàn)代電子技術(shù),2014,37(5):97-100,104.
[2] 劉暢.船舶自動識別系統(tǒng)(AIS)關(guān)鍵技術(shù)研究[D].大連海事大學(xué),2013.
[3] 朱飛祥,張英俊,高宗江.基于數(shù)據(jù)挖掘的船舶行為研究[J].中國航海,2012,35(2):50-54.