專利名稱:基于線段拓撲關系的多邊形壓縮方法
1/4頁基于線段拓撲關系的多邊形壓縮方法技術領域
本發明屬于電子地圖領域,特別是涉及一種導航電子地圖數據格式轉換過程。
技術背景
在制作電子地圖數據格式過程中,為了削減數據容量,通常會對各種地圖要素進行形點壓縮處理,以刪除多余形點。在對多邊形數據進行形點壓縮時,一般的壓縮算法都只針對單個多邊形進行處理,對于形變的控制也只能基于單個圖形,無法防止相鄰的多個多邊形之間由于個體形變的不同造成的邊界處的縫隙,使得壓縮后的多個多邊形無法精密的吻合在一起,造成顯示效果不佳。相關名詞解釋
1.線段
連接不在同一位置的兩點之間的組成部分,成為線段。
2.折線段
由若干條線段依次首尾相連組成的線狀圖形,將其稱為折線段。折線段的首尾點可以相同,也可以不相同。
3.形點壓縮
為了在地圖要素的形狀和數據容量之間取得一個平衡,需要用形點壓縮算法去除不必要的形狀點。現在常用的形點壓縮算法有道格拉斯形點壓縮算法和距離限差形點壓縮算法。
4.多邊形
導航地圖中為了描述面狀地圖要素(如湖泊、公園、行政區等)所使用的幾何圖形,由一串坐標點記錄,表示每兩個相鄰坐標點之間的線段所圍成的圖形。
5.多邊形的公共邊(界)
如果一條線段(或折線段)被兩個多邊形共有,則稱這條線段(或這線段)是這兩個多邊形的公共邊界。每條公共邊界至少被兩個多邊形共有,而兩個(或多個)多邊形之間可以有多條公共邊界。
6.多邊形的部分公共邊(界)
如果一條線段(或折線段)只有一部分被兩個(或多個)多邊形共有,則稱這條線段(或折線段)是這兩個(或多個)多邊形的部分公共邊界。
7.多邊形的非公共邊(界)
某個多邊形不與其他多邊形形成公共邊界的剩余部分,都稱為這個多邊形的非公共邊界。
8.多邊形的縫隙(裂縫)
形點壓縮之前,兩個(或多個)多邊形的公共邊界由于坐標完全一致,所以是緊密相鄰的;形點壓縮之后,由于一般的形點壓縮算法是對整個多邊形的形點串進行處理,所以,兩個(或多個)多邊形在公共邊界上對形點的刪除情況可能不同,導致原本坐標一致的公共邊界不在完全緊密相鄰,則稱為這兩個(或多個)多邊形之間有縫隙(裂縫)存在。
發明內容
本發明所提供的壓縮方法,針對有鄰接關系的多個多邊形進行統一的線段化,并根據線段的拓撲關系對多邊形分段壓縮,能消除一般壓縮算法中由于個體壓縮結果的差異而造成的縫隙問題。
本發明所要解決的問題是提供一種多邊形的無縫壓縮方法,使用該方法在導航電子地圖轉換過程中,能在大量減少或消除由于形點壓縮而產生的多邊形之間的縫隙。
為了實現本發明的技術效果,本發明提供一種用于導航地圖中形點壓縮后多邊形的公共邊界區分,包括以下步驟
步驟一、多邊形拆解,將多邊形變換成以線段進行描述的方式;
步驟二、公共邊界識別,將多邊形之間的公共邊界進行識別;
步驟三、多邊形的邊界拼接,將上述步驟多邊形拆解后的線段進行拼接,形成新的邊界;
步驟四、折線段構成的邊界進行分段壓縮;將拼接后的若干條折線段分別使用形點壓縮算法進行壓縮;
步驟五、多邊形形狀還原,按照多邊形的原始順序,用壓縮后的折線段組成新的多邊形數據。
優選的,上述步驟二中識別多個多邊形之間的公共邊界線段,如果是有部分邊界的情況,會增加形點形成新的公共邊界;
優選的,上述步驟三在步驟二的基礎上,將基于線段描述方式的多邊形按照其原始順序進行線段拼接,形成若干條折線段,這些折線段為邊界;其中,公共邊界至少為兩個多邊形共有,非公共邊界必須為單個多邊形獨有。
優選的,上述步驟二具體包括
21)通過比較兩個多邊形的外接矩形是否有交集,來判斷兩多邊形是否相鄰,如果兩多邊形的外接矩形有交集,則說明它們相鄰,才進行后續處理,否則跳過這一對多邊形, 繼續判斷下一對多邊形;
22)對兩個多邊形的每兩條線段,通過比較坐標判斷兩條線段是否存在公共部分;
23)如果兩條線段不是完全包含,而只有部分公共區間,則通過增加形點的方式, 使原來的一條線段分裂為非公共部分和完全公共部分;對于公共部分,并將當前的兩個多邊形加入該公共部分的共有多邊形集合內;
24)將兩個多邊形的線段表示方式進行更新,記錄每條線段是否是公共線段。
優選的,上述步驟三具體包括
31)對于按線段表示的多邊形,將其相鄰的非公共線段進行合并,成為一條非公共邊界;
32)將其相鄰的公共線段也進行合并,成為一條公共邊界,其中合并的前提是相鄰的2條公共線段所包含的共有多邊形集合完全相同。
優選的,上述步驟四中采用任意指定的形點壓縮算法去掉不必要的形點。
優選的,上述步驟五是按照步驟三中合并完成后的邊界順序,依次將每條邊界的形點串連起來,得到還原后的多邊形的形點信息。
本發明的優點是當存在有多個多邊形,且它們之間有公共邊界或部分公共邊界時,能在形點壓縮時有效的減少或消除這些邊界上產生的縫隙。
圖1為本發明對多邊形進行公共邊界識別的實施例示意圖2為本發明對多邊形進行邊界拼接的實施例示意圖3為本發明實施流程圖4為本發明實施效果圖。
具體實施方式
為了便于本領域普通技術人員理解和實施本發明,下面結合附圖及具體實施方式
對本發明作進一步的詳細描述。
如圖3所示,本發明的實現方式,在開始之后包括以下步驟
1)多邊形拆解
多邊形拆解目的是為了將輸入的以形點串方式描述的多邊形數據變換成基于線段描述的方式,為后續進行邊的相交、重合等判斷提供便利。
對于所有的多邊形,從多邊形的首形點開始,按形點的排列順序將每2個相鄰形點組成一個線段并記入多邊形的線段列表中。
2)公共邊界識別
公共邊界識別的目的是為了將多邊形集合當中任意兩個(或多個)多邊形的所有公共邊界標記出來,以方便在形點壓縮時,對公共邊界和非公共邊界分別壓縮。該過程初始時,所有多邊形的線段列表中的所有線段都被標記為非公共邊界。對于公共邊界,要記錄其所屬的所有多邊形列表。
首先從多邊形集合重取一對尚未處理過的多邊形,判斷兩個多邊形的外接矩形是否有交集,如果有交集存在則繼續,否則跳過這一對多邊形,重新取一對新的多邊形進行比較。
依照多邊形的線段組成順序從兩個多邊形中各取一條線段進行處理,如果任一條線段被標記為公共邊界,則繼續判斷這條公共邊界的共有多邊形記錄中是否包含正在處理的兩個多邊形,如果兩個多邊形均被包含,則說明該公共邊已經是當前兩個多邊形的公共邊,跳過該線段,繼續下一條。
對這兩條線段進行交點計算,可能得到以下結果
a)0個交點,說明2個線段不相交,沒有公共部分
b)l個交點,說明2個線段相交,但不共線,也沒有公共部分
c)⑴個交點,說明2個線段相交,且共線,存在有公共部分
如果兩條線段沒有公共部分,則繼續處理下一對線段;如果兩條線段有公共部分, 則要對這兩條線段分別進行分割,為了簡化描述,以下僅對兩條線段進行描述。如圖1,兩個多邊形的線段分為為Sl和S2
1) Sl和S2有一部分公共區間,且Sl和S2均不完全包含對方。公共邊的標識如圖5ICase 1.
2) Sl完全包含S2,且兩線段無公共端點,公共邊的標識如圖lCase2.
3) Sl完全包含S2,且兩線段有1個公共端點,公共邊的標識如圖ICase 3.
4) Sl和S2完全重合,公共邊的標識如圖ICase 4.
經過以上處理之后,多邊形的一條邊會被區分為公共邊界和非公共邊界,將兩個多邊形添加到每段公共邊界的共有多邊形列表中。如果Sl (或幻)處理前已經是公共邊界, 則遍歷其共有多邊形列表,將每個多邊形的線段Sl (或S2)替換為分割后的線段集合,并調整線段的排列順序,使其和所屬多邊形的線段排列順序一致。
如果已經處理完畢的一對線段存在公共區間,則下一對線段從替換后的第一條線段開始繼續進行公共邊界識別操作。
當兩個多邊形的線段序列均從頭到尾遍歷完成后,繼續處理下一對多邊形,直到所有多邊形處理完畢。
3)多邊形邊界拼接
多邊形邊界拼接的目的是為了將相鄰的公共邊界或非公共邊界盡可能多的連接成一個邊界,這樣能使形點壓縮最有效化。
從多邊形的第一條線段開始,依次取一條線段和前一條線段進行比較,并按照以下規則判斷是否可以合并
a)如果當前線段和前一條線段都是非公共邊界,則將兩條線段合并為一個非公共邊界。
b)如果當前線段和前一條線段都是公共邊界,則繼續比較兩者的共
有多邊形列表中包含的多邊形是否完全一致
i)如果兩者的共有多邊形相同,則將兩條線段合并為一個非公共邊界
ii)如果兩者的共有多邊形不同,則不進行合并
4)線邊界的分段壓縮
使用任意指定的形點壓縮算法,逐條邊界進行壓縮,以縮減多邊形的形點數量。對于公共邊界,由于在兩個多邊形中坐標是相同的,所以最終壓縮結果也完全相同,保證了不會產生縫隙。
5)多邊形的形狀還原
經過步驟4的處理,將壓縮后的邊界,按照組成多邊形的順序,依次將其形點記入到其形點集合中。
6)實施案例
參考圖4,使用一般的形點壓縮方法,在多邊形的交界處,會產生明顯的縫隙,而使用該方法處理過的多邊形則不會產生類似的問題。
以上所述,僅是用以說明本發明的具體實施案例而已,并非用以限定本發明的可實施范圍,舉凡本領域熟練技術人員在未脫離本發明所指示的精神與原理下所完成的一切等效改變或修飾,仍應由本發明權利要求的范圍所覆蓋。
權利要求
1.一種基于線段拓撲關系的多邊形壓縮方法,用于導航地圖中形點壓縮后多邊形的公共邊界區分,其特征在于包括以下步驟步驟一、多邊形拆解,將多邊形變換成以線段進行描述的方式; 步驟二、公共邊界識別,將多邊形之間的公共邊界進行識別;步驟三、多邊形的邊界拼接,將上述步驟多邊形拆解后的線段進行拼接,形成新的邊界;步驟四、折線段構成的邊界進行分段壓縮;將拼接后的若干條折線段分別使用形點壓縮算法進行壓縮;步驟五、多邊形形狀還原,按照多邊形的原始順序,用壓縮后的折線段組成新的多邊形數據。
2.如權利要求1所述的基于線段拓撲關系的多邊形壓縮方法,其特征在于所述步驟二中識別多個多邊形之間的公共邊界線段,如果是有部分邊界的情況,會增加形點形成新的公共邊界;
3.如權利要求1所述的基于線段拓撲關系的多邊形壓縮方法,其特征在于所述步驟三在步驟二的基礎上,將基于線段描述方式的多邊形按照其原始順序進行線段拼接,形成若干條折線段,這些折線段為邊界;其中,公共邊界至少為兩個多邊形共有,非公共邊界必須為單個多邊形獨有。
4.如權利要求1或2所述的基于線段拓撲關系的多邊形壓縮方法,其特征在于所述步驟二具體包括21)通過比較兩個多邊形的外接矩形是否有交集,來判斷兩多邊形是否相鄰,如果兩多邊形的外接矩形有交集,則說明它們相鄰,才進行后續處理,否則跳過這一對多邊形,繼續判斷下一對多邊形;22)對兩個多邊形的每兩條線段,通過比較坐標判斷兩條線段是否存在公共部分;23)如果兩條線段不是完全包含,而只有部分公共區間,則通過增加形點的方式,使原來的一條線段分裂為非公共部分和完全公共部分;對于公共部分,并將當前的兩個多邊形加入該公共部分的共有多邊形集合內;24)將兩個多邊形的線段表示方式進行更新,記錄每條線段是否是公共線段。
5.如權利要求1或3所述的基于線段拓撲關系的多邊形壓縮方法,其特征在于所述步驟三具體包括31)對于按線段表示的多邊形,將其相鄰的非公共線段進行合并,成為一條非公共邊界;32)將其相鄰的公共線段也進行合并,成為一條公共邊界,其中合并的前提是相鄰的 2條公共線段所包含的共有多邊形集合完全相同。
6.如權利要求1所述的基于線段拓撲關系的多邊形壓縮方法,其特征在于所述步驟四中采用任意指定的壓縮算法去掉不必要的形點。
7.如權利要求1所述的基于線段拓撲關系的多邊形壓縮方法,其特征在于所述步驟五是按照步驟三中合并完成后的邊界順序,依次將每條邊界的形點串連起來,得到還原后的多邊形的形點信息。
全文摘要
本發明提供一種基于線段拓撲關系的多邊形壓縮方法,包括1)多邊形拆解,將多邊形變換成以線段進行描述的方式;2)多邊形之間的公共邊界識別,將相鄰多邊形的公共邊界識別出來;3)多邊形的邊界拼接,將基于線段描述方式的多邊形進行線段拼接,形成若干條折線段;4)線邊界的分段壓縮,將拼接后的若干條折線段分別進行壓縮;5)多邊形形狀還原,按照多邊形的原始順序,用壓縮后的折線段組成新的多邊形數據。本發明提供的方法,當存在有多個多邊形,且它們之間有公共邊界或部分公共邊界時,能在形點壓縮時有效的減少或消除這些邊界上產生的縫隙。
文檔編號G09B29/00GK102522043SQ20111041195
公開日2012年6月27日 申請日期2011年12月12日 優先權日2011年12月12日
發明者朱敦堯, 王鵬 申請人:光庭導航數據(武漢)有限公司