胡曉寶


【摘 要】在海洋導航定位中電子海圖具有重要作用,本文就對電子海圖讀取和顯示設計中對GIS ArcEngline技術的應用詳細分析。
【關鍵詞】GIS ArcEngine技術;電子海圖;讀取;顯示設計
在經濟全球化發展背景下海洋貿易也有迅速發展,那么在海洋貿易發展如何準確定位船舶位置,確保船舶行駛安全。電子海圖在海洋導航定位中具有重要應用價值,現今對于數字電子海圖可以被分成兩類,其中一類是矢量化海圖,另一類是光柵掃描海圖,同時其也能夠和GPS、計程儀、雷達、氣象儀以及測深儀等導航數據進行結合使用。本文則關于GIS ArcEngine技術在電子海圖讀取和顯示設計中的應用進行分析。
1 電子海圖的關鍵技術
電子海圖的顯示系統所采用的是shapefile電子海圖格式,這一數據研究是美國環境系統研究所研制所得,也是目前應用比較廣泛的一種矢量數據格式。這種格式在應用中比較方便,其主要是采用點線面對空間特征表示,并且也會將這些非拓撲地理特征與其特征屬性全部都保存起來。在shapefile文件中其標準形式需要有圖形、DBASE屬性文件以及索引文件。
其中圖形文件則組成部分包括固定長度的文件頭以及不定長度的記錄,其中文件頭需要對這一文件的數據類型、邊界范圍以及文件長度等相關信息全部記錄。在對shapefile文件進行讀取的時候首先也就要獲取其文件頭,以能夠首先了解這一文件的相關信息,在此基礎上將元數據表建立起來[1]。不定長度的記錄形式與其基本相似,組成部分包括定長記錄頭(Record Hearder)以及不定長記錄(Record Contents)。其結構如表1所示。屬性文件則是用來對屬性信息記錄,其標準形式是DBF文件,組成也被分成兩部分,分別是頭文件和實體信息。其中頭文件是不定長記錄,主要目的是詳細說明DBF文件,實體信息的組成則是和圖形文件相對應的記錄項,任何一條記錄中均有可能會出現多個屬性記錄,甚至也有可能會是空值,其需要依照實際情況呈現。索引文件是坐標文件的索引信息,從整體上來看,其結構和圖形文件一樣,其內容則包括文件頭以及實體記錄,對于文件頭大小的確定則和圖形文件相同,實體記錄包括兩個部分記錄長以及偏移量,記錄長主要是對其相對應圖像文件記錄長度記錄,偏移量則是關于這一文件頭位置的偏移數值記錄。
2 電子海圖的結構設計
電子海圖顯示設計關系到數據解析、圖形顯示以及坐標變換等過程,所以如果是在Android系統中的電子海圖顯示,其步驟可以被分成以下幾步,具體如下所示。其中系統組織結構則如圖1所示。
2.1 S-57數據解析和系統內部數據存儲
在系統中這一模塊具有基礎作用。其表示方式是點線面三種物標類型,并且再加上相應空間坐標,從而構成其具體的內部數據格式,并且還能夠將其內部數據依照其圖幅大小成功在SD卡上進行存儲。在其存儲過程嚴格依照比例尺所形成的圖幅索引,這樣可以為其海圖顯示檢索提供一定方便。內部數據格式的成功應用,對電子海圖顯示速度有明顯的提升[2]。
2.2 坐標投影以及轉換
這一模塊主要任務是成功解算出地球橢圓體上的地理坐標在計算機屏幕上所使用的迪卡坐標幾何投影,同時也要完成從電腦屏幕到地理坐標中的反解算功能。那么借助于這一模塊也就能夠將數據中的地理坐標成功在計算機屏幕上顯示,并且計算機屏幕上的位置也能夠準確標注出其具體的地理坐標。
2.3 海圖檢索和海圖顯示
這一模塊功能則是根據當前能夠顯示的比例尺和屏幕范圍對其顯示的電子海圖進行索引,之后所有被檢索到的電子海圖內部格式數據需要全部進行加載,依照S-52規范并采用點線面格式繪制出檢索到的電子海圖顯示內容。可以采用TrueType字體實現電子海圖的符號化物標,這樣不但能夠對其顯示海圖效果實施一定的優化,同時還能夠顯著對其繪圖速度有所提升[3]。
3 電子海圖的顯示設計
3.1 ArcEngine技術和電子海圖顯示軟件
ArcEngine技術是為GIS開發人員在組件實用基礎上所開發出的一個框架,這一框架能夠為提供商或者內部開發人員提供行業內部的專用GIS應用軟件,其借助于GOM技術對其解決方案實現,并且采用ActiveX控件形式將其在應用程序中進行嵌入。但是因為控制軟件中包括大量的GIS數據接口函數,所以從理論上來講其開發人員能夠將ArcGIS所有功能全部實現。借助于VC++MFC平臺和相關海圖技術,也就能夠實現其電子海圖的顯示功能。
3.2 電子海圖的顯示實現
在電子海圖系統中S-57模塊將其海域分解成若干個小單元,其中信息量的多少能夠對其電子海圖單元大小起到決定作用,但是必須要小于5MB,每一個單元均會有自己的編號,并且均有具體的有效范圍以及編輯比例尺。其中電子海圖的顯示流程如圖2所示。在電子海圖顯示設計中,首先也就需要依照屏幕上所顯示的范圍及其具體比例尺,檢索到與其條件相符合的電子海圖,之后對檢索到電子海圖中的相關數據讀取,依照其數據找到具體的點線面物標位置、形狀等相關信息,并在緩存中對其物標進行具體繪圖,在最后對屏幕進行刷新,以完成整個顯示。在這一系統中其顯示部分均通過Android系統中的SurfaceView類實現的。其中SurfaceView能夠從其內存或者是存儲器方位方式(DMA)等一些硬件接口中直接將其圖像相關數據獲取,屬于是Android系統中的一個重要繪圖容器。在其電子海圖單元顯示過程中,不管是哪一個單元其海圖要素均比較多,另外再加上電子海圖中的漫游縮放等復雜操作,也就導致在繪制海圖過程中,需要占用大量內存,其中SurfaceView也就能夠將從主線程之外的線程中逐漸向屏幕進行繪圖,從而有效的避免因為圖畫中的繁瑣任務而導致其主線程出現阻塞情況,不管是程序的反應速度還是其相關操作的平滑性均能夠得到顯著提升。
4 結語
綜上所述,以上在Android系統中采用GIS ArcEngine技術成功實現電子海圖數據讀取和顯示功能,在S-52標準模塊上對電子海圖的渲染及顯示成功完成,之后借助于電子海圖上的經緯度相關信息,shapefile電子文件被成功轉化為相關數據信息,這樣對其電子海圖的顯示速度有大大的提升,并且還實現了電子海圖的測量和定位功能。基于電子海圖的顯示設計可以明顯看出這一海圖精度較高,同時還能夠實現和GPS數據、衛星遙感數據等相關信息的結合使用,從而大大提高其這一技術的應用前景和應用范圍。
【參考文獻】
[1]鐘宇,趙朝方,劉元廷,等.基于ArcEngine電子海圖顯示技術與實現[J].測繪與空間地理信息,2012,35(9):133-135.
[2]許兆新,花文華.三維電子海圖地形可視化技術研究[J].哈爾濱工程大學學報,2009,30(10):1129-1133.
[3]楊功流,竇玉寶,鄭榮才.一種雷達和電子海圖圖像疊加方法[J].中國慣性技術學報,2010,18(2):181-184.
[責任編輯:湯靜]