專利名稱:基于ais系統(tǒng)的船舶數(shù)據(jù)表繪制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種航海領(lǐng)域,特別設(shè)計(jì)一種基于AIS系統(tǒng)的船舶數(shù)據(jù)表繪制方法。
背景技術(shù):
AIS 系統(tǒng)(AIS 全稱Automatic Identification System ;中文名稱船舶自動(dòng)識(shí)別系統(tǒng))下船舶數(shù)據(jù)一般以船舶數(shù)據(jù)表的形式顯示在海圖上,用戶通過(guò)海圖即可觀察周圍船舶及其動(dòng)向。所述船舶數(shù)據(jù)包括船舶的國(guó)旗、國(guó)籍、船名、MMSI (中文名稱海上移動(dòng)通信業(yè)務(wù)標(biāo)識(shí))、航速、船舶的經(jīng)度 緯度等。在海圖上顯示船舶基本信息時(shí),船舶數(shù)據(jù)表不經(jīng)處理,直接顯示在海圖(如圖I所示)。海圖在較大比例尺下,如果船舶數(shù)量大,船舶數(shù)據(jù)表相互疊加,在海圖上顯示成一團(tuán),這就導(dǎo)致部分船舶被船舶數(shù)據(jù)表遮擋,無(wú)法準(zhǔn)確獲取船舶基本信息,同時(shí)降低計(jì)算機(jī)硬件系統(tǒng)的響應(yīng)速度。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題,在于提供一種基于AIS系統(tǒng)的船舶數(shù)據(jù)表繪制方法,其在海圖上顯示的船舶數(shù)據(jù)表更清晰,用戶查看更方便,且提升了計(jì)算機(jī)硬件系統(tǒng)的響應(yīng)速度。本發(fā)明是這樣實(shí)現(xiàn)的
基于AIS系統(tǒng)的船舶數(shù)據(jù)表繪制方法,包括如下步驟
步驟I、確定海圖顯示比例尺,然后將顯示屏幕劃分為大小相同的單元格,各單元格均未被標(biāo)記;
步驟2、通過(guò)計(jì)算機(jī)串口接收船舶數(shù)據(jù),判斷接收到的船舶數(shù)據(jù)的AIS語(yǔ)句是否正確,不正確返回,正確則解析船舶數(shù)據(jù),提取船舶數(shù)據(jù)中的MMSI號(hào),判斷該MMSI號(hào)是否存在于AIS數(shù)據(jù)鏈表中,若已存在,則根據(jù)麗SI號(hào)從AIS數(shù)據(jù)鏈表中取出對(duì)應(yīng)的船舶數(shù)據(jù)進(jìn)行比對(duì),若有更新,則將接收到的船舶數(shù)據(jù)更新至所述AIS數(shù)據(jù)鏈表中,若無(wú)更新,則丟棄接收到的船舶數(shù)據(jù),繼續(xù)接收下一條船舶數(shù)據(jù);
若不存在,則將接收到的船舶數(shù)據(jù)記錄至所述AIS數(shù)據(jù)鏈表;所述AIS數(shù)據(jù)鏈表用于記錄各船舶的船舶數(shù)據(jù);
將海圖區(qū)域內(nèi)所有船舶的船舶數(shù)據(jù)都記錄在所述AIS數(shù)據(jù)鏈表后,執(zhí)行步驟3 ;
步驟3、判斷所述AIS數(shù)據(jù)鏈表中所有的船舶數(shù)據(jù)是否都以船舶數(shù)據(jù)表的形式在海圖上繪制完畢,若否執(zhí)行步驟4,若是,則結(jié)束繪制;
步驟4、從所述AIS數(shù)據(jù)鏈表中提取一條船舶數(shù)據(jù),根據(jù)船舶數(shù)據(jù)表的屏幕坐標(biāo)判斷該條船舶數(shù)據(jù)表所需要占用的單元格是否已被標(biāo)記,若已標(biāo)記,則表示單元格已被使用,放棄繪制,執(zhí)行步驟3 ;若未標(biāo)記,則開(kāi)始繪制船舶數(shù)據(jù)表,并對(duì)被使用的單元格進(jìn)行標(biāo)記,繪制完成后執(zhí)彳了步驟3。進(jìn)一步地,所述步驟4具體為從所述AIS數(shù)據(jù)鏈表中提取一條船舶數(shù)據(jù),根據(jù)該船舶數(shù)據(jù)表的屏幕坐標(biāo),若船舶數(shù)據(jù)表左上角的屏幕坐標(biāo)為(top,left),左下角的屏幕坐標(biāo)為(bottom, left),右上角的屏幕坐標(biāo)為(top, right),右下角的屏幕坐標(biāo)為(bottom,right),單元格的高度為height,單元格的寬度為width,則該船舶數(shù)據(jù)表需要占用的左上角的單元格的行、列分別為top/height、left/width ;該船舶數(shù)據(jù)表需要占用的左下角的單元格行、列分別為bottom/height、left/width ;該船舶數(shù)據(jù)表需要占用的右上角的單元格行、列分別為top/height, right/width ;該船舶數(shù)據(jù)表需要占用的右下角的單元格行、列分別為bottom/height、right /width ;根據(jù)該船舶數(shù)據(jù)表四個(gè)頂角所形成的區(qū)域,判斷該區(qū)域內(nèi)的單元格以及四個(gè)頂角所處的單元格是否已被標(biāo)記,若已標(biāo)記,則表示單元格已被使用,放棄繪制,執(zhí)行步驟3 ;若未標(biāo)記,則開(kāi)始繪制船舶數(shù)據(jù)表,并對(duì)被使用的單元格進(jìn)打標(biāo)記,繪制完成后執(zhí)彳了步驟3。進(jìn)一步地,在所述步驟2中,將接收到的船舶數(shù)據(jù)更新至所述AIS數(shù)據(jù)鏈表或?qū)⒔邮盏降拇皵?shù)據(jù)記錄至所述AIS數(shù)據(jù)鏈表的同時(shí),將所述AIS數(shù)據(jù)鏈表和所述MMSI號(hào)的船舶數(shù)據(jù)均設(shè)置更新標(biāo)志,通過(guò)定時(shí)器設(shè)置刷新間隔時(shí)間,周期性地查詢所述AIS數(shù)據(jù)鏈表的更新標(biāo)志,若有更新標(biāo)志,則提取所述AIS數(shù)據(jù)鏈表中設(shè)有更新標(biāo)志的船舶數(shù)據(jù),并在海圖上重新繪制該船舶數(shù)據(jù)的船舶數(shù)據(jù)表。進(jìn)一步地,所述AIS數(shù)據(jù)鏈表中船舶數(shù)據(jù)全部繪制完,修改海圖顯示比例尺,則重新執(zhí)行步驟3和步驟4。進(jìn)一步地,所述顯示屏幕被劃分呈列數(shù)為顯示屏幕寬/單元格寬;行數(shù)為顯示
屏幕高/單元格高。進(jìn)一步地,所述AIS數(shù)據(jù)鏈表存儲(chǔ)在內(nèi)存中。進(jìn)一步地,所述AIS數(shù)據(jù)鏈表通過(guò)AIS數(shù)據(jù)查詢表呈現(xiàn)給用戶。本發(fā)明具有如下優(yōu)點(diǎn)通過(guò)對(duì)顯示屏幕劃分單元格,利用單元格過(guò)濾不必繪制的船舶數(shù)據(jù)表,減少繪制工作量,提高了計(jì)算機(jī)硬件系統(tǒng)的響應(yīng)速度,且海圖顯示更清晰,方便用戶查看,而未被顯示的船舶數(shù)據(jù)表又可通過(guò)AIS數(shù)據(jù)查詢表進(jìn)行查詢。
下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。圖I是現(xiàn)有技術(shù)中顯示船舶數(shù)據(jù)表的海圖。圖2是本發(fā)明更新AIS數(shù)據(jù)鏈表的流程圖。圖3是本發(fā)明AIS數(shù)據(jù)查詢表的示意圖。圖4是本發(fā)明船舶數(shù)據(jù)表的繪制流程圖。圖5是本發(fā)明船舶數(shù)據(jù)表占用單元格的示意圖。
具體實(shí)施例方式基于AIS系統(tǒng)的船舶數(shù)據(jù)表繪制方法,所述繪制方法包括如下步驟
步驟I、確定海圖顯示比例尺,然后將顯示屏幕劃分為大小相同的單元格,各單元格均未被標(biāo)記,即各單元格均未被使用;所述顯示屏幕被劃分呈列數(shù)為顯示屏幕寬/單元格寬;行數(shù)為顯示屏幕高/單元格高;
步驟2、請(qǐng)參閱圖2和圖3,通過(guò)計(jì)算機(jī)串口接收船舶數(shù)據(jù),判斷接收到的船舶數(shù)據(jù)的AIS語(yǔ)句是否正確,不正確返回,正確則解析船舶數(shù)據(jù),提取船舶數(shù)據(jù)中的麗SI號(hào),判斷該麗SI號(hào)是否存在于AIS數(shù)據(jù)鏈表中,
若已存在,則根據(jù)MMSI號(hào)從所述AIS數(shù)據(jù)鏈表中取出對(duì)應(yīng)的船舶數(shù)據(jù)進(jìn)行比對(duì),若有更新,則將接收到的船舶數(shù)據(jù)更新至所述AIS數(shù)據(jù)鏈表中,并將所述AIS數(shù)據(jù)鏈表和所述MMSI號(hào)的船舶數(shù)據(jù)均設(shè)置更新標(biāo)志,若無(wú)更新,則丟棄接收到的船舶數(shù)據(jù),繼續(xù)接收下一條船舶數(shù)據(jù);
若不存在,則將接收到的船舶數(shù)據(jù)記錄至所述AIS數(shù)據(jù)鏈表,并將所述AIS數(shù)據(jù)鏈表和所述MMSI號(hào)的船舶數(shù)據(jù)均設(shè)置更新標(biāo)志;所述AIS數(shù)據(jù)鏈表用于記錄各船舶的船舶數(shù)據(jù);所述船舶數(shù)據(jù)包括船舶的國(guó)旗、國(guó)籍、船名、MMSI (中文名稱海上移動(dòng)通信業(yè)務(wù)標(biāo)識(shí))、航速以及船舶的經(jīng)度緯度等;所述AIS數(shù)據(jù)鏈表存儲(chǔ)在內(nèi)存中,所述AIS數(shù)據(jù)鏈表用于記錄各船舶的船舶數(shù)據(jù)并通過(guò)AIS數(shù)據(jù)查詢表呈現(xiàn)給用戶;
將海圖區(qū)域內(nèi)的所有船舶的船舶數(shù)據(jù)都記錄在所述AIS數(shù)據(jù)鏈表后,執(zhí)行步驟3;
步驟3、請(qǐng)參閱圖4,判斷所述AIS數(shù)據(jù)鏈表中的船舶數(shù)據(jù)是否都以船舶數(shù)據(jù)表的形式在海圖上繪制完畢,若否執(zhí)行步驟4,若是,則結(jié)束繪制;
步驟4、從所述AIS數(shù)據(jù)鏈表中提取一條船舶數(shù)據(jù),根據(jù)船舶數(shù)據(jù)表的屏幕坐標(biāo)判斷該條船舶數(shù)據(jù)表所需要占用的單元格是否已被標(biāo)記,若已標(biāo)記,則表示單元格已被使用,放棄繪制,執(zhí)行步驟3 ;若未標(biāo)記,則開(kāi)始繪制船舶數(shù)據(jù)表,并對(duì)被使用的單元格進(jìn)行標(biāo)記,繪制完成后執(zhí)彳了步驟3 ;
具體地,從所述AIS數(shù)據(jù)鏈表中提取一條船舶數(shù)據(jù),根據(jù)該船舶數(shù)據(jù)表的屏幕坐標(biāo),若船舶數(shù)據(jù)表左上角的屏幕坐標(biāo)為(top,left),左下角的屏幕坐標(biāo)為(bottom,left),右上角的屏幕坐標(biāo)為(top,right),右下角的屏幕坐標(biāo)為(bottom,right),單元格的高度為height,單元格的寬度為width,則該船舶數(shù)據(jù)表需要占用的左上角的單元格的行、列分別為top/height、left/width ;該船舶數(shù)據(jù)表需要占用的左下角的單元格行、列分別為bottom/height、left/width ;該船舶數(shù)據(jù)表需要占用的右上角的單元格行、列分別為top/height, right/width ;該船舶數(shù)據(jù)表需要占用的右下角的單元格行、列分別為bottom/height、right /width ;根據(jù)該船舶數(shù)據(jù)表四個(gè)頂角所形成的區(qū)域,判斷該區(qū)域內(nèi)的單元格以及四個(gè)頂角所處的單元格是否已被標(biāo)記,若已標(biāo)記,則表示單元格已被使用,放棄繪制,執(zhí)行步驟3,因?yàn)槔L制該船舶數(shù)據(jù)表的單元格已被使用,說(shuō)明該位置已繪制有某一船舶的船舶數(shù)據(jù)表,若再次繪制或多次繪制,只會(huì)導(dǎo)致多張船舶數(shù)據(jù)表的信息相互疊加,用戶無(wú)法辨清各船舶數(shù)據(jù)表的具體信息,因此,通過(guò)判斷單元格是否已被使用再?zèng)Q定是否繪制,可以避免海圖上船舶數(shù)據(jù)表的顯示混亂以及計(jì)算機(jī)硬件系統(tǒng)響應(yīng)遲鈍;我們將被放棄繪制的船舶數(shù)據(jù)表稱之為不必繪制的船舶數(shù)據(jù)表;若未標(biāo)記,則開(kāi)始繪制船舶數(shù)據(jù)表,并對(duì)被使用的單元格進(jìn)行標(biāo)記,繪制完成后執(zhí)行步驟3。本實(shí)施例中,船舶數(shù)據(jù)表的屏幕坐標(biāo)是通過(guò)以下步驟獲得的
設(shè)置船舶數(shù)據(jù)表顯示在船位右側(cè);
設(shè)船位坐標(biāo)為x,y (通過(guò)船舶的經(jīng)度緯度換算成顯示屏幕上的船位坐標(biāo))
設(shè)船位圖標(biāo)的寬為ship_width,船位圖標(biāo)和數(shù)據(jù)表的間隔為data_padding 設(shè)船舶數(shù)據(jù)表的寬,高為data_width,data_height
則船舶數(shù)據(jù)表最左邊的坐標(biāo)為left = x + ship_width/2 + data_padding -data_width / 2船舶數(shù)據(jù)表最右邊的坐標(biāo)為right = left + data_width 船舶數(shù)據(jù)表最上邊的坐標(biāo)為top = y + data_height / 2 船舶數(shù)據(jù)表最下邊的坐標(biāo)為bottom = top + data_height。本發(fā)明還可通過(guò)定時(shí)器設(shè)置刷新間隔時(shí)間,周期性地查詢所述AIS數(shù)據(jù)鏈表的更新標(biāo)志,若有更新標(biāo)志,則提取所述AIS數(shù)據(jù)鏈表中設(shè)有更新標(biāo)志的船舶數(shù)據(jù)表,并在海圖上重新繪制該船舶數(shù)據(jù)表。所述AIS數(shù)據(jù)鏈表中船舶數(shù)據(jù)表全部繪制完,修改海圖顯示比例尺,則重新執(zhí)行步驟3和步驟4,重新繪制船舶數(shù)據(jù)表。在本實(shí)施例中,取單元格的高和寬分別船舶數(shù)據(jù)包的高和寬的1/4,則判斷每條船舶數(shù)據(jù)表需要占用的單元格I不會(huì)超過(guò)25個(gè),如圖5所示。因此相對(duì)繪制來(lái)說(shuō),所需要的CPU指令數(shù)可忽略,因此可降低CPU資源占用率,提高系統(tǒng)響應(yīng)速度。船舶數(shù)據(jù)表的大小,可通過(guò)系統(tǒng)設(shè)置的數(shù)據(jù)顯示開(kāi)關(guān)進(jìn)行控制,縮放海圖不影響船舶數(shù)據(jù)表的大小,也就不影響單元格大小。本發(fā)明通過(guò)對(duì)顯示屏幕劃分單元格,利用單元格過(guò)濾不必繪制的船舶數(shù)據(jù)表,減少繪制工作量,提高了計(jì)算機(jī)硬件系統(tǒng)的響應(yīng)速度,且海圖顯示更清晰,方便用戶查看,而未被顯示的船舶數(shù)據(jù)表又可通過(guò)AIS數(shù)據(jù)查詢表進(jìn)行查詢。雖然以上描述了本發(fā)明的具體實(shí)施方式
,但是熟悉本技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,我們所描述的具體的實(shí)施例只是說(shuō)明性的,而不是用于對(duì)本發(fā)明的范圍的限定,熟悉本領(lǐng)域的技術(shù)人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應(yīng)當(dāng)涵蓋在本發(fā)明的權(quán)利要求所保護(hù)的范圍內(nèi)。
權(quán)利要求
1.基于AIS系統(tǒng)的船舶數(shù)據(jù)表繪制方法,其特征在于,包括如下步驟 步驟I、確定海圖顯示比例尺,然后將顯示屏幕劃分為大小相同的單元格,各單元格均未被標(biāo)記; 步驟2、通過(guò)計(jì)算機(jī)串口接收船舶數(shù)據(jù),判斷接收到的船舶數(shù)據(jù)的AIS語(yǔ)句是否正確,不正確返回,正確則解析船舶數(shù)據(jù),提取船舶數(shù)據(jù)中的MMSI號(hào),判斷該麗SI號(hào)是否存在于AIS數(shù)據(jù)鏈表中, 若已存在,則根據(jù)MMSI號(hào)從AIS數(shù)據(jù)鏈表中取出對(duì)應(yīng)的船舶數(shù)據(jù)進(jìn)行比對(duì),若有更新,則將接收到的船舶數(shù)據(jù)更新至所述AIS數(shù)據(jù)鏈表中,若無(wú)更新,則丟棄接收到的船舶數(shù)據(jù),繼續(xù)接收下一條船舶數(shù)據(jù); 若不存在,則將接收到的船舶數(shù)據(jù)記錄至所述AIS數(shù)據(jù)鏈表;所述AIS數(shù)據(jù)鏈表用于記錄各船舶的船舶數(shù)據(jù); 將海圖區(qū)域內(nèi)所有船舶的船舶數(shù)據(jù)都記錄在所述AIS數(shù)據(jù)鏈表后,執(zhí)行步驟3 ; 步驟3、判斷所述AIS數(shù)據(jù)鏈表中所有的船舶數(shù)據(jù)是否都以船舶數(shù)據(jù)表的形式在海圖上繪制完畢,若否執(zhí)行步驟4,若是,則結(jié)束繪制; 步驟4、從所述AIS數(shù)據(jù)鏈表中提取一條船舶數(shù)據(jù),根據(jù)船舶數(shù)據(jù)表中的屏幕坐標(biāo)判斷該條船舶數(shù)據(jù)表所需要占用的單元格是否已被標(biāo)記,若已標(biāo)記,則表示單元格已被使用,放棄繪制,執(zhí)行步驟3 ;若未標(biāo)記,則開(kāi)始繪制船舶數(shù)據(jù)表,并對(duì)被使用的單元格進(jìn)行標(biāo)記,繪制完成后執(zhí)彳了步驟3。
2.根據(jù)權(quán)利要求I所述的基于AIS系統(tǒng)的船舶數(shù)據(jù)表繪制方法,其特征在于所述步驟4具體為從所述AIS數(shù)據(jù)鏈表中提取一條船舶數(shù)據(jù),根據(jù)該船舶數(shù)據(jù)表的屏幕坐標(biāo),若船舶數(shù)據(jù)表左上角的屏幕坐標(biāo)為(top,left),左下角的屏幕坐標(biāo)為(bottom,left),右上角的屏幕坐標(biāo)為(top,right),右下角的屏幕坐標(biāo)為(bottom,right),單元格的高度為height,單元格的寬度為width,則該船舶數(shù)據(jù)表需要占用的左上角的單元格的行、列分別為top/height、left/width ;該船舶數(shù)據(jù)表需要占用的左下角的單元格行、列分別為bottom/height、left/width ;該船舶數(shù)據(jù)表需要占用的右上角的單元格行、列分別為top/height, right/width ;該船舶數(shù)據(jù)表需要占用的右下角的單元格行、列分別為bottom/height、right /width ;根據(jù)該船舶數(shù)據(jù)表四個(gè)頂角所形成的區(qū)域,判斷該區(qū)域內(nèi)的單元格以及四個(gè)頂角所處的單元格是否已被標(biāo)記,若已標(biāo)記,則表示單元格已被使用,放棄繪制,執(zhí)行步驟3 ;若未標(biāo)記,則開(kāi)始繪制船舶數(shù)據(jù)表,并對(duì)被使用的單元格進(jìn)行標(biāo)記,繪制完成后執(zhí)行步驟3。
3.根據(jù)權(quán)利要求I所述的基于AIS系統(tǒng)的船舶數(shù)據(jù)表繪制方法,其特征在于在所述步驟2中,將接收到的船舶數(shù)據(jù)更新至所述AIS數(shù)據(jù)鏈表或?qū)⒔邮盏降拇皵?shù)據(jù)記錄至所述AIS數(shù)據(jù)鏈表的同時(shí),將所述AIS數(shù)據(jù)鏈表和所述MMSI號(hào)的船舶數(shù)據(jù)均設(shè)置更新標(biāo)志,通過(guò)定時(shí)器設(shè)置刷新間隔時(shí)間,周期性地查詢所述AIS數(shù)據(jù)鏈表的更新標(biāo)志,若有更新標(biāo)志,則提取所述AIS數(shù)據(jù)鏈表中設(shè)有更新標(biāo)志的船舶數(shù)據(jù),并在海圖上重新繪制該船舶數(shù)據(jù)的船舶數(shù)據(jù)表。
4.根據(jù)權(quán)利要求I所述的基于AIS系統(tǒng)的船舶數(shù)據(jù)表繪制方法,其特征在于所述AIS數(shù)據(jù)鏈表中船舶數(shù)據(jù)表全部繪制完,修改海圖顯示比例尺,則重新執(zhí)行步驟3和步驟4。
5.根據(jù)權(quán)利要求I所述的基于AIS系統(tǒng)的船舶數(shù)據(jù)表繪制方法,其特征在于所述顯示屏幕被劃分呈列數(shù)為顯示屏幕寬/單元格寬;行數(shù)為顯示屏幕高/單元格高。
6.根據(jù)權(quán)利要求I所述的基于AIS系統(tǒng)的船舶數(shù)據(jù)表繪制方法,其特征在于所述步驟2中的AIS數(shù)據(jù)鏈表存儲(chǔ)在內(nèi)存中。
7.根據(jù)權(quán)利要求I所述的基于AIS系統(tǒng)的船舶數(shù)據(jù)表繪制方法,其特征在于所述AIS數(shù)據(jù)鏈表通過(guò)AIS數(shù)據(jù)查詢表呈現(xiàn)給用戶。
全文摘要
本發(fā)明提供一種基于AIS系統(tǒng)的船舶數(shù)據(jù)表繪制方法,首先將顯示屏幕劃分為大小相同的單元格,其次將接收到的船舶數(shù)據(jù)表記錄在AIS數(shù)據(jù)鏈表中,然后提取船舶數(shù)據(jù)表進(jìn)行繪制,若船舶數(shù)據(jù)表所需要占用的單元格已經(jīng)被標(biāo)記,則放棄繪制,若船舶數(shù)據(jù)表所需要占用的單元格未被標(biāo)記,則在海圖上進(jìn)行繪制。本發(fā)明通過(guò)對(duì)顯示屏幕劃分單元格,利用單元格過(guò)濾不必繪制的船舶數(shù)據(jù)表,減少繪制工作量,提高了計(jì)算機(jī)硬件系統(tǒng)的響應(yīng)速度,且海圖顯示更清晰,方便用戶查看,而未被顯示的船舶數(shù)據(jù)表又可通過(guò)AIS數(shù)據(jù)查詢表進(jìn)行查詢或通過(guò)選中船舶、縮放海圖查詢。
文檔編號(hào)G06F17/30GK102855308SQ20121029979
公開(kāi)日2013年1月2日 申請(qǐng)日期2012年8月22日 優(yōu)先權(quán)日2012年8月22日
發(fā)明者王維 申請(qǐng)人:廈門新諾科技有限公司