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