張靜雙
(天津機電職業(yè)技術(shù)學(xué)院 機械系,天津300131)
電子海圖是一個籠統(tǒng)的概念,大致可以分成兩個部分,一部分是電子海圖數(shù)據(jù),另一部是在電子海圖的基礎(chǔ)上開發(fā)的各種應(yīng)用,簡單來說電子海圖就是特制的電子海圖數(shù)據(jù),復(fù)雜來說,電子海圖這個概念是包含各種與電子海圖相關(guān)聯(lián)的設(shè)備軟件或者硬件技術(shù)的一個總稱,并且包含了電子海圖數(shù)據(jù)。電子海圖的出現(xiàn)和完善對提高船舶航行安全、減輕船舶工作量的作用也越來越明顯。
電子海圖是指描寫海域地理信息和航海圖的數(shù)字化產(chǎn)品,是數(shù)字海圖的一種,通過將紙質(zhì)海圖信息經(jīng)過數(shù)字化處理后,形成一個電子海圖數(shù)據(jù)庫。具有攜帶方便、容易保存的優(yōu)點,其主要內(nèi)容是以海域要素為主,詳細的表示河道或者海底的地形,航道上的障礙物,燈塔導(dǎo)航標志等要素。電子海圖一般是由國家官方權(quán)威海道測量機構(gòu)提供,這些機構(gòu)同時還負責(zé)電子海圖的更新與修正,以保證電子海圖的準確性及時性。
本文中所涉及到的電子海圖是與AutoCAD格式相兼容的DXF文件,通過特定的程序,讀寫電子海圖的DXF文件,通過將文件中的有用信息在PC系統(tǒng)的主界面中實時顯示,同時與配合GPS系統(tǒng)配合使用,從而實時顯示船體在運動過程中的實際位置,為船舶的航線航行提供準確的參考信息。
DXF是美國Autodesk公司制定并首先用于AutoCAD的圖形交換的文件格式,它是一種基于矢量的ASCII格式,文件的擴展名為“.DXF”,用于外部程序和圖形系統(tǒng)或不同的圖形系統(tǒng)之間交換圖形信息。由于它結(jié)構(gòu)簡單、可讀性好,易于被其他程序處理,因此已是事實上的工業(yè)標準。DXF是一種開放的矢量數(shù)據(jù)格式,可以分為兩類:ASCII格式和二進制格式;ASCII具有可讀性好,但占有空間較大;二進制格式占有空間小、讀取速度快。目前,絕大多數(shù)CAD系統(tǒng)都能讀入或輸出DXF文件
DXF文件雖然看上去結(jié)構(gòu)復(fù)雜,但由于其數(shù)據(jù)具有嚴格的存儲格式,各種實體都以編碼標出,因此可以較容易的讀懂它,而且還可以提取所需的所有信息。在用高級語言編寫接口程序時,由于DXF文件有較嚴格的規(guī)定,所以必須清楚的了解DXF文件的結(jié)構(gòu)。
一個完整的DXF文件主要由四個段和一個文件結(jié)尾組成。它們是:標題(HEADER)段、表(TABLES)段、塊(BLOCKS)段、實體(ENTITIES)段、結(jié)尾(EOF)段。DXF文件的每一個段由若干個組構(gòu)成,每個組占兩行,第一行為組的代碼,第二行為組值。組代碼相當(dāng)于數(shù)據(jù)類型的代碼,它由CAD圖形系統(tǒng)所規(guī)定,而組值為具體的數(shù)值,二者結(jié)合起來表示一個數(shù)據(jù)的含義和值。DXF文件各段主要內(nèi)容如下:
(1)標題(HEADER)段 該段記錄了AutoCAD系統(tǒng)所有標題變量的當(dāng)前值或當(dāng)前狀態(tài)。這些標題變量記錄了AutoCAD系統(tǒng)當(dāng)前工作環(huán)境。例如,Auto-CAD的版本號、插入基點、柵格間距、式樣、當(dāng)前圖層名、當(dāng)前線型、當(dāng)前額色等。
(2)類(CLASSES)段 保存應(yīng)用程序定義的類的信息。
(3)表(TABLES)段 表段包含了四種表,每個表又包含了可變數(shù)目的表項。按照這些表在文件中出現(xiàn)的順序是線型(LTYPE)表、圖層(LAYER)表、字樣(STYLE)表、視圖(VIEW)表。這些表記錄了當(dāng)前圖形編輯的支撐環(huán)境。
(4)塊(BLOCKS)段 塊段記錄了定義每一個塊的塊名、當(dāng)前圖層名、塊的種類、塊的插入基點及組成該塊的所有成員。
(5)實體(ENTITIES)段 該段定義了每個實體的種類,所有圖層名、顏色、線型、厚度、實體描述字及有關(guān)的幾何數(shù)據(jù)。
(6)對象(OBJECT)段 記錄了包含非傳統(tǒng)的繪圖對象的一些非實體的符號信息。
(7)文件結(jié)束(EOF)。
DXF文件的結(jié)構(gòu)相當(dāng)復(fù)雜,完整讀取DXF文件也是一項異常繁瑣的工程.在實際應(yīng)用中,為了提取圖形的實體信息,可以省略DXF文件中的許多項,只要獲取其中的層表,塊段和實體段,就可以完成相應(yīng)幾何圖形的描述.在層表中說明每一層的顏色,線型,在塊段中說明塊所在的層,屬性及其在圖形中的位置,在實體段中說明直線的起點,終點及圓的圓心,半徑等幾何信息和各實體所在的層.根據(jù)實體所在的層,在層表中搜索每一層的顏色,線型并將其添加到實體對象中.
目前有兩種可以實現(xiàn)DXF格式文件的讀寫。一種是使用OpenDWG函數(shù)庫,OpenDWG函數(shù)庫是一個能直接訪問DXF文件的靜態(tài)連接函數(shù)庫,是由一些對DWG文件有研究的一些公司和個人組成的團體開發(fā)的,具有完善的讀寫DXF文件的接口函數(shù)。二是用戶自主開發(fā)讀寫程序,這種方法是根據(jù)DXF文件基本結(jié)構(gòu)并結(jié)合實際需要,舍去一些DXF文件中可對顯示關(guān)系不大的信息,只顯示跟電子海圖文件相關(guān)聯(lián)的部分。具有一定的靈活性。
兩種方法相比第一種使用OpenDWG函數(shù)庫缺點比較明顯,此函數(shù)庫不是免費使用的,功能相對固定,如要實現(xiàn)實時顯示,方法復(fù)雜,而且成本很高。而第二種方法則具有相當(dāng)?shù)撵`活性,而且成本較低。考慮到開發(fā)成本及應(yīng)用的靈活性,本設(shè)計采用第二種方法開發(fā)DXF文件的讀寫程序。
電子海圖讀寫模塊在電子導(dǎo)航軟件中是相對獨立的模塊,本文采用基于Windows程序設(shè)計的動態(tài)鏈接庫開發(fā)此模塊。這樣在建立應(yīng)用程序的可執(zhí)行文件時,不必將庫中的代碼拷貝到可執(zhí)行文件中,而是運行時動態(tài)加載動態(tài)鏈接庫DLL(Dynamic Link Library),裝載的DLL被映射到進程地址空間中。使用動態(tài)鏈接庫可以減少內(nèi)存資源的浪費,同時可提高程序的可讀性、維護性及保密性。
具體使用方法是在讀寫并顯示海圖時,在主程序中加載讀寫DXF文件動態(tài)鏈接庫接口函數(shù)的入口地址,定義相關(guān)的調(diào)用動態(tài)鏈接庫的C++類,通過對類的對象的函數(shù)調(diào)用,即可實現(xiàn)電子海圖在主界面中的實時顯示。
根據(jù)DXF文件的格式,電子海圖讀寫模塊程序框圖如圖1所示,可以以此框圖為基礎(chǔ)完成DXF接口程序的開發(fā)。
圖1 DXF文件讀寫模塊流程圖
電子海圖的DXF文件是以大地坐標系下的海平面坐標為基準繪制的圖形文件,但是在計算機屏幕上顯示電子海圖時,屏幕上顯示使用的是顯示器設(shè)備的坐標,因此為了能讓設(shè)備屏幕上正常的顯示電子海圖信息,需要在編寫電子海圖顯示程序時解決實現(xiàn)海平面基準的坐標系轉(zhuǎn)換到設(shè)備使用的坐標系的問題,為了實現(xiàn)這個功能,需要在在程序中定義坐標轉(zhuǎn)換的宏,實現(xiàn)邏輯坐標到設(shè)備坐標的轉(zhuǎn)換。
通過程序的實際調(diào)試和運行證明,這種轉(zhuǎn)換方法可以正確的實現(xiàn)海圖的顯示,并能實現(xiàn)電子海圖與航道航線、DGPS定位坐標的正確匹配。
本文所介紹的航道電子海圖文件程序開發(fā)方法采用庫文件讀取DXF海圖文件的方法,實際操作時應(yīng)用調(diào)用定義在類中的DXF文件讀寫函數(shù)的方法實現(xiàn)對電子海圖的讀寫操作。同時通過宏定義的方式實現(xiàn)電子海圖在屏幕顯示時存在屏幕坐標與邏輯坐標轉(zhuǎn)換問題,實際運行表明,本程序開發(fā)方法是實用可靠的。
[1]史國有.基于GPS和電子海圖的船舶導(dǎo)航與監(jiān)控系統(tǒng)[J].中國航海,2003.
[2]Kang H.I,Watermarking techniques using the drawing exchange format(DXF),file,Proceedings of the ACM International Multimedia Conference and Exhibition,2001.
[3]李宏利,李漢榮.數(shù)字地球模式下的電子海圖應(yīng)用[M].海洋測繪,2004.
[4]吳震亞.基于電子海圖的船舶調(diào)度管理系統(tǒng)[M].航海技術(shù),2003.
[5]趙麗寧,郝江凌.電子海圖導(dǎo)航系統(tǒng)多設(shè)備接口動態(tài)鏈接庫的開發(fā)[M].大連海事學(xué)報,2003.
[6]電子海圖及其應(yīng)用系統(tǒng)國際規(guī)范和標準(S-57篇)[M].中華人民共和國海事局.
[7]許兆新,方 明,徐 婧.基于國際標準的電子海圖顯示系統(tǒng)設(shè)計[J].計算機與數(shù)字工程,2005,33(9):23-25.
[8]張英俊,蘇本征.ECDIS中系統(tǒng)電子海圖的設(shè)計[J].世界海運.1999,22(1):15-17.
[9]許開宇.符合國際標準的電子海圖顯示和信息系統(tǒng)(ECDIS)[J].船舶工程.1999(5):53-55.
[10]徐 婧,基于國際標準電子海圖顯示系統(tǒng)設(shè)計與實現(xiàn)[碩士論文],哈爾濱工程大學(xué),2005.