本發明涉及一種電子海圖矢量圖形標繪方法,主要是在電子海圖界面上實現svg標繪繪制功能,達到了無損繪制的效果,且標繪繪制具有自適應繪制與多循環準確繪制功能,提高了海圖標繪的實用性與準確性。
背景技術:
1、電子海圖系統(ecdis)是一種創新的航海信息技術,它通過集成數字海圖與船舶管理軟件,提供了一種高效、準確的航海導航解決方案。這種系統能夠實時展示船舶在海圖上的精確位置,同時,它還具備高級的航線規劃功能,允許船員基于當前的海況和天氣條件制定和調整航線,確保航行的安全與經濟性。此外,ecdis還支持自動記錄船舶的航行數據,為船舶管理、事故調查和航海教育提供了寶貴的信息資源。通過這些先進的軟件功能,電子海圖系統不僅提高了航海的效率和安全性,還為船員提供了一個直觀、易于操作的導航環境,是現代航海不可或缺的一部分。
2、目前,電子海圖的標繪方式主要分為圖元繪制與矢量圖形(svg)繪制方法。圖元繪制需要將圖形劃分為點、線、面三種元素,添加一種圖元需要的工程量較大,對多圖元的適配性較差;svg標繪可以將一種圖元作為整體進行繪制,適合大量圖形的使用。但現有svg標繪方法存在局限性,在存儲與管理方式上存在添加格式受限、不易讀取等問題,在顯示與操控方面存在矢量顯示粗糙、可操作性差等問題,無法發揮svg格式的特性。
技術實現思路
1、針對現有技術存在的不足,本發明提供了一種電子海圖矢量圖形標繪方法,提出切實可行的svg文件繪制實現方案,為電子海圖圖元標注系統提供技術方案。
2、一種電子海圖矢量圖形標繪方法,本發明采用如下技術方案:
3、(1)svg存儲與管理
4、(1.1)通過對矢量圖形繪制模塊進行封裝,可以作為插件功能使用于電子海圖繪制系統中。
5、(1.2)通過加載svg文件,解析出svg格式信息存儲至菜單欄系統中,菜單欄展示svg文件縮略圖及相關名稱,svg文件原有高度、寬度、線寬等信息將被記錄。
6、(1.3)根據svg文件記錄信息,基于數據庫系統將svg進行分類篩選,存儲到不同的分組中。
7、(2)svg標繪繪制與顯示
8、(2.1)通過雙擊菜單欄中已存儲的svg縮略圖標,可以進入對應圖標的繪制狀態;進入繪制狀態下,通過鼠標在電子海圖上選擇坐標點,svg文件將被繪制到坐標點位置,繪制可以連續操作直至退出繪制模式;根據svg文件本身像素大小,算法計算出本svg圖元的enve?l?ope屬性值,作為判斷當前圖元是否位于海圖顯示部分中的依據,不位于海圖顯示部分的圖元不繪制以此節約系統資源。
9、(2.2)在圖元繪制結束后,圖元將被綁定為獨一的mapid屬性,以mapid作為索引值,記錄圖元經緯度、坐標點等信息于哈希表中。
10、(2.3)圖元繪制后被綁定循環繪制屬性,檢測海圖層是否存在多次繪制情況,利用地理空間信息點計算多次繪制屏幕點位,多次準確繪制。
11、(2.4)繪制svg文件采用獨立于電子海圖繪制的單獨圖層,通過信號與槽機制將海圖的刷新與圖元圖層的刷新綁定,在對海圖層進行拖動與旋轉操作時,算法通過對記錄的圖元信息進行計算,自動更新圖元層的繪制狀態與信息。
12、(3)svg標繪交互
13、(3.1)鼠標左鍵單擊已繪制在地圖上的svg標繪,根據繪制時生成的enve?l?ope判斷區域,生成三個功能點;通過拖動不同的功能點,分別實現點擊拖動當前標繪平移、點擊修改當前標繪旋轉角度、點擊修改當前標繪大小功能;在每一次修改動作結束后,哈希表中會自動更新記錄當前標繪新的狀態信息、位置信息等。
14、(3.2)鼠標右鍵單擊已繪制在地圖上的svg標繪,將在當前位置點提供子菜單欄選擇功能,菜單欄具有復制、粘貼、剪切、刪除功能。復制粘貼產生的新標繪將在哈希表中產生新的鍵值,剪切粘貼更改的標繪將原標繪信息進行更改記錄。
15、本發明的有益效果是:
16、(1)本發明提供的一種基于電子海圖的矢量圖形標繪方法引入了svg文件繪制的功能,解決傳統電子海圖標繪圖元種類貧乏、添加圖元種類步驟繁瑣等問題。
17、(2)本發明提供的標繪方法引入enve?l?ope屬性設定,根據圖元的enve?l?ope屬性進行判定該圖元是否需要繪制,有助于提升大量圖元存在時的系統流暢性。
18、(3)本發明提供的標繪方法將標繪圖層與海圖圖層區分,通過信號機制將圖層的參數綁定,在保證圖層分立的同時,標繪圖層也隨海圖層的拖動旋轉等實時更新。
1.一種電子海圖矢量圖形標繪方法,其特征在于:所述的一種基于電子海圖的矢量圖形標繪與控制方法包括svg標繪存儲與管理、svg標繪繪制與顯示,svg標繪交互三個部分。svg標繪存儲與管理方法支持對svg圖片進行統一分類及管理,將svg文件存入對應分組菜單欄下同時進行圖標顯示。svg標繪繪制與顯示方法支持對分組菜單欄下的svg文件進行繪制,同時將相關繪制信息存入繪制圖層,實現無損標繪功能。svg標繪交互方法支持對已繪制svg文件通過鼠標拖動、點擊操作實現對標繪的復制、剪切、移動、刪除等功能。
2.如權利要求1所述的一種電子海圖矢量圖形標繪方法,其特征在于:svg標繪存儲與管理方法包括對讀取到的svg文件進行分組存儲功能,svg文件被讀取存入到filenameall文件中;每一個svg文件被分配為唯一的animationbutton按鈕,并動態顯示在系統中,animationbutton按鈕被賦予動畫事件模組、點擊事件模組與查詢事件模組,通過信號與槽機制將事件與相應功能綁定。
3.如權利要求1所述的一種電子海圖矢量圖形標繪方法,其特征在于:svg標繪繪制與顯示方法包括通過雙擊菜單欄中對應的svg縮略圖文件,電子海圖系統進入對應文件的標繪模式,此時通過點擊海圖中一點的位置,根據鼠標位置獲取對應屏幕像素點的坐標,并轉化為經緯度信息,此時對應svg文件即被繪制到所點擊位置,同時標繪的信息繪制時間、繪制經緯度情況等被存儲記錄到相關哈希表中,便于后續進行處理,同時基于循環繪制變量值,基于地理空間點位值計算循環繪制屏幕點位圖,多點位準確繪制于海圖系統中。繪制圖元被賦予envelope屬性,用于鼠標控制判斷與圖元是否繪制判斷以此節約系統資源空間。svg文件繪制圖層是獨立于海圖顯示系統的單獨圖層,作為新畫布覆蓋在海圖顯示界面上,通過讀取全局變量drawpara確保當前畫布與海圖畫布參數統一,對海圖進行縮放拖動等功能時,svg標繪實時讀取當前參數并進行自適應繪制。
4.如權利要求1所述的一種電子海圖矢量圖形標繪方法,其特征在于:對已繪制在電子海圖系統上的單個標繪進行鼠標左鍵點擊時,提供根據圖案自適應的三個點,分別對應點擊拖動修改標繪位置、拖動修改標繪角度、拖動修改標繪大小方法。點擊拖動修改標繪位置,標繪實時跟隨鼠標軌跡展示預覽效果,當鼠標左鍵松動時拖動完成,存儲在哈希表中的對應標繪位置信息同步更新完成;點擊拖動修改標繪角度功能實現標繪隨鼠標指針自定義角度旋轉,同時在旋轉后將旋轉角度信息存儲至哈希表中;點擊拖動修改標繪大小功能實現鼠標拖動自定義更改圖標大小,支持任意長寬比例修改,同時將更改后信息存儲至哈希表中。對已繪制在電子海圖系統上的單個標繪進行鼠標右鍵點擊時,提供子菜單選擇窗口,具有剪切、復制、粘貼、屬性功能選擇;復制粘貼功能獲取到的新標繪將作為新鍵值存儲。