專利名稱:電子海圖矢量圖形簡化方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的是地理信息系統(tǒng)空間數(shù)據(jù)分析和處理方法。
背景技術(shù):
電子海圖系統(tǒng)(Electronic Chart System. ECS)是隨著航海事業(yè)的發(fā)展而產(chǎn)生的 一種集成式的實時導(dǎo)航信息系統(tǒng),被認(rèn)為是繼雷達/ARPA之后近10年來在航海領(lǐng)域又一項 偉大的技術(shù)革命。按照國際海道測量組織(IHO)的定義電子海圖系統(tǒng)是一種將海圖信息、 定位信息、雷達信息、船舶動態(tài)參數(shù)集于一體的圖文并茂的航海自動化系統(tǒng)。它由電子海圖 數(shù)據(jù)文件、控制顯示設(shè)備、專用軟件和外接傳感器構(gòu)成。電子海圖系統(tǒng)作為海洋信息的顯示平臺,可以詳盡的描述指定海域的實際地物特 征信息。島嶼等要素大量存在于海圖中,在現(xiàn)今的矢量電子海圖中,描述島嶼等矢量要素使 用的是一系列密集的離散點列。由于數(shù)據(jù)點越多,描述原始地物的能力越強,越能真實的反 映原物體。因此,在海圖數(shù)據(jù)文件中存儲著大量的點數(shù)據(jù),用來詳盡的描述島嶼的形態(tài)特 征。隨著電子海圖技術(shù)的日益發(fā)展,其應(yīng)用領(lǐng)域不斷擴大。由前面敘述可知,電子海圖 中描述島嶼等要素使用的是一系列離散點數(shù)據(jù),在具體的實際應(yīng)用中,直接應(yīng)用海圖中海 量的數(shù)據(jù)進行數(shù)學(xué)計算必然會導(dǎo)致運算速度慢且效率低下。例如,在電子海圖服務(wù)于近水 面飛行器航路規(guī)劃時對島嶼等進行規(guī)避的特定應(yīng)用中,對于路徑規(guī)劃來說應(yīng)用矢量海圖中 大量的點數(shù)據(jù)進行航路規(guī)劃顯然數(shù)據(jù)量太大,規(guī)避計算時占用機時過多,效率極低。為此, 有必要對描述島嶼等要素的大量點數(shù)據(jù)在保證其幾何形狀不變的前提下進行特征點的提 取,即對海圖要素進行簡化處理。電子海圖矢量圖形化簡屬于矢量數(shù)據(jù)壓縮的范疇。目前,從收集到的文獻資料來 看,有關(guān)矢量圖形簡化的算法大都集中在地圖自動綜合領(lǐng)域。在該領(lǐng)域中,通常采取矢量 數(shù)據(jù)壓縮的技術(shù)實現(xiàn)要素空間信息與地圖比例尺的自適應(yīng),即若地圖比例尺較大(比例尺 分母較大),則描述要素的數(shù)據(jù)量大,若降低地圖比例尺,則通過一定的算法減少描述同一 要素的數(shù)據(jù)量,使要素數(shù)據(jù)信息與地圖比例尺互相適應(yīng)。仔細分析現(xiàn)有的矢量圖形簡化算 法可清晰的看出,當(dāng)前算法都存在一定的缺陷,主要表現(xiàn)在(1)化簡后的圖形可能出現(xiàn)相 交;(2)化簡閾值的選取問題。Douglas-Peucker算法作為目前公認(rèn)的矢量圖形化簡經(jīng)典算法,由D. Douglas和 T. Peucker于1973年提出,簡稱D-P算法,現(xiàn)有的化簡算法中,有相當(dāng)一部分都是在該算法 基礎(chǔ)上進行改進產(chǎn)生的。它的優(yōu)點是具有平移和旋轉(zhuǎn)不變性,給定曲線與閾值后,化簡結(jié)果 一定。該算法的基本思想是事先給定閾值、在曲線首、末兩點之間連線,依次計算中間 點到該線段的距離,找出最大距離點,并判斷該距離是否小于δ,若是,則舍去該曲線的所 有中間點;否則,保留該點,并以該點為界,將曲線分為兩部分,對這兩部分重復(fù)使用上述操 作。從基本思想可以看出該方法具有明顯的遞歸特性,是一種由整體到局部,由粗到細化簡 矢量圖形的方法。
Douglas-Peucker算法在不同的領(lǐng)域中獲得了廣泛的應(yīng)用。例如,申請?zhí)枮?200810243866的專利申請中應(yīng)用該算法實現(xiàn)了一種電子地圖數(shù)據(jù)處理方法,該應(yīng)用中直接 采用了 Douglas-Peucker算法進行矢量數(shù)據(jù)壓縮,沒有考慮Douglas-Peucker算法自身的 缺陷(化簡后結(jié)果可能存在自相交,化簡閾值的適當(dāng)選取等問題)和在特定應(yīng)用上的局限 性。矢量圖形化簡的根本目的是在保持圖形基本特征的前提下,通過減少構(gòu)成圖形的 點的數(shù)量,完成圖形的化簡。對于化簡過程,應(yīng)遵循“三個保持”一是保持化簡前后圖形的 相似性,即保持彎曲形狀的基本特征;二是保持彎曲特征轉(zhuǎn)折點的精確性;三是保持不同 地段彎曲程度的對比。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種更加完備、精確、通用性更強的電子海圖矢量圖形簡 化方法。本發(fā)明的目的是這樣實現(xiàn)的(1)提取給定的矢量圖形的凸殼;(2)將由凸殼劃分出的圖形凸部和凹部分類處理,分別進行化簡;(3)直接應(yīng)用Douglas-Peucker算法對圖形凸部進行化簡;圖形凹部采用逐層化 簡的方法進行化簡,對于存在復(fù)雜彎曲的凹部,應(yīng)用基于直線段繞動方向的彎曲識別方法 識別出不同層次的彎曲,然后對每一層次的彎曲分別進行化簡,直至所有彎曲處理完畢;(4)、增加一個化簡閾值,實施對凹部的化簡。本發(fā)明是針對應(yīng)用基本Douglas-Peucker算法進行矢量圖形化簡時可能出現(xiàn)的 圖形自相交和圖形凹部保形性差等缺陷,結(jié)合電子海圖中矢量圖形化簡的需要,設(shè)計的新 的矢量圖形化簡方法。本發(fā)明中提供的方法區(qū)別于現(xiàn)有方法的顯著特征在于采用提取凸 殼和改進Douglas-Peucker算法的方法有效地保證了化簡后的圖形整體和局部(特別是凹 部)保形性;采取基于直線段繞動方向的彎曲識別方法和彎曲逐層化簡的方式,可以從根 本上解決化簡后圖形可能出現(xiàn)的自相交問題。該方法包含以下要點1、提取給定的矢量圖形的凸殼。由于凸殼能夠較好的描述圖形的基本幾何形態(tài), 因此首先對待化簡的圖形建立凸殼,利用凸殼識別圖形的整體形態(tài)特點,特別地,凸殼能夠 表達出圖形的彎曲特性;2、將由凸殼劃分出的圖形凸部和凹部分類處理,分別進行化簡。由于描述矢量圖 形的數(shù)據(jù)點大部分集中于圖形的凹部,用于詳細描述圖形的彎曲形態(tài)特征,而凸部數(shù)據(jù)點 數(shù)較少,因此可直接應(yīng)用Douglas-Peucker算法對圖形凸部進行化簡。對于凹部,按要點3 所述方法化簡;3、圖形凹部采用逐層化簡的方法進行化簡。對于存在復(fù)雜彎曲的凹部,可應(yīng)用基 于直線段繞動方向的彎曲識別方法(該方法的實現(xiàn)過程見具體實施方式
部分)識別出不同 層次的彎曲,然后對每一層次的彎曲分別進行化簡,直至所有彎曲處理完畢。通過這種方法 可以有效的避免化簡后的圖形出現(xiàn)自相交現(xiàn)象。4、增加一個化簡閾值,實施對凹部的化簡。應(yīng)用改進Douglas-Peucker算法對圖 形凹部進行化簡時,在傳統(tǒng)算法的基礎(chǔ)上增加一個寬度閾值控制化簡進程。由彎曲深度和寬度兩個閾值共同決定描述彎曲數(shù)據(jù)點的取舍。本發(fā)明的有益效果體現(xiàn)在對矢量圖形的簡化,主要是針對圖形凹部的化簡處理。本發(fā)明中,通過構(gòu)建圖形的凸殼和采用基于直線段繞動方向的彎曲識別方法可以逐層分解 出圖形凹部的彎曲,針對每一個彎曲分別進行化簡,可以準(zhǔn)確地度量彎曲的特征并進行最 大限度且合理的化簡,從而提高了化簡后圖形的保形性。本發(fā)明采用基于直線段繞動方向 的方法識別出的每一個彎曲都是星形區(qū)域,而由充分的理論證明,星形區(qū)域進行化簡后不 會出現(xiàn)自相交,因此本發(fā)明有效地解決了傳統(tǒng)化簡算法易出現(xiàn)自相交的缺陷。
圖1為本發(fā)明所述矢量圖形簡化方法的流程圖。圖2A-2B用于解釋本發(fā)明中采用的多邊形凸殼生成算法的實現(xiàn)步驟。圖3用于說明基于直線段擾動方向識別曲線彎曲的方法。圖4A-4F分別為島嶼原形(4A)、島嶼凸殼(4B)和采取不同化簡閾值的化簡結(jié)果圖 (4C-4F)。圖5為C10013海圖島嶼數(shù)據(jù)化簡結(jié)果的局部圖。
具體實施例方式下面結(jié)合附圖舉例對本發(fā)明做更詳細地描述本發(fā)明公開了一種電子海圖矢量圖形化簡方法,該方法的具體實施內(nèi)容包括構(gòu)建 凸殼,基于直線段繞動方向識別彎曲和應(yīng)用提出的改進Douglas-Peucker算法對矢量圖形 逐層化簡等關(guān)鍵內(nèi)容。下面將按照化簡流程詳述本發(fā)明提出的技術(shù)方案的具體實施方式
, 化簡流程如圖1所示。該實施方式主要包含以下幾個關(guān)鍵步驟一、構(gòu)建凸殼凸殼是數(shù)據(jù)點集的自然極限邊界,為包含所有數(shù)據(jù)點的最小凸多邊形,連接任意 兩點的線段必須完全位于該凸多邊形中,同時區(qū)域的面積也達到最小值。關(guān)于凸殼的計算 方法很多,可參見計算幾何、計算機圖形學(xué)方面的書籍,下面介紹本發(fā)明中應(yīng)用的多邊形凸 殼生成算法,該算法包含以下兩個步驟步驟1 對于給定的多邊形,找出所有數(shù)據(jù)點中縱坐標(biāo)最小的點,記為Pl。設(shè)從P1 開始多邊形沿順時針方向的有向頂點序列為(P1, P2,…,pn)。步驟2 搜索凸殼頂點記?1為第一個凸殼上的頂點,然后從有向線段P1P2開始查 找,若多邊形的所有頂點均在有向線段P1P2的右側(cè),則P2也為凸殼頂點,否則順次查找有向 線段P1P3,P1P4,…,直至找到滿足多邊形的所有頂點均在P1Pi的右側(cè)的點Pi,則記Pi為凸 殼頂點,然后Wpi開始,按照上述和P1開始同樣的步驟順次查找凸殼頂點,直到返回P1點 為止,依次記錄所有凸殼頂點,并順次連線就完成了多邊形凸殼的生成過程。如圖2A和圖 2B,初始多邊形頂點為(Pl,P2,…,P9),生成的凸殼頂點為(Ρ^Ρ^Ρ^Ρ^Ρ^ΡΚ!)。二、基于直線段繞動方向識別彎曲彎曲的識別方法有很多種,例如基于拐點識別彎曲和采用斜拉式彎曲劃分的方法 識別彎曲等。不同的彎曲識別方法適用于不同的應(yīng)用環(huán)境。針對電子海圖中矢量圖形簡化 的要求和特點,應(yīng)用基于直線段繞動方向的方法識別彎曲。在海圖中由一系列連續(xù)的數(shù)據(jù)點描述矢量圖形,規(guī)定這些數(shù)據(jù)點按照順時針的順序組成了一個點集C= {P1;P2,...,Plri, pn},其中P1S曲線的起點,PnS曲線的終點。P1和Pn兩點重合,表示該點集是一條閉合的 曲線。規(guī)定對 于給定曲線S = (v0, . . . , vn) (0 ^ η <°o ), Sk = (vi ...,Vj) e S,(i < j),如果結(jié)點Vi,、與結(jié)點vi+1,…,Vy1所在直線段的繞動方向相反,則Sk就是曲線S的 一個彎曲,結(jié)點Vi是該彎曲的起點,結(jié)點\是該彎曲的終點。圖3中,曲線由Pl,p2,…,P12共12個點組成?!?+ ”和“_”分別表示曲線上一條 后繼直線段相對于當(dāng)前直線段的兩個不同繞動方向。不失一般性,設(shè)定向順時針方向繞動 為“ + ”,例如P2點處;向逆時針方向繞動為“-”,例如P3點處。則以繞動點方向發(fā)生變化的 點處作為分界點,可以劃分出不同彎曲。如圖3,點p2,P3, P4, P5, P6構(gòu)成了一個彎曲;點P8, P9,Pltl,P11構(gòu)成了另一個彎曲。三、圖形凹部(彎曲)的逐層化簡過程凸殼將矢量圖形劃分出了一系列的凸部和凹部,我們將凸部和凹部劃分開來分別 進行化簡處理。對于凸部,可以直接采用Douglas-Peucker算法進行化簡。對于凹部,由于 存在復(fù)雜彎曲的情況,需要運用(2)中描述的基于直線段繞動方向的彎曲識別方法識別出 不同層次的彎曲,然后對每一層次的彎曲分別進行化簡,直至所有彎曲處理完畢。曲線凹部 化簡的具體實現(xiàn)步驟詳述如下步驟1 對于給定的曲線進行彎曲劃分,識別出第一層次的彎曲;步驟2 判斷彎曲的個數(shù)是否大于1,若否,則該曲線組成的彎曲是一個簡單彎曲, 直接化簡即可。否則,對于每一個彎曲分別進行化簡,并記錄每一個數(shù)據(jù)點的處理信息(是 否在化簡后保留)。步驟3 第一層次的彎曲化簡后,遍歷曲線上沒有被處理的點,再次進行彎曲識 另IJ,劃分出下一層次的彎曲,然后按照步驟2中描述的方式再次化簡。步驟4:重復(fù)上述化簡過程,直至所有數(shù)據(jù)點均被處理,完成了整個化簡過程。四、改進Douglas-Peucker算法的實現(xiàn)過程本發(fā)明中在設(shè)計Douglas-Peucker化簡算法實現(xiàn)過程中,發(fā)現(xiàn)如果不記錄中間的 距離最大頂點,會造成單個數(shù)據(jù)在循環(huán)過程中的多次判斷,增加了算法實現(xiàn)的時間復(fù)雜性。 為了克服這個問題,在設(shè)計算法實現(xiàn)過程中將判斷所得的中間最大距離頂點保存起來,這 樣可以較少算法的運算量,提高算法的執(zhí)行效率。另外,根據(jù)電子海圖矢量圖形簡化的需 要,在Douglas-Peucker化簡算法實現(xiàn)過程中增加曲線彎曲寬度的限制,即將曲線寬度作 為一個閾值用于限定曲線化簡結(jié)果。滿足以上兩點要求的改進算法實現(xiàn)過程描述如下(1)設(shè)矢量曲線由離散點列(PQ,P1,-,pn)表示,用數(shù)組T存放特征點列,將起點 P0和末點Pn按順序存入T的首位和末尾,令A(yù) — P(1,B — pn,連接AB ;(2)判斷線段AB之間的距離是否大于給定的寬度閾值,若否,轉(zhuǎn)(4),若是,在AB 之間的點列中尋找與線段AB具有最大距離的點,若存在滿足條件的點,則轉(zhuǎn)(3),否則轉(zhuǎn) (5);(3)判斷該點到線段AB的距離是否大于給定的高度閾值,若是,設(shè)該點為C,并按 其順序存入T中,令B —C,返回⑵;(4)在AB之間的點列中尋找與線段AB具有最大距離的點,若該點到線段AB的距離大于給定的高度閾值并且此點在有向線段AB的左側(cè),設(shè)該點為C,并按其順序存入T中, 令B —C,返回(2);(5)判斷B是否為pn,若否,令A(yù) — B,B — T‘ (T的下一個特征點),連接AB,返回 (2);(6)將A、B存入特征點列中,結(jié)束。依照以上闡述的具體實施方式
,提取圖號為C10015的電子海圖中海壇島的數(shù)據(jù) 如圖4A所示。該島嶼由534個離散的原始矢量數(shù)據(jù)點描述。圖4B中虛線為該島嶼的凸殼。 選取不同的深度閾值和寬度閾值對該島嶼進行化簡操作,結(jié)果如圖4C-4F所示。表1不同化簡閾值下海壇島化簡結(jié)果統(tǒng)計表
為更進一步說明本發(fā)明提出的電子海圖矢量圖形簡化方法的有效性和實用性,在 主頻為2. 8GHz,內(nèi)存為4G的電子計算機上,選取比例尺為1 100萬的C10013海圖進行不 同閾值下的全圖島嶼數(shù)據(jù)化簡,化簡結(jié)果見表2。圖5為深度閾值和寬度閾值分別選取為 Ikm和1. 5km時該圖島嶼化簡結(jié)果的局部圖。表2不同化簡閾值下C10013海圖全圖島嶼化簡結(jié)果統(tǒng)計表
效果分析仔細分析表2中的化簡結(jié)果數(shù)據(jù)可以看出,島嶼數(shù)據(jù)點化簡的比率與 化簡時選取的閾值密切相關(guān)。閾值選取的越大,化簡后數(shù)據(jù)點保留的越少,化簡率越高,但 島嶼的保形性也越差。因此,在實際應(yīng)用中,應(yīng)該根據(jù)不同的應(yīng)用需求,結(jié)合具體情況通過 大量的試驗分析,確定滿足應(yīng)用條件的適當(dāng)閾值。從圖5可以清晰的看到,應(yīng)用本發(fā)明提出 的電子海圖矢量圖形簡化方法進行矢量圖形化簡,可以有效的保證矢量圖形的基本幾何形 態(tài)不變,化簡后的幾何圖形空間拓撲關(guān)系和化簡前一致。并且應(yīng)用本發(fā)明提出的方法進行 矢量圖形化簡可以有效的避免化簡結(jié)果出現(xiàn)自相交和互相交的可能性。
權(quán)利要求
一種電子海圖矢量圖形簡化方法,其特征是(1)提取給定的矢量圖形的凸殼;(2)將由凸殼劃分出的圖形凸部和凹部分類處理,分別進行化簡;(3)直接應(yīng)用Douglas-Peucker算法對圖形凸部進行化簡;圖形凹部采用逐層化簡的方法進行化簡,對于存在復(fù)雜彎曲的凹部,應(yīng)用基于直線段繞動方向的彎曲識別方法識別出不同層次的彎曲,然后對每一層次的彎曲分別進行化簡,直至所有彎曲處理完畢;(4)、增加一個化簡閾值,實施對凹部的化簡。
2.根據(jù)權(quán)利要求1所述的電子海圖矢量圖形簡化方法,其特征是所述提取給定的矢量 圖形的凸殼的方法包括步驟1 對于給定的多邊形,找出所有數(shù)據(jù)點中縱坐標(biāo)最小的點,記為Pl,從?1開始多邊 形沿順時針方向的有向頂點序列為(P1, P2,…,Pn);步驟2 搜索凸殼頂點記P1為第一個凸殼上的頂點,然后從有向線段P1P2開始查找, 若多邊形的所有頂點均在有向線段P1P2的右側(cè),則P2也為凸殼頂點,否則順次查找有向線 段P1P3,P1P4,…,直至找到滿足多邊形的所有頂點均在P1Pi的右側(cè)的點Pi,則記Pi為凸殼 頂點,然后從Pi開始,按照上述和P1開始同樣的步驟順次查找凸殼頂點,直到返回P1點為 止,依次記錄所有凸殼頂點,并順次連線就完成了多邊形凸殼的生成過程。
3.根據(jù)權(quán)利要求2所述的電子海圖矢量圖形簡化方法,其特征是所述圖形凹部采用逐 層化簡的方法進行化簡的方法包括步驟1 對于給定的凹部曲線進行彎曲劃分,識別出第一層次的彎曲;步驟2 判斷彎曲的個數(shù)是否大于1,若否,則該曲線組成的彎曲是一個簡單彎曲,直接 化簡;否則,對于每一個彎曲分別進行化簡,并記錄每一個數(shù)據(jù)點的處理信息即是否在化簡 后保留;步驟3:第一層次的彎曲化簡后,遍歷曲線上沒有被處理的點,再次進行彎曲識別,劃 分出下一層次的彎曲,然后按照步驟2中描述的方式再次化簡;步驟4 重復(fù)步驟1-3的化簡過程,直至所有數(shù)據(jù)點均被處理,完成了整個化簡過程。
4.根據(jù)權(quán)利要求3所述的電子海圖矢量圖形簡化方法,其特征是所述 Douglas-Peucker算法為改進算法,其實現(xiàn)過程描述如下1)設(shè)矢量曲線由離散點列(PyP1,…,Pn)表示,用數(shù)組T存放特征點列,將起點Ptl和 末點Pn按順序存入T的首位和末尾,令A(yù) — pQ,B — pn,連接AB ;2)判斷線段AB之間的距離是否大于給定的寬度閾值,若否,轉(zhuǎn)4),若是,在AB之間的 點列中尋找與線段AB具有最大距離的點,若存在滿足條件的點,則轉(zhuǎn)3),否則轉(zhuǎn)5);3)判斷該點到線段AB的距離是否大于給定的高度閾值,若是,設(shè)該點為C,并按其順序 存入T中,令B —C,返回2);4)在AB之間的點列中尋找與線段AB具有最大距離的點,若該點到線段AB的距離大 于給定的高度閾值并且此點在有向線段AB的左側(cè),設(shè)該點為C,并按其順序存入T中,令 B — C,返回 2);5)判斷B是否為pn,若否,令A(yù)—B,B —T',連接AB,返回2);6)將A、B存入特征點列中,結(jié)束。
全文摘要
本發(fā)明提供的是一種電子海圖矢量圖形簡化方法。(1)提取給定的矢量圖形的凸殼;(2)將由凸殼劃分出的圖形凸部和凹部分類處理,分別進行化簡;(3)直接應(yīng)用Douglas-Peucker算法對圖形凸部進行化簡;圖形凹部采用逐層化簡的方法進行化簡,對于存在復(fù)雜彎曲的凹部,應(yīng)用基于直線段繞動方向的彎曲識別方法識別出不同層次的彎曲,然后對每一層次的彎曲分別進行化簡,直至所有彎曲處理完畢;(4)增加一個化簡閾值,實施對凹部的化簡。本發(fā)明是一種在保持矢量圖形幾何形態(tài)不變的前提下,通過減少描述矢量圖形數(shù)據(jù)點的方式簡化矢量圖形的方法。有效地解決了傳統(tǒng)化簡算法易出現(xiàn)自相交的缺陷。
文檔編號G09B29/00GK101887451SQ20101020366
公開日2010年11月17日 申請日期2010年6月21日 優(yōu)先權(quán)日2010年6月21日
發(fā)明者劉廠, 張振興, 沈志峰, 郝燕玲, 高峰 申請人:哈爾濱工程大學(xué)