專利名稱:一種電子海圖的快速顯示方法
技術領域:
本發明涉及的是一種地理信息的顯示方法,特別涉及一種國際標準S-57格式電 子海圖快速顯示方法。
背景技術:
電子海圖系統(Electronic Chart System,ECS)是隨著航海事業及科技的發展而 產生的一種集成式的實時導航信息系統,被認為是繼雷達/ARPA之后近10年來在航海領域 又一項偉大的技術革命。按照國際海道測量組織(IHO)的定義電子海圖系統是一種將海 圖信息、定位信息、雷達信息、船舶動態參數集于一體的圖文并茂的航海自動化系統。它由 電子海圖數據文件、控制顯示設備、專用軟件和外接傳感器構成。國內各個廠商也推出了許 多ECDIS系統,但這些ECDIS采用的電子海圖數據均采用自己的格式,導致各個廠商之間的 ECDIS系統的電子數據無法通用,降低了系統的通用性和兼容性。為此國際海道測量組織 (IHO)于1992年通過了《S-57篇IHO數字測量數據傳輸標準》,該標準旨在對各國海道部門 之間用于交換數字化海道數據以及將這些數據傳遞給生產廠商、航海者和其它數據用戶的 標準加以說明。電子海圖系統作為海洋信息的顯示平臺,可以詳盡的描述指定海域的實際地物特 征信息。隨著電子海圖技術的日益發展,其應用領域不斷擴大。電子海圖是以地圖數據為 基礎,通過一定的硬件和軟件在電子屏幕上顯示可視的地圖,電子海圖是反映空間信息特 征的一種有效方式,與數據庫技術、多媒體技術、超文本技術等相結合,得到了廣泛的應用, 電子海圖的顯示速度直接影響著用戶對相關開發軟件的信任程度,快速顯示能給用戶帶來 良好的效果。在電子海圖快速顯示方法研究方面,CNKI數據庫中收錄的張勇剛的論文《電子海 圖快速拼圖顯示技術研究》中,提出電子海圖快速拼圖原理和方法。主要針對影響海圖調圖 速度的瓶頸——讀文件操作和畫圖操作,提出了解決方法。首先采用文件索引管理,減少對 硬盤的讀寫操作;其次采用內存位圖拷貝方法,減少海圖實時更新過程中重畫海圖的次數。然而該論文中并沒有針對海圖縮放過程中快速讀取文件提出改進,當縮放到要更 換圖時才開始重新搜索海圖,產生延時現象。另外,論文解決的不是國際標準S-57海圖快 速顯示問題,因此實用性較弱。
發明內容
本發明的目的在于提供一種能加快了海圖移動速度,提高顯示速度,支持國際標 準S-57格式電子海圖,具有較強實用性的電子海圖的快速顯示方法。本發明的目的是這樣實現的具體實施步驟包括步驟1 海圖初始化設置在更換海圖的前提下,以海圖初始顯示比例為當前基準,每次縮放以1.5倍為單 位,最大放大4倍,縮小最小為0. 5倍,超出如上所述范圍,則搜索下一比例尺海步驟2 建立海圖文件管理類(1)創建海圖索引文件通過讀取海圖文件的文件頭,得到海圖的基本要素值,建 立一個海圖索引文件,將讀取的數據以結構體的方式存入索引文件中,結構體要素包括圖 ID號、圖名、南北西東坐標、比例尺、坐標乘數因子、3D水深乘數因子;(2)建立比例尺鏈表結構體ScaleNode 將按照比例尺從大到小建立十字鏈表,對 海圖索引文件進行遍歷,排序生成最終的海圖索引文件,結構體MapNode包含海圖基本數 據結構體和preNode、nextNode指針;步驟3:內存位圖繪制現有系統中的海圖顯示視口為1024*768像素大小,視口在x,y方向上的寬和高分 別為length_X、Width_y,首先在內存中開辟一塊大小為屏幕4倍大小矩形區域的即寬高分 別為 2* 1 ength_x,2*wi dth_y,面積為(2*1 ength_x) * (2*wi dth_y),海圖移動時,并不重繪 屏幕,而只將內存位圖移動到當前屏幕視口,在鼠標移動海圖完成后,更新位圖;步驟4:雙緩沖池在內存中構造兩個緩沖池移動緩沖池和縮放緩沖池,用來將拼圖時會出現的海 圖數據文件預先讀入內存,對調入的海圖設定權值,根據權值刪除文件,更新緩沖區,查找 內存中海圖順序,先從移動緩沖池中查找,其次在從縮放緩沖池中查找,若不在讀入相應內 存;1、針對移動海圖緩沖池管理方法如下建立一個大小為5的指針數組,作為內存海圖文件的索引表,由海圖索引文件管 理類將需要拼圖的進行計算,判斷相交區域,確定需要拼圖,將其放入內存海圖文件索引表 中,拼圖方法為(1)根據當前顯示海圖的比例尺,從海圖索引文件管理類中索引該比例尺鏈表的 表頭查找,讀出海圖基本信息,得到海圖邊界南北西東的大地坐標,構成包含此海圖區域的 最小矩形;(2)拼圖策略將使用內存位圖進行判斷,將內存位圖矩形坐標轉換為同一坐標系 下的坐標,這里統一轉換為大地坐標,判斷兩矩形是否相交,相交則將其讀入緩沖池海圖索 引文件的索引表中;(3)對每一幅海圖設置一個優先權值,優先級取決于此海圖在繪制中被調用的次 數,優先級的取值范圍為{0,1,2,3,4,5,6,7,8,9},每次更新繪圖時,首先將內存中所有海 圖的優先權值減1,然后在繪圖過程中將用到的每一幅海圖由顯示的優先級設為9,每次讀 入時的優先權值初值賦為5,若優先權值< 0,則賦予優先權值=0 ;2、針對縮放海圖緩沖池管理方法如下(1)以海圖放大情況考慮,相對初始顯示海圖,第一次點擊為1.5倍,第二次為 2. 25倍,第三次為3. 375倍,第四次為5. 0625倍,將被強制賦值為4倍,否則搜索更大比例 尺海圖,設置一個哨兵,用于判定是否超過該值,設為3. 3 ;(2)以海圖縮小情況考慮,相對初始顯示海圖,第一次點擊為0. 67倍,下一次點擊 為0. 44倍,將被強制賦值為0. 5倍,若圖形已放大至4倍大小,第一次為2. 67倍,第二次為 1. 78倍,第三次為1. 18倍,第四次為0. 79倍,第五次為0. 53倍,第六次點擊為0. 35倍,將 被強制賦值為0.5倍,否則搜索更大比例尺海圖,設置一個哨兵,用于判定是否小于該值,設為0. 7 ;(3)對每一幅海圖設置一個優先權值,優先級的取值范圍為{0,1,2,3,4,5},每次 和哨兵值進行判斷,需要讀入數據時,首先將內存中所有海圖的優先權值減1,然后在繪圖 過程中將用到的每一幅海圖由顯示的優先級設為5,每次讀入時的優先權值初值賦為3,若 優先權值< 0,則賦予優先權值=0。本發明的要點主要體現在1、設計了海圖數據文件管理類。該海圖文件管理類,可以更方便地進行文件查找, 在拼圖時快速遍歷海圖文件;針對不同比例尺海圖,建立了雙向十字鏈表索引結構對不同 比例尺海圖進行管理。2、內存位圖策略。內存位圖策略主要是為加快海圖移動速度設計的,設置一個4 倍屏幕大小的位圖,將所畫的海圖顯示在位圖中心。在海圖移動的過程中并不重繪,待移動 完成后再重繪,可避免移動過程中持續重繪。3、雙緩沖池策略。雙緩沖池策略是為加快縮小和放大海圖的顯示速度,將所需要 的海圖進行預先讀取,分別放入不同的內存緩沖池中。一個緩沖池用于存放當前比例尺的 海圖,便于海圖在移動后直接從內存中讀取海圖數據,以便快速拼圖顯示;另一個用于存放 海圖縮放后要用到的海圖,便于快速調用顯示。本發明的有益效果為采取內存位圖策略,避免了移動過程中持續重繪,加快了海 圖移動速度;基于雙緩沖池策略,在海圖縮放操作過程中,可快速調用新海圖,提高顯示速 度;支持國際標準S-57格式電子海圖的快速顯示,具有較強的實用性。
圖1為本發明所述的雙向十字鏈表圖。圖2為本發明所述的內存位圖策略示意圖。圖3為本發明所述的雙緩沖池策略流程圖。
具體實施例方式下面結合附圖舉例對本發明做更詳細地描述步驟1 海圖初始化設置限制海圖最小最大縮放范圍,同一幅海圖放大4倍后已顯示該圖所有要素,再放 大已沒有意義,若繼續放大就得進行更大比例尺海圖的搜索,這樣顯示才有意義;縮小同 理,縮小兩次至原始比例的0.5倍,就應搜索更小比例尺海圖,所以對海圖縮放給出限制, 在更換海圖的前提下,以海圖初始顯示比例為當前基準,每次縮放以1.5倍為單位,最大可 放大4倍,縮小最小為0. 5倍,超出如上所說范圍,則搜索下一比例尺海圖。步驟2 建立海圖文件管理類建立海圖文件管理類,主要是為了管理所有海圖數據文件。需要讀取每一幅海圖 的基本信息時,并不需每幅海圖所有信息都讀取一遍,這樣非常耗時,并且在計算拼圖時也 沒必要全部知道要素信息,僅需要知道幾個關鍵信息就可以。設計海圖文件管理類,需要以下兩個步驟(1)創建海圖索引文件,通過讀取海圖文件的文件頭,可得到海圖的基本要素值。建立一個海圖索引文件,將讀取的數據以結構體的方式存入索引文件中,結構體要素圖 ID號、圖名、南北西東坐標(為大地坐標)、比例尺、坐標乘數因子、3D水深乘數因子。(2)建立比例尺鏈表結構體ScaleNode,將按照比例尺從大到小建立十字鏈表,對 海圖索引文件進行遍歷,排序生成最終的海圖索引文件。結構體MapNode包含海圖基本數 據結構體和preNode、nextNode指針,可參見圖1。整個文件鏈表是從TopNode開始,TopNode指向的比例尺最大的ScaleNode結 構變量。每一種比例尺的海圖都對應一個Scalenode。ScaleNode通過保存MapNode的 指針firstnode和TailNode來維持一個相應比例尺海圖的雙向鏈表。不同比例尺海圖 的ScaleNode也使用另一條雙向鏈表連接在一起,并且按照比例尺大小排序。越靠近 topNoded的ScaleNode對應的海圖比例尺越大。根據已定義的結構和指針,就可以遍歷所 有文件,在有比例尺作為指導時,搜索速度也較快。步驟3:內存位圖繪制現有系統中的海圖顯示視口為1024*768像素大小,設視口在x,y方向上的寬和高 分別為length_X、width_y,首先在內存中開辟一塊大小為屏幕4倍大小矩形區域的即寬高 分別為 2*length_x,2*width_y。面積為(2*length_x) * (2*width_y),海圖移動時,并不重 繪屏幕,而只需將內存位圖移動到當前屏幕視口,在鼠標移動海圖完成后,更新位圖。這樣 屏幕更新速度快而且后臺內存位圖的更新、重繪在移動圖形后進行,用戶感覺不到畫圖工 作的存在,這就可以得到很好的調圖速度和畫圖效果。設置內存作圖面積大于顯示窗口的 大小,未更新內存位圖與更新后內存位圖有大量的重合。位圖無需過大,4倍屏幕視口大小 可限定鼠標每次最大移動限定為χ方向512像素、y方向384像素。設為4倍屏幕大小,最 大可進行半屏移動,移動圖形時移動半屏,用戶完全能接受,這樣可以讓拼圖時減少拼圖的 數量,從而提升調圖顯示速度。步驟4 雙緩沖池策略在內存中構造兩個緩沖池移動緩沖池和縮放緩沖池,用來將拼圖時會出現的海 圖數據文件預先讀入內存,對調入的海圖設定權值,根據權值刪除文件,更新緩沖區。查找 內存中海圖順序,先從移動緩沖池中查找,其次在從縮放緩沖池中查找,若不在(平移、縮 放方式)讀入相應內存。1、針對移動海圖緩沖池管理方法如下建立一個大小為5的指針數組,作為內存海圖文件的索引表,由海圖索引文件管 理類將需要拼圖的進行計算,判斷相交區域,確定需要拼圖,將其放入內存海圖文件索引表 中,拼圖算法如下(1)根據當前顯示海圖的比例尺,從海圖索引文件管理類中索引該比例尺鏈表的 表頭查找,讀出海圖基本信息,得到海圖邊界南北西東的大地坐標,構成包含此海圖區域的 最小矩形。(2)拼圖策略將使用內存位圖進行判斷,將內存位圖矩形坐標轉換為同一坐標系 下的坐標,這里統一轉換為大地坐標,判斷兩矩形是否相交,相交則將其讀入緩沖池海圖索 引文件的索引表中,可參見圖2。(3)對每一幅海圖設置一個優先權值(priority),優先級取決于此海圖在繪制中 被調用的次數,優先級的取值范圍為{0,1,2,3,4,5,6,7,8,9},每次更新繪圖時,首先將內存中所有海圖的權值(priority)減1,然后在繪圖過程中將用到的每一幅海圖由顯示的優 先級設為9,每次讀入時的權值(priority)初值賦為5,若priority < 0,則賦予priority =O0這樣確保當前最后用到的海圖優先級最高。刪除海圖內存文件選擇權值最小的進行 淘汰。2、針對縮放海圖緩沖池管理方法如下無極縮放指的就是比例尺越小,信息量越少;比例尺越大,信息量越多。通過不 同比例尺地圖自動的切換顯示信息變化,通過縮放來調用下一層的。比例尺縮放的一個基 本要求就是視口的中心地理位置不變化,例如點擊放大時,視口的地理范圍變小,以當前 點擊點為中心,按放大系數放大,若顯示比例尺超出限定的范圍,則需要切換海圖。針對海 圖縮放建立一個大小3指針數組,作為第二個內存海圖文件的索引表,此時需要判斷何時 開始搜索海圖數據文件,以確保比較有效的搜索。(1)以海圖放大情況考慮,相對初始顯示海圖,第一次點擊為1.5倍,第二次為 2. 25倍,第三次為3. 375倍,第四次為5. 0625倍,將被強制賦值為4倍(若無更大比例尺海 圖),否則搜索更大比例尺海圖。設置一個哨兵,用于判定是否超過該值,設為3. 3,連續三 次點擊放大就應該讀取大比例尺海圖,因為下一次操作是放大的操作的概率最大。搜索到 第一幅包含鼠標點擊點(將其轉換為大地坐標)海圖,避免重復出現同一比例尺,多重包含 情況,更換海圖。(2)以海圖縮小情況考慮,相對初始顯示海圖,第一次點擊為0. 67倍,下一次點擊 為0. 44倍(若無更小比例尺),將被強制賦值為0. 5倍,若圖形已放大至4倍大小,第一次 為2. 67倍,第二次為1.78倍,第三次為1. 18倍,第四次為0. 79倍,第五次為0. 53倍,第六 次點擊為0. 35倍(若無更小比例尺),將被強制賦值為0. 5倍,否則搜索更大比例尺海圖。 設置一個哨兵,用于判定是否小于該值,設為0. 7,連續四次點擊縮小就應該讀取小比例尺 海圖,因為下一次操作是縮小的操作的概率最大,操作者意圖很有可能時縮小海圖選擇小 比例尺海圖。搜索到第一幅包含鼠標點擊點(將其轉換為大地坐標)海圖,避免重復出現 同一比例尺,多重包含情況,以便按順序縮小海圖,更換海圖。(3)對每一幅海圖設置一個優先權值,優先級的取值范圍為{0,1,2,3,4,5},每次 和哨兵值進行判斷,需要讀入數據時,首先將內存中所有海圖的權值(priority)減1,然后 在繪圖過程中將用到的每一幅海圖由顯示的優先級設為5,每次讀入時的權值(priority) 初值賦為3,若priority < 0,則賦予priority = 0。這樣確保當前最后用到的海圖優先級 最高。刪除海圖內存文件選擇權值最小的進行淘汰。
權利要求
一種電子海圖的快速顯示方法,其特征是具體實施步驟包括步驟1海圖初始化設置在更換海圖的前提下,以海圖初始顯示比例為當前基準,每次縮放以1.5倍為單位,最大放大4倍,縮小最小為0.5倍,超出如上所述范圍,則搜索下一比例尺海圖;步驟2建立海圖文件管理類(1)創建海圖索引文件通過讀取海圖文件的文件頭,得到海圖的基本要素值,建立一個海圖索引文件,將讀取的數據以結構體的方式存入索引文件中,結構體要素包括圖ID號、圖名、南北西東坐標、比例尺、坐標乘數因子、3D水深乘數因子;(2)建立比例尺鏈表結構體ScaleNode將按照比例尺從大到小建立十字鏈表,對海圖索引文件進行遍歷,排序生成最終的海圖索引文件,結構體MapNode包含海圖基本數據結構體和preNode、nextNode指針;步驟3內存位圖繪制現有系統中的海圖顯示視口為1024*768像素大小,視口在x,y方向上的寬和高分別為length_x、width_y,首先在內存中開辟一塊大小為屏幕4倍大小矩形區域的即寬高分別為2*length_x,2*width_y,面積為(2*length_x)*(2*width_y),海圖移動時,并不重繪屏幕,而只將內存位圖移動到當前屏幕視口,在鼠標移動海圖完成后,更新位圖;步驟4雙緩沖池在內存中構造兩個緩沖池移動緩沖池和縮放緩沖池,用來將拼圖時會出現的海圖數據文件預先讀入內存,對調入的海圖設定權值,根據權值刪除文件,更新緩沖區,查找內存中海圖順序,先從移動緩沖池中查找,其次在從縮放緩沖池中查找,若不在讀入相應內存。
2.根據權利要求1所述的一種電子海圖的快速顯示方法,其特征是移動緩沖池管理 方法為建立一個大小為5的指針數組,作為內存海圖文件的索引表,由海圖索引文件管 理類將需要拼圖的進行計算,判斷相交區域,確定需要拼圖,將其放入內存海圖文件索引表 中,拼圖方法為(1)根據當前顯示海圖的比例尺,從海圖索引文件管理類中索引該比例尺鏈表的表頭 查找,讀出海圖基本信息,得到海圖邊界南北西東的大地坐標,構成包含此海圖區域的最小 矩形;(2)拼圖策略將使用內存位圖進行判斷,將內存位圖矩形坐標轉換為同一坐標系下的 坐標,這里統一轉換為大地坐標,判斷兩矩形是否相交,相交則將其讀入緩沖池海圖索引文 件的索引表中;(3)對每一幅海圖設置一個優先權值,優先級取決于此海圖在繪制中被調用的次數,優 先級的取值范圍為{0,1,2,3,4,5,6,7,8,9},每次更新繪圖時,首先將內存中所有海圖的優 先權值減1,然后在繪圖過程中將用到的每一幅海圖由顯示的優先級設為9,每次讀入時的 優先權值初值賦為5,若優先權值< 0,則賦予優先權值=0。
3.根據權利要求1或2所述的一種電子海圖的快速顯示方法,其特征是縮放緩沖池管 理方法為(1)以海圖放大情況考慮,相對初始顯示海圖,第一次點擊為1. 5倍,第二次為2. 25倍, 第三次為3. 375倍,第四次為5. 0625倍,將被強制賦值為4倍,否則搜索更大比例尺海圖, 設置一個哨兵,用于判定是否超過該值,設為3. 3 ;(2)以海圖縮小情況考慮,相對初始顯示海圖,第一次點擊為0.67倍,下一次點擊為·0.44倍,將被強制賦值為0. 5倍,若圖形已放大至4倍大小,第一次為2. 67倍,第二次為·1.78倍,第三次為1. 18倍,第四次為0. 79倍,第五次為0. 53倍,第六次點擊為0. 35倍,將 被強制賦值為0.5倍,否則搜索更大比例尺海圖,設置一個哨兵,用于判定是否小于該值, 設為0. 7 ;(3)對每一幅海圖設置一個優先權值,優先級的取值范圍為{0,1,2,3,4,5},每次和哨 兵值進行判斷,需要讀入數據時,首先將內存中所有海圖的優先權值減1,然后在繪圖過程 中將用到的每一幅海圖由顯示的優先級設為5,每次讀入時的優先權值初值賦為3,若優先 權值< 0,則賦予優先權值=0。
全文摘要
本發明提供的是一種電子海圖的快速顯示方法。第一步,海圖初始化設置;第二步,建立海圖文件管理類;第三步,內存位圖繪制;第四步,用雙緩沖池將拼圖時會出現的海圖數據文件預先讀入內存,對調入的海圖設定權值,根據權值刪除文件,更新緩沖區,查找內存中海圖順序。本發明采取內存位圖策略,避免了移動過程中持續重繪,加快了海圖移動速度;基于雙緩沖池策略,在海圖縮放操作過程中,可快速調用新海圖,提高顯示速度;支持國際標準S-57格式電子海圖的快速顯示,具有較強的實用性。
文檔編號G06F17/30GK101908202SQ20101022152
公開日2010年12月8日 申請日期2010年7月9日 優先權日2010年7月9日
發明者劉廠, 張振興, 沈志峰, 蔣聰, 趙玉新, 高峰 申請人:哈爾濱工程大學