賀超峰,徐鐵,胡勤友,葛依東
(上海海事大學(xué)商船學(xué)院,上海 201306)
目前,3種主流的海上船舶監(jiān)控形式[1]有沿海CDMA網(wǎng)絡(luò)監(jiān)控,海事衛(wèi)星監(jiān)控以及結(jié)合AIS的VTS監(jiān)控.沿海CDMA網(wǎng)絡(luò)監(jiān)控只能在沿海有CDMA信號(hào)的地區(qū)使用,比較適合近岸運(yùn)輸船舶.海事衛(wèi)星監(jiān)控雖然不受船舶所在海區(qū)的限制,可以較好地實(shí)現(xiàn)全天候監(jiān)控,但海事衛(wèi)星通信費(fèi)用昂貴,不適合持續(xù)監(jiān)控.雖然AIS覆蓋的船舶范圍非常廣泛,目前全球任何500總噸以上的船舶都強(qiáng)制安裝AIS系統(tǒng),但AIS系統(tǒng)發(fā)射的信號(hào)傳輸距離有限,存在監(jiān)控盲區(qū).當(dāng)船舶在遠(yuǎn)洋中航行時(shí),其AIS信息往往不能被岸基AIS基站接收,從而使其失去監(jiān)控.
幾年前,美國、挪威等國家開始利用低軌衛(wèi)星接收其覆蓋范圍的船舶AIS信息,從而實(shí)現(xiàn)遠(yuǎn)離陸地區(qū)域的船舶動(dòng)態(tài)監(jiān)控,但由于衛(wèi)星數(shù)量較少,不能連續(xù)采集同一地區(qū)的船舶AIS信息,因此獲得的船舶動(dòng)態(tài)信息實(shí)時(shí)性較差.船舶遠(yuǎn)程識(shí)別與跟蹤系統(tǒng)(LRIT)利用衛(wèi)星定位和衛(wèi)星通信技術(shù)獲取本船的位置與時(shí)間信息,并發(fā)送給船旗國所指定的數(shù)據(jù)中心進(jìn)行儲(chǔ)存和處理.[2]目前,并不是所有船舶都已配備LRIT,尤其是內(nèi)貿(mào)船舶.對(duì)于沒有配備LRIT的船舶,進(jìn)入陸地AIS基站監(jiān)控盲區(qū)時(shí)就無法被監(jiān)控.此外,LRIT通信費(fèi)用昂貴,不適合連續(xù)監(jiān)控,實(shí)時(shí)性較差.
利用北斗衛(wèi)星導(dǎo)航系統(tǒng)(簡(jiǎn)稱北斗)轉(zhuǎn)發(fā)本船AIS信息[3]的做法對(duì)裝有北斗設(shè)備的船舶是有效的,但目前還有很多船舶沒有配備北斗設(shè)備,因此這些船舶不能得到有效監(jiān)控.本文結(jié)合AIS和北斗的優(yōu)勢(shì),用北斗轉(zhuǎn)發(fā)本船和周圍船舶的AIS信息,使沒有配備北斗設(shè)備的船舶也能得到有效監(jiān)控,且通過北斗衛(wèi)星通信要比通過其他衛(wèi)星通信成本低,從而既可以使監(jiān)控區(qū)域覆蓋陸地AIS基站的盲區(qū),又可以不用付出與其他衛(wèi)星通信一樣的昂貴代價(jià).另外,還在AIS數(shù)據(jù)中添加優(yōu)先權(quán)(priority)字段,用于實(shí)現(xiàn)對(duì)指定船舶的搜索.
一個(gè)時(shí)段內(nèi)本船接收到的AIS信息數(shù)據(jù)量往往較大,而北斗的短報(bào)文通信能力有限.為了有效利用北斗的短報(bào)文通信功能,有必要對(duì)接收到的AIS信息采取一系列處理措施,減少數(shù)據(jù)冗余.AIS數(shù)據(jù)冗余主要有以下幾種形式:重復(fù)數(shù)據(jù)冗余、無用數(shù)據(jù)冗余、數(shù)據(jù)表示冗余、編碼冗余等.首先通過數(shù)據(jù)預(yù)處理和數(shù)據(jù)壓縮減少AIS數(shù)據(jù)冗余,然后利用北斗轉(zhuǎn)發(fā)處理過的數(shù)據(jù).數(shù)據(jù)處理總流程見圖1.
數(shù)據(jù)預(yù)處理的主要目的是去除重復(fù)數(shù)據(jù)冗余,無用數(shù)據(jù)冗余以及數(shù)據(jù)表示冗余,主要包含如下幾個(gè)部分,見圖2.
(1)數(shù)據(jù)獲取.主要通過時(shí)間過濾和字段篩選減少數(shù)據(jù)量,達(dá)到減少無用數(shù)據(jù)冗余的目的.(2)數(shù)據(jù)過濾.主要進(jìn)行重復(fù)數(shù)據(jù)過濾.(3)去除數(shù)據(jù)表示冗余.通過差值法減少表示相同信息量所需要的數(shù)據(jù)量.(4)數(shù)據(jù)重組.去除數(shù)據(jù)表示冗余后,數(shù)據(jù)在轉(zhuǎn)發(fā)后要想恢復(fù)原樣就必須在數(shù)據(jù)中加上某些數(shù)據(jù)(數(shù)據(jù)頭),將數(shù)據(jù)中相應(yīng)項(xiàng)和數(shù)據(jù)頭中相應(yīng)項(xiàng)相加才能得到原來的數(shù)據(jù).
本船接收到的周圍船舶AIS信息并非都有用.比如想知道某船舶目前的位置,如果數(shù)據(jù)庫中有該船當(dāng)前時(shí)刻或最近很短時(shí)間內(nèi)的AIS信息,那么該船幾個(gè)小時(shí)前的數(shù)據(jù)就會(huì)是無用數(shù)據(jù)或是之前被發(fā)送過的數(shù)據(jù).因此,有必要對(duì)AIS數(shù)據(jù)進(jìn)行時(shí)間過濾.另外,AIS信息中包括很多字段,對(duì)于特定的應(yīng)用只需要某些特定字段,例如對(duì)于船舶動(dòng)態(tài)監(jiān)控而言,只需要海上移動(dòng)識(shí)別碼(mmsi)、經(jīng)度(lon)、緯度(lat)以及更新時(shí)間(updatetime,以下簡(jiǎn)稱ut)等字段.因此,還可以通過字段篩選減少數(shù)據(jù)量.這里主要研究定位字段.
定義tg為時(shí)間間隔,tp為過去某時(shí)刻,tn為現(xiàn)在時(shí)刻,則只需獲取時(shí)間區(qū)間TR=[tp,tn]內(nèi)的數(shù)據(jù),而在tp時(shí)刻以前的數(shù)據(jù)可以近似認(rèn)為是無用數(shù)據(jù).其中
式中的tg須根據(jù)具體情況決定.例如,根據(jù)北斗轉(zhuǎn)發(fā)AIS數(shù)據(jù)的速度,使得北斗正好在某個(gè)tg時(shí)間內(nèi)轉(zhuǎn)發(fā)完所有應(yīng)發(fā)的AIS數(shù)據(jù),這樣就能保證所有有用的AIS數(shù)據(jù)都有機(jī)會(huì)被轉(zhuǎn)發(fā).
為了實(shí)現(xiàn)對(duì)指定船舶的定位,船載AIS接收端在接收到的AIS數(shù)據(jù)后加上優(yōu)先級(jí)(priority)字段,使指定船舶的AIS信息能優(yōu)先被轉(zhuǎn)發(fā).
通過減少重復(fù)數(shù)據(jù)的轉(zhuǎn)發(fā),達(dá)到減輕北斗負(fù)擔(dān)、提高北斗有效利用率的目的.
如果某船舶(稱為A船)的AIS數(shù)據(jù)沒有更新且已通過北斗轉(zhuǎn)發(fā)或更新過,但是其經(jīng)度和緯度與該船之前的AIS信息的相應(yīng)字段的差值——經(jīng)度差(londiff)和緯度差(latdiff)分別小于經(jīng)度差閾值(londiffT)和緯度差閾值(latdiffT),則稱該AIS數(shù)據(jù)為重復(fù)數(shù)據(jù).已經(jīng)通過北斗轉(zhuǎn)發(fā)的AIS數(shù)據(jù)顯然是重復(fù)數(shù)據(jù),沒有必要再轉(zhuǎn)發(fā)一次.而之所以把經(jīng)度差和緯度差都小于相應(yīng)閾值的更新過的AIS信息定義為重復(fù)數(shù)據(jù),是因?yàn)樵谶@種情況下A船基本沒移動(dòng),其位置可近似認(rèn)為沒變化.
記A船在t時(shí)刻的AIS數(shù)據(jù)為AIS_t,且設(shè)t2=t1+Δt,其中t1為上次從數(shù)據(jù)庫中取數(shù)據(jù)的時(shí)刻,t2為當(dāng)前從數(shù)據(jù)庫中取數(shù)據(jù)的時(shí)刻,若
或
其中
則在t2時(shí)刻取到的A船的AIS數(shù)據(jù)為重復(fù)數(shù)據(jù),故丟棄該數(shù)據(jù).
設(shè)usefullais為用于存儲(chǔ)已發(fā)送AIS信息的數(shù)據(jù)庫表,則數(shù)據(jù)過濾的流程見圖3.
圖3 數(shù)據(jù)過濾
篩選出的AIS信息各字段的類型見表1.
表1 AIS信息各字段類型
從表1可以看出,前4個(gè)字段所占的空間都比較大,而本船與周圍船舶之間的距離都不遠(yuǎn),在緯度上相差1'近似于距離上相距1 n mile,經(jīng)度上略有出入,但也可以作為近似估計(jì).所以,周圍船舶與本船的經(jīng)度差和緯度差應(yīng)該很小.于是,采用差值法,用經(jīng)度差和緯度差代替經(jīng)度和緯度進(jìn)行傳輸,然后在救助指揮中心用相反的過程恢復(fù)其經(jīng)度和緯度.
另外,updatetime 的格式為 yyyy-MM-dd hh-mmss.s.注意到周圍船舶AIS的更新時(shí)間與本船AIS數(shù)據(jù)在年、月、日上更新時(shí)間絕大多數(shù)情況下相同,甚至小時(shí)也相同.如果用本船AIS數(shù)據(jù)更新時(shí)間減去周圍船舶AIS數(shù)據(jù)更新時(shí)間,其差就只包含時(shí)、分、秒、小秒,甚至連時(shí)也沒有,這樣就可大大縮短ut的長度,從而達(dá)到壓縮的效果.程序如下:
通常,北斗轉(zhuǎn)發(fā)信息時(shí)一條北斗報(bào)文包含很多條AIS數(shù)據(jù)信息,各AIS信息之間優(yōu)先級(jí)可能不一樣,因此通過北斗轉(zhuǎn)發(fā)周圍船舶AIS信息時(shí),需要按照某種標(biāo)準(zhǔn)判斷某AIS信息的重要性.例如,要讓基站了解本船周圍的船舶情況,離本船較近船舶的AIS信息就顯得重要些;再如,若基站指定要查找某條船(比如A船),則A船的AIS信息就顯得格外重要.因此,數(shù)據(jù)重組的過程還應(yīng)該包括優(yōu)先級(jí)的計(jì)算,各AIS信息的排序,以及一條北斗信息所包含的AIS信息數(shù)目的設(shè)定等.
一般情況下,以距離和等待時(shí)間作為優(yōu)先級(jí)的判別因素,要想得到優(yōu)先級(jí),就得先求出距離d.本船與A船的距離[4]見如下程序:
則優(yōu)先級(jí)取值規(guī)則程序如下:
若某數(shù)據(jù)A不滿足
則令
其中:
pTime為開始數(shù)據(jù)重組的時(shí)刻.
一般情況下,d值越小的船舶在某種程度上對(duì)本船影響越大,故其AIS數(shù)據(jù)的優(yōu)先級(jí)應(yīng)該越大;但是,如果只考慮距離因素可能導(dǎo)致饑俄現(xiàn)象,即d比較大的數(shù)據(jù)永遠(yuǎn)都得不到轉(zhuǎn)發(fā),于是又增加等待時(shí)間因子,等待的時(shí)間越長,其優(yōu)先級(jí)越大.總之,一般情況下優(yōu)先級(jí)與距離成反比,與等待時(shí)間成正比.
有了priority就可以進(jìn)行排序,而采用的數(shù)據(jù)排序算法是最大堆優(yōu)先級(jí)排序法[5].堆數(shù)據(jù)結(jié)構(gòu)是一種數(shù)組對(duì)象,它可以被視為一棵完全二叉樹,樹中每個(gè)節(jié)點(diǎn)與數(shù)組中存放該節(jié)點(diǎn)值的那個(gè)元素對(duì)應(yīng).而最大堆是這樣一種堆結(jié)構(gòu):除了根節(jié)點(diǎn)以外的每個(gè)節(jié)點(diǎn) i,有
即某個(gè)節(jié)點(diǎn)的值至多與其父節(jié)點(diǎn)的值一樣大.
假定每次都依次選取前NUM條處理好的AIS數(shù)據(jù)進(jìn)行數(shù)據(jù)重組,則重組后的數(shù)據(jù)格式見表2,數(shù)據(jù)重組的流程見圖4.
表2 重組后的數(shù)據(jù)格式
圖4 數(shù)據(jù)重組流程
數(shù)據(jù)預(yù)處理部分是從過濾和差值的角度減少數(shù)據(jù)量,得到的數(shù)據(jù)必須是精簡(jiǎn)的數(shù)據(jù).為了更進(jìn)一步減少數(shù)據(jù)量,從壓縮算法的角度著手.目前數(shù)據(jù)壓縮的算法分為有損壓縮和無損壓縮[6-7]:無損壓縮主要有霍夫曼編碼、算術(shù)編碼、香農(nóng)-范若編碼、行程編碼(RLE編碼)、LZW編碼以及無損預(yù)測(cè)編碼等;有損壓縮主要有DPCM(Differential Pulse Code Modulation)編碼、DM(Delta Modulation)編碼、DCT變換編碼、小波變換編碼等.由于文本壓縮只能使用無損壓縮,而無損壓縮中LZW編碼的效果相對(duì)最好,但因?yàn)長ZW編碼對(duì)小數(shù)據(jù)壓縮的效果有時(shí)不穩(wěn)定,所以文本直接用java中的GZIPOutputStream和Byte-ArrayOutputStream[8]進(jìn)行壓縮.實(shí)驗(yàn)結(jié)果表明其字符串壓縮率平均值在29%左右.
北斗衛(wèi)星每次轉(zhuǎn)發(fā)的字節(jié)數(shù)有限,每次發(fā)射的電文長度不超過120個(gè)漢字[9],而經(jīng)過上述步驟后的數(shù)據(jù)較大,因此在轉(zhuǎn)發(fā)數(shù)據(jù)時(shí)要先拆分?jǐn)?shù)據(jù).為了在接收端能將數(shù)據(jù)重新組合,必須在每條拆分的數(shù)據(jù)前用序號(hào)標(biāo)志,稱之為數(shù)據(jù)報(bào)頭.格式如下:
其中:第1,2個(gè)字節(jié)表示原數(shù)據(jù)被拆分成的條數(shù);第3,4個(gè)字節(jié)表示該數(shù)據(jù)在原數(shù)據(jù)中的序列號(hào);最后兩個(gè)字節(jié)表示該原數(shù)據(jù)在所有數(shù)據(jù)中的序列號(hào).
這樣,在接收端根據(jù)數(shù)據(jù)報(bào)頭判斷該數(shù)據(jù)是否已經(jīng)接收完整,若接收完整就拋棄數(shù)據(jù)報(bào)頭,組裝數(shù)據(jù),然后進(jìn)行CRC校驗(yàn);若校驗(yàn)結(jié)果正確,則解壓組裝后的數(shù)據(jù),若校驗(yàn)結(jié)果不正確,則丟棄該數(shù)據(jù).具體流程見圖5.
圖5 北斗發(fā)送與接收
圖6顯示字符串壓縮率和總壓縮率.由圖可知字符串壓縮率在20% ~40%之間,其平均值約為29%;其總壓縮率的平均值約為2.9%,總壓縮率的取值落在1%~6%之間,與字符串壓縮率相比,其壓縮效果更明顯.總壓縮率由數(shù)據(jù)預(yù)處理和字符串壓縮兩部分組成.數(shù)據(jù)預(yù)處理過濾掉很多無用數(shù)據(jù)、重復(fù)數(shù)據(jù)以及表示冗余數(shù)據(jù),大大減少數(shù)據(jù)量.隨著間隔tg取值的不同,重復(fù)數(shù)據(jù)量也會(huì)有所不同,因此數(shù)據(jù)預(yù)處理效果的好壞與tg的選擇有關(guān).如果tg過小,則重復(fù)數(shù)據(jù)過多,這樣雖然總壓縮率提高,但是系統(tǒng)做了很多無用功;如果tg過大,則某些數(shù)據(jù)有可能永遠(yuǎn)都得不到發(fā)送.因此,在實(shí)踐中要根據(jù)實(shí)際情況調(diào)整tg的值.
圖6 壓縮率
若A船在某處遇險(xiǎn),其通過衛(wèi)星發(fā)出遇險(xiǎn)信號(hào),岸上指揮中心根據(jù)A船位置以及其周圍船舶的情況指揮救助.若A船恰巧在陸上AIS基站的監(jiān)控盲區(qū),則岸上指揮中心就不能掌握A船的實(shí)時(shí)信息,不利于救助.此時(shí),若A船上配備有本文研究系統(tǒng),則可以通過北斗衛(wèi)星導(dǎo)航系統(tǒng)優(yōu)先轉(zhuǎn)發(fā)本船的AIS信息,同時(shí)也轉(zhuǎn)發(fā)周圍船舶的AIS信息以便岸上指揮中心了解A船位置及其周圍船舶的分布情況,使岸上指揮中心能更好地指揮救助;若A船沒有配備本文研究系統(tǒng),但其周圍有船舶能接受到A船的 AIS信息,并配備有本文研究系統(tǒng),則岸上指揮中心同樣能了解A船的位置和其周圍船舶分布情況.結(jié)果見圖7.
圖7 對(duì)遇險(xiǎn)船舶的救助
當(dāng)基站需要知道A船的位置時(shí),可以通過北斗發(fā)送一條命令,系統(tǒng)接到命令后,在船載AIS終端接收到A船AIS數(shù)據(jù)時(shí),直接在該AIS數(shù)據(jù)后添加priority字段并令其值為MaxPriority,則系統(tǒng)會(huì)優(yōu)先轉(zhuǎn)發(fā)該數(shù)據(jù),從而達(dá)到指定船舶監(jiān)控的功能.
針對(duì)陸上AIS基站存在監(jiān)控盲區(qū)這一缺陷,通過集成北斗衛(wèi)星導(dǎo)航系統(tǒng)和AIS系統(tǒng),在合理利用北斗衛(wèi)星導(dǎo)航系統(tǒng)的短報(bào)文通信前提下,有效增大AIS數(shù)據(jù)采集范圍,使船舶動(dòng)態(tài)監(jiān)控范圍覆蓋陸地AIS基站的監(jiān)控盲區(qū).與傳統(tǒng)船舶動(dòng)態(tài)監(jiān)控技術(shù)相比具有如下特點(diǎn):
(1)船舶動(dòng)態(tài)監(jiān)控范圍擴(kuò)展到陸地AIS基站的監(jiān)控盲區(qū);(2)實(shí)現(xiàn)指定船舶監(jiān)控功能;(3)可以用作海上移動(dòng)AIS中轉(zhuǎn)站,實(shí)現(xiàn)對(duì)處于陸地AIS基站盲區(qū)且未配備北斗系統(tǒng)船舶的監(jiān)控;(4)有效壓縮AIS數(shù)據(jù),降低北斗衛(wèi)星導(dǎo)航系統(tǒng)傳達(dá)相同信息所需轉(zhuǎn)發(fā)的數(shù)據(jù)量.
陸地AIS基站盲區(qū)的船舶AIS數(shù)據(jù)采集也可以通過其他衛(wèi)星系統(tǒng)實(shí)現(xiàn),但通過北斗衛(wèi)星導(dǎo)航系統(tǒng)實(shí)現(xiàn)成本相對(duì)較低.北斗帶寬有限,因此采用一系列措施降低船舶AIS數(shù)據(jù)的傳輸數(shù)據(jù)量.
程序中的時(shí)間間隔tg對(duì)性能影響較大,因此選擇合適的tg很重要,目前在實(shí)踐中主要通過人工選擇來調(diào)節(jié)tg的值.在接下來的工作中,將進(jìn)一步研究如何實(shí)現(xiàn)tg的智能調(diào)節(jié).
[1]黃健偉,陸悅銘,李義斌.AIS時(shí)代VTS面臨的新課題[J].上海海事大學(xué)學(xué)報(bào),2007,28(3):21-23.
[2]部海事局計(jì)基處.船舶遠(yuǎn)程識(shí)別與跟蹤系統(tǒng)[J].中國海事,2010(5):17-18.
[3]王艷軍,王曉峰.AIS和北斗終端組合在船舶動(dòng)態(tài)監(jiān)控中的應(yīng)用[J].上海海事大學(xué)學(xué)報(bào),2011,32(4):17-21.
[4]趙仁余.航海學(xué)[M].北京:人民交通出版社,2008:67-68.
[5]CORMEN TH,LEISERSON CE,RIVEST RL,et al.Introduction to algorithms[M].3 ed.London:The MIT Pr,2009:151-169.
[6]GONZALEZ R C,WOODS R E.Digital image processing[M].Upper Saddle River:Prentice Hall,2002:411-513.
[7]徐成俊,舒毅,柴蓉,等.文本壓縮算法的比較研究[J].甘肅科技,2006,22(12):81-83.
[8]ECKEL B.Thinking in Java[M].4 ed.Upper Saddle River:Prentice Hall,2007:698-701.
[9]高迪駒.基于北斗衛(wèi)星通信系統(tǒng)的船載終端串口通信[J].上海海事大學(xué)學(xué)報(bào),2008,29(4):10-11.