在知識傳播途中,向涉及到的相關著作權人謹致謝意!
拓撲關係
「拓撲空間關係」
-
一種對空間結構進行明確定義的數學方法
-
拓撲空間關係信息是空間分析、輔助決策等的基礎,也是GIS區別於CAD(計算機輔助設計)等的主要標誌
-
對於拓撲關係的自動建立問題,研究的焦點是如何提高算法與過程的效率和自動化程序
數據結構
「拓撲數據結構」
-
具有拓撲關係的矢量數據結構就是拓撲數據結構
-
拓撲數據結構是地理信息系統分析和應用功能所必須的,它描述了基本空間目標點、線、面之間的關聯、鄰接和包含關係
基本數據結構 | 說明 | 數據結構 | 異常 |
---|---|---|---|
拓撲結點 | 結點用來檢測弧段與弧段的連接關係和多邊形特徵是否能正確地完成 | 「懸掛結點」只與一條弧段相連接的起點或終點 | |
拓撲弧段 | 弧段指處於兩個結點之間的點序列串,並且具有方向 | 「懸掛弧段」起始結點或終止結點只與一條弧段相關聯 | |
拓撲面 | 由一條或若干弧段首尾相連接而成的邊線所包含的區域 | ||
三者關係 |
拓撲關係的自動建立
「拓撲關係自動生成算法的一般過程」
-
沒有相交或自相交的弧段:弧段處理,使整幅圖形中的所有弧段,除在端點處相交外,沒有其他交點
-
結點匹配,建立結點、弧段關係
-
建立多邊形,以左轉算法或右轉算法跟蹤,生成多邊形,建立多邊形與弧段的拓撲關係
-
建立多邊形與多邊形的拓撲關係。調整弧段的左右多邊形標誌號。多邊形內部標識號的自動生成
「拓撲關係自動生成算法的其他過程」
- 弧段兩端角度的計算
- 懸掛結點和懸線的標識
- 多邊形面積計算
- 點在多邊形內外的判別
弧段的預處理
「弧段預處理」使得弧段不存在自相交和相交現象
直線段相交的判斷方法
自相交弧段處理
弧段相交打斷處理
「弧段相交打斷處理」弧段與弧段相交關係的判斷,可以採用兩兩判斷的方法,即要進行n(n-1)/2次判斷
- 取出第一條弧段,與其他n-1條弧段進行相交判斷
- 求得交點後,將交點分別插入第一條弧段和與其相交弧段的對應位置上,並記錄位置
- 將第一條弧段與所有其他弧段的相交關係判斷完畢後,通過記錄下的交點位置將第一條弧段分割,然後依次取出下一條弧段進行同樣的處理,直到所有的弧段處理完畢
「減少工作量」在判斷兩條弧段的關係時,應儘可能地減少計算量,可採用類似於快速排斥+跨立實驗的計算方法減少工作量
「C++實現」參見《地理信息系統算法基礎》P109
結點匹配算法
處理完弧段之後,就可以進行結點匹配了。
「結點匹配」把一定容差範圍內的弧段結點合併稱爲一個結點,其座標值可以是取多個結點的平均值,或者選中一個結點作爲所有結點的中心座標
「結點匹配的思路」每條弧段對應着兩個結點,每個結點在合併前對應着一條弧段,在合併結點的過程中,需要將結點對應的弧段也合併在一起
- 將所有的結點加入結點集合
- 從結點集合中取出一個結點作爲中心點,從餘下的結點中找出容差範圍內的其他結點,將這些結點所對應的弧段加入中心結點的弧段集合中,同時將弧段的對應結點變爲中心結點,並修改弧段的相應座標
「C++實現」參見《地理信息系統算法基礎》P113
建立拓撲關係
計算結點關聯弧段的方位角,並按由小到大排序
「弧段的方位角」每個結點都關聯有若干條弧段,結點、弧段的頭結點、爲弧段的尾結點,設結點爲N,則弧段的方位角定義爲:結點N與弧段上與其最接近的結點V的連線與X軸的正向夾角
「算法」
左轉算法
「左轉算法基本思路」從組成多邊形邊界的某一條弧段開始
- 如果該弧段的方向角最小或介於同一結點的其他弧段方向角之間,則逆時針方向尋找最小夾角偏差所對應的弧段爲多邊形的後續弧段
- 如果該弧段與x軸正向夾角爲最大,則從該弧段的同一結點出發的其他弧段中,方向角最小的弧段是該多邊形的後續弧段
「算法描述」參見《地理信息系統算法基礎》P115
島的判斷
「島的判斷」指找出多邊形互相包含的情況,即尋找複雜多邊形。找到島後纔可以完成多邊形的拓撲關係的建立
「算法描述」參見《地理信息系統算法基礎》P116