• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      S-57電子海圖的快速讀取及可視化存儲

      2014-07-31 20:20:48陳彥勇王志強(qiáng)
      艦船科學(xué)技術(shù) 2014年7期
      關(guān)鍵詞:海圖字段指針

      劉 鋒,張 嚴(yán),陳彥勇,王志強(qiáng)

      (中國船舶重工集團(tuán)公司 第七○五研究所昆明分部,云南 昆明 650118)

      S-57電子海圖的快速讀取及可視化存儲

      劉 鋒,張 嚴(yán),陳彥勇,王志強(qiáng)

      (中國船舶重工集團(tuán)公司 第七○五研究所昆明分部,云南 昆明 650118)

      越來越流行的電子海圖將逐漸取代紙質(zhì)海圖,被應(yīng)用于水下航行器等更為特殊的領(lǐng)域。國際標(biāo)準(zhǔn)S-57格式的電子海圖是由IHO(國際水道測量組織)官方定義,按照IS08211數(shù)據(jù)結(jié)構(gòu)緊密封裝的矢量電子海圖格式。由于采用特有的封裝結(jié)構(gòu),在將電子海圖應(yīng)用于專用領(lǐng)域之前,必須采用相關(guān)算法進(jìn)行數(shù)據(jù)解包。本文在VC編程環(huán)境下利用C++語言實(shí)現(xiàn)對電子海圖原始數(shù)據(jù)文件的快速解包,同時(shí)進(jìn)行快速存儲,使得S-57原始數(shù)據(jù)可視化。這也是電子海圖在水下航行器上應(yīng)用的前提和基礎(chǔ)。

      S-57;電子海圖;矢量數(shù)據(jù);讀??;可視化;存儲

      0 引 言

      電子海圖以海域要素為主,其內(nèi)容相當(dāng)豐富,可詳細(xì)表示海底地形(水深)、航行障礙物、助航標(biāo)志、港口設(shè)施、潮流、海流等要素,甚至連磁力異常區(qū)域、燈塔、浮標(biāo)都被包含在內(nèi)。隨著導(dǎo)航計(jì)算機(jī)的使用,電子海圖已經(jīng)逐漸取代紙質(zhì)海圖,作為艦船航行的導(dǎo)航工具[1]。尤其是水下航行器的遠(yuǎn)程精確導(dǎo)航,將完全依賴于信息豐富的電子海圖,應(yīng)用系統(tǒng)將向著航線自主規(guī)劃、跟蹤動(dòng)態(tài)目標(biāo)制定航行計(jì)劃等智能化方向發(fā)展。雖然S-57矢量電子海圖具有信息豐富、可無限放大及存儲占用空間小等優(yōu)點(diǎn)[1],可被使用于水面艦船或者水下航行器中,但其封裝結(jié)構(gòu)是一種高壓縮的數(shù)據(jù)交換格式,是用戶不可見的.000數(shù)據(jù)格式,且數(shù)據(jù)結(jié)構(gòu)較為復(fù)雜。要將電子海圖應(yīng)用到水下航行器等特殊領(lǐng)域,前提是要能實(shí)時(shí)對其快速解包。

      1 電子海圖分類

      電子海圖主要分為兩大類:柵格式電子海圖和矢量電子海圖。由于矢量格式電子海圖具有存儲占用內(nèi)存空間小、加載速度快等特點(diǎn),更容易實(shí)現(xiàn)各種智能化功能,本文選用國際標(biāo)準(zhǔn)S-57電子海圖數(shù)據(jù)文件作為數(shù)據(jù)提取識別對象,分類及特點(diǎn)如圖1所示。

      圖1 電子海圖分類Fig.1 Classification of electronic chart

      2 電子海圖封裝結(jié)構(gòu)及數(shù)據(jù)模型

      為方便、快捷地進(jìn)行數(shù)據(jù)文件交換,S-57標(biāo)準(zhǔn)對現(xiàn)實(shí)世界的各類水文實(shí)體進(jìn)行模型歸納抽象,定義適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)(抽象模型的數(shù)學(xué)實(shí)例化)及文件的物理封裝。S-57格式的電子海圖原始數(shù)據(jù)按照ISO/ICE 8211進(jìn)行數(shù)據(jù)封裝,它是一種能夠在不同類型計(jì)算機(jī)之間進(jìn)行數(shù)據(jù)交換的交換格式。該結(jié)構(gòu)可基于文件機(jī)制從一種計(jì)算機(jī)體系向另一種計(jì)算機(jī)體系傳遞信息,提供獨(dú)立于機(jī)器構(gòu)造的格式[2]。

      ISO8211文件是以邏輯記錄 (Logical Record,LR)為基本單元組成。其第1個(gè)記錄叫做數(shù)據(jù)描述記錄(Data Descriptive Record,DDR)[3],其中主要包含海圖的邏輯結(jié)構(gòu)和具體數(shù)據(jù)描述,用于解析文件。其他邏輯記錄叫做數(shù)據(jù)記錄(Data Record,DR),存儲的是實(shí)際的海圖數(shù)據(jù)值。ISO8211封裝結(jié)構(gòu)如圖2所示。每個(gè)邏輯記錄由頭標(biāo)區(qū)、目錄區(qū)、字段組成。海圖數(shù)據(jù)解包就是要將海圖中各個(gè)邏輯記錄的三大類基本信息都讀取出來。

      圖2 海圖封裝結(jié)構(gòu)Fig.2 The encapsulation structure of electronic chart

      S-57采用鏈-節(jié)點(diǎn)的數(shù)據(jù)拓?fù)浣Y(jié)構(gòu),現(xiàn)實(shí)世界被抽象為特征物標(biāo)和空間物標(biāo)兩大類。特征物標(biāo)用來描述事物的特征屬性,空間物標(biāo)則描述其空間屬性。特征物標(biāo)僅包含事物的特征屬性,并不包括任何幾何形狀和坐標(biāo)位置信息。特征物標(biāo)又分為元物標(biāo)、集合物標(biāo)、地理物標(biāo)和制圖物標(biāo)[4]四大類。

      空間物標(biāo)可以包含位置信息,必包含幾何形狀,分為點(diǎn)、邊、面3種。S-57標(biāo)準(zhǔn)數(shù)學(xué)抽象模型如圖3所示[5]。

      圖3 標(biāo)準(zhǔn)電子海圖模型Fig.3 The standard model of electronic chart

      S-57制定了電子海圖數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),也就是在計(jì)算機(jī)內(nèi)存儲的物理結(jié)構(gòu)。海圖數(shù)據(jù)記錄的形成意味著從邏輯結(jié)構(gòu)向物理結(jié)構(gòu)的成功轉(zhuǎn)換。數(shù)據(jù)包含特征記錄、數(shù)據(jù)集描述記錄、目錄記錄、數(shù)據(jù)字典記錄、和空間記錄等5類記錄。其中數(shù)據(jù)字典記錄較少使用。

      S-57海圖將沿海、港口及大洋等現(xiàn)實(shí)世界逐步抽象,構(gòu)成物理交換格式,其抽象過程如圖4所示。各抽象層之間的關(guān)系如圖5所示。

      根據(jù)其表示真實(shí)世界的模型及其交換數(shù)據(jù)的封裝標(biāo)準(zhǔn),對原始數(shù)據(jù)一層層地進(jìn)行解包,實(shí)質(zhì)上就是數(shù)據(jù)模型抽象的逆過程。

      圖4 模型抽象過程Fig.4 Process of model abstract

      圖5 各抽象層之間的關(guān)系Fig.5 The relationship among the abstraction layers

      3 電子海圖解包

      S-57電子海圖解包就是按照其封裝標(biāo)準(zhǔn)將矢量海圖數(shù)據(jù)各字段和子字段逐一讀取出來。針對適用于水下航行器的數(shù)據(jù),主要讀取的字段包括:特征物標(biāo)標(biāo)識字段(FOID)、特征記錄標(biāo)識字段(FRID)、特征記錄到物標(biāo)指針字段(FFPT)、特征記錄到空間記錄指針字段FSPT(包含NAME指針)、矢量記錄參數(shù)字段(VRID)、矢量一記錄指針字段(VRPT)、二維坐標(biāo)字段SG2D(包含所有點(diǎn)的經(jīng)緯度坐標(biāo))及三維坐標(biāo)字段SG3D(包含水深點(diǎn)經(jīng)緯坐標(biāo)及水深值)。

      本文利用處理ISO8211lib開源庫中包含五個(gè)類,實(shí)現(xiàn)快速解讀格式為.000的S-57原始電子海圖數(shù)據(jù)。

      數(shù)據(jù)描述模型類(Data description field,DDFModule )是ISO8211lib其中最主要的一類,用于從.000文件中以記錄為單位讀取記錄信息,包含全部從DDR讀取的信息。在開始讀取S-57文件之前,首先必須建立一個(gè)數(shù)據(jù)描述模型類對象,然后調(diào)用Open()函數(shù),若調(diào)用成功,所有的字段和子字段就可以被使用[6]。

      數(shù)據(jù)描述模型類的成員函數(shù)ReadRecord():只是1次讀1個(gè)記錄,下次讀取的時(shí)候需要重寫。整個(gè)讀取過程都以記錄為單位,每次讀取1個(gè)記錄,再讀取記錄里包含的字段及子字段,依次層層往下讀取。當(dāng)1個(gè)記錄讀取完成后,又需要獲得新的記錄指針值,用于讀取下1個(gè)記錄。

      數(shù)據(jù)描述記錄類(DDFRecord類):包含從DR讀取的實(shí)例化數(shù)據(jù),其中包含1個(gè)記錄里所有的DDFField字段數(shù)據(jù)。通過該類成員函數(shù)Getfield(i)函數(shù),得到1個(gè)按照索引地址把值傳遞給指向數(shù)據(jù)描述字段類的指針,傳遞1次,i值減加1,當(dāng)i的值等位于0和GetFieldCount()-1之間,循環(huán)結(jié)束時(shí),即完成本記錄的全部掃描[7]。

      數(shù)據(jù)描述字段類(DDFField類):從數(shù)據(jù)描述記錄類的GetFieldDefn()函數(shù)得到的1個(gè)實(shí)例化的指向數(shù)據(jù)描述子字段類的Field指針。利用該類的成員函數(shù)GetRepeatCount()可得到所需要讀取字段的重復(fù)個(gè)數(shù),利用該重復(fù)個(gè)數(shù),可以控制讀取重復(fù)字段時(shí)循環(huán)次數(shù)。

      數(shù)據(jù)描述子字段類(DDFFieldDefn類):通常作為提取子字段數(shù)據(jù)類的容器。該類成員函數(shù)GetName()用于讀取所讀當(dāng)前字段的名稱。GetSu-bfieldCount()成員函數(shù)可返回讀取字段的子字段個(gè)數(shù),以控制讀取子字段的循環(huán)次數(shù)。

      提取子字段數(shù)據(jù)類(DDFSubFieldDefn類):是提取海圖數(shù)據(jù)最里層的1個(gè)類,用于提取具體的1個(gè)子字段的信息。 成員函數(shù)GetType()用來獲取子字段的數(shù)據(jù)類型,從而對應(yīng)調(diào)用讀取整形數(shù)據(jù)、浮點(diǎn)型數(shù)據(jù)或者字符串型數(shù)據(jù)的成員函數(shù)。

      根據(jù)海圖的封裝結(jié)構(gòu),利用上述5個(gè)開源類,逐個(gè)實(shí)現(xiàn)類的實(shí)例化,從而層層讀取S-57電子海圖文件的全部數(shù)據(jù)。類調(diào)用的先后順序如圖6所示,讀取數(shù)據(jù)流程圖如圖7和圖8所示。讀取的原則遵循層層剝開,最終到達(dá)子字段內(nèi)容,讀1條存1條,讀完1條迅速釋放內(nèi)存,再建立類對象,讀取下1條記錄,該方式不占用內(nèi)存資源且CPU開銷較小[8]。

      圖6 類的先后調(diào)用順序Fig.6 The calling order of the classes

      讀取過程如下:

      1)打開S-57格式電子海圖.000文件,創(chuàng)建1個(gè)數(shù)據(jù)描述模型類對象Module,然后調(diào)用Open()函數(shù),如果調(diào)用成功,進(jìn)行下一步;

      2)創(chuàng)建1個(gè)數(shù)據(jù)描述記錄類指針*pointRecord,調(diào)用Module.ReadRecord(),將返回值傳給類指針*pointRecord;

      3)調(diào)用pointRecord->GetField()函數(shù),將返回值傳給數(shù)據(jù)描述字段類指針*pointField,進(jìn)行實(shí)例化;

      4)調(diào)用pointField->GetFieldDefn(),返回值傳給數(shù)據(jù)描述子字段類實(shí)例化*pointFieldDefn指針;

      5)通過調(diào)用pointFieldDefn->GetName()和pointFieldDefn->GetDescritpion()兩個(gè)函數(shù),讀取字段的名稱和數(shù)據(jù);

      6)調(diào)用pointField->GetSubfield(),將返回值傳給提取子字段數(shù)據(jù)類實(shí)例化*poSFDefn指針,進(jìn)行實(shí)例化;

      7)調(diào)用poSFDefn->ExtraetData(),讀取poSFDefn的數(shù)據(jù)。

      讀取流程如圖7和圖8所示。

      圖7 電子海圖數(shù)據(jù)讀取流程1Fig.7 Reading data flow chart of electronic chart 1

      圖8 電子海圖數(shù)據(jù)讀取流程2Fig.8 Reading data flow chart of electronic chart 2

      4 數(shù)據(jù)可視化存儲及試驗(yàn)

      在Visual Stdio2008環(huán)境下,建立1個(gè)MFC單文檔工程,并添加1個(gè)刪除數(shù)據(jù)按鈕。利用MFC的工具欄打開按鍵,編程實(shí)現(xiàn)打開.000標(biāo)準(zhǔn)電子海圖文件。并在view界面中添加刪除數(shù)據(jù)按鈕,用于刪除解包后的電子海圖文件。

      所有的函數(shù)調(diào)用及類的調(diào)用實(shí)現(xiàn)程序都編寫在doc.cpp文件中。按照解包算法讀取文件。海圖數(shù)據(jù)快速解包后,為方便后續(xù)的電子海圖數(shù)據(jù)的研究運(yùn)用及其開發(fā),需要將數(shù)據(jù)可視化的存儲。就是基本按照其封裝架構(gòu)不動(dòng),將讀取出來的數(shù)據(jù)以記錄為單位,讀1條存1條。讀出的文件全部存儲于CString類型的變量中,并且進(jìn)行格式化后,依次存儲于txt文件中。

      在實(shí)現(xiàn)電子海圖數(shù)據(jù)可視化之后,可以方便地查看各字段數(shù)據(jù),為電子海圖更為專用的設(shè)計(jì)應(yīng)用提供可查可驗(yàn)證的數(shù)據(jù)。

      經(jīng)驗(yàn)證,S-57電子海圖文件USSMD12M.000已經(jīng)被讀取并存儲。讀取后存儲的DSID字段及DSSI字段如圖9所示。矢量記錄SG2D字段如圖10所示。并且每個(gè)字段后面都讀出了字段描述信息,從而實(shí)現(xiàn)每個(gè)子字段信息都成功讀出并存儲。

      圖9 DSID及 DSSI字段可視化結(jié)果Fig.9 Visualization of DSID and DSSI fields

      圖10 矢量記錄字段Fig.10 Vector record fields

      5 結(jié) 語

      電子海圖包含了豐富的海洋信息,使用這些信息的前提是能夠正確快速地讀取海圖數(shù)據(jù)。過去電子海圖主要用于水面船只人工航行規(guī)劃,所用信息不多。而本文將S-57標(biāo)準(zhǔn)電子海圖進(jìn)行快速讀取并以記錄為單位存儲下來,為今后進(jìn)行將電子海圖應(yīng)用于水下航行器提供了基礎(chǔ)。根據(jù)電子海圖的一些特殊應(yīng)用背景,利用讀取的海圖數(shù)據(jù)可以進(jìn)行海圖要素裁剪及存儲結(jié)構(gòu)的優(yōu)化,可構(gòu)建面向水下航行器專用的數(shù)據(jù)模型。根據(jù)海圖原始數(shù)據(jù)模型存儲海圖矢量數(shù)據(jù),層層讀取并存儲各字段數(shù)據(jù),既不影響海圖數(shù)據(jù)的原有結(jié)構(gòu),又不丟失海圖的原有信息,是海圖矢量數(shù)據(jù)應(yīng)用的關(guān)鍵和前提。在實(shí)現(xiàn)完全讀取電子海圖數(shù)據(jù)后,能夠?yàn)樗潞叫衅鞯暮铰芬?guī)劃提供輸入。

      [1] 襲樂宣.電子海圖顯示與信息系統(tǒng)的發(fā)展與應(yīng)用研究[J].導(dǎo)航,2006(4):112-115.

      XI Le-xuan.Development summarization and application research of electronic chart display and information system[J].Daohang,2006(4):112-115.

      [2] 董才華,秦臻.電子海圖數(shù)據(jù)讀取與顯示技術(shù)[J].中國航海,2012,35(4):22-23.

      DONG Cai-hua,QIN Zhen.Retrieval and display technologies of electronic chart data[J].Navigation of China,2012,35(4):22-23.

      [3] 李宏利.電子海圖技術(shù)國際標(biāo)準(zhǔn)研究[M],北京:海潮出版社,2005:1-175.

      [4] ALEXANDER L.Marine information objects (MIOs) and ECDIS:concept and practice[C].U.S.Hydrographic Conference,2003:24-27.

      [5] S-57 Edition 3.1,IHO Transfer standard for digital hydrographic data[S].International Hydrographic Organ-ization[S].

      [6] 唐葆祥,劉東峰.S-57電子海圖數(shù)據(jù)讀取和自動(dòng)多模式分層顯示[J].微計(jì)算機(jī)信息,2012,28(2):105-106.

      TANG Bao-xiang,LIU Dong-feng.Reading of S-57 format and automation muti-mode hierae-chical display of electronic chart[J].Control and Automation Publication Group,2012,28(2):105-106.

      [7] 唐葆祥.S-57格式電子海圖數(shù)據(jù)讀取以及分層顯示[D].廣州:廣東工業(yè)大學(xué),2011.

      TANG Bao-xiang.Reading of S-57 format and multi-mode hierarchical display of electronic chart[D].Guangzhou:Guangdong University of Technology,2011.

      [8] 劉廠,郝燕玲,高峰,等.國際標(biāo)準(zhǔn)電子海圖系統(tǒng)關(guān)鍵技術(shù)研究[J].中國航海,2011,34(2):24-27.

      LIU Chang,HAO Yan-ling,GAO Feng,et al.Research of key technologies for ECDIS of international standard[J].Navigation of China,2011,34(2):24-27.

      Rapid reading and visual storage of the S-57 electronic chart

      LIU Feng, ZHANG Yan, CHEN Yan-yong, WANG Zhi-qiang

      (Kunming Branch of the 705 Research Institute of CSIC,Kunming 650118,China)

      The electronic chart is gradually replacing paper chart, which has an important role in navigation. Electronic chart will be used in more special fields such as UUV (unmanned underwater vehicle). International standard format of electronic chart S-57 is the IHO (International Hydrographic Organization) defined with a tightly wrapped vector electronic format, witch is according to the ISO8211.Due to the special encapsulation structure, before using of electronic chart data on special areas, and proper algorithms must be used to unpack the data. Under the environment of VC, we unpack the original electronic chart data and storage it quickly,using the C++ language. Then the S-57 electronic chart primitive data can be visual. This is also the application premise and foundation when we use of the electronic chart on underwater vehicle.

      S-57;electronic chart;vector data;read;visualization;storage

      2013-09-29;

      2013-11-08

      國防科技預(yù)先研究基金資助項(xiàng)目(4010605010102)

      劉鋒(1985-),男,碩士研究生,助理工程師,研究方向?yàn)樗聸Q策技術(shù)及電子海圖應(yīng)用技術(shù)。

      TP317.4;U666.11

      A

      1672-7649(2014)07-00108-05

      10.3404/j.issn.1672-7649.2014.07.023

      猜你喜歡
      海圖字段指針
      圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
      紙海圖AI小改正制作模式探討
      航海(2020年4期)2020-08-17 16:13:40
      偷指針的人
      少林功夫拳(三)
      少林與太極(2018年9期)2018-09-28 08:37:34
      為什么表的指針都按照順時(shí)針方向轉(zhuǎn)動(dòng)
      點(diǎn)亮兵書——《籌海圖編》《海防圖論》
      孫子研究(2016年4期)2016-10-20 02:38:06
      電子海圖在內(nèi)河船舶綜合導(dǎo)航系統(tǒng)中的應(yīng)用探討
      基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識別
      電測與儀表(2015年5期)2015-04-09 11:30:42
      CNMARC304字段和314字段責(zé)任附注方式解析
      無正題名文獻(xiàn)著錄方法評述
      晴隆县| 应用必备| 婺源县| 申扎县| 海门市| 达州市| 灵宝市| 桑日县| 丰台区| 金昌市| 宿州市| 玉山县| 辽源市| 彰武县| 肇源县| 滨海县| 安庆市| 盱眙县| 东丽区| 清水河县| 永泰县| 东山县| 呈贡县| 东方市| 三河市| 且末县| 开封市| 东源县| 三亚市| 临汾市| 闽侯县| 德安县| 尼玛县| 垣曲县| 鲁甸县| 合江县| 许昌县| 湄潭县| 皋兰县| 莆田市| 厦门市|