常用拓撲關係描述:
IntersectsDisjointContainsWithinEqualOverlapTouchCross
1)9交叉模型的定義
已知兩個幾何對象A,B(geos中稱Geometry),如何描述A與B的拓撲關係?就交叉模型給出的解決方案是通過描述A與B的內部(Interior , I),邊界(Boundary , B),外部(Exterior , E)之間的關係來表達A與B的拓撲關係,內部(I)、邊界(B)、外部(E)三者的關係構成了一個3×3的交集矩陣:
2)維度 Dimension
dim是dimension的縮寫,指的是維度。在計算幾何中,維度是幾何要素的重要信息之一,通過維度,可以進行一些判斷。比如,高維度的要素(比如線),是不可能within在低維度的要素中的(比如點)。再比如,兩個要素的交集的維度不會超過兩者維度中最小者。在geos中(以及其他類似系統):
多邊形的維度是2,含組合多邊形,帶洞多邊形等。折線的維度為1,含多線。點的維度為0,含多點。空集(無交集)維度為F。講到這裡,我們有必要了解不同類型的幾何對象的內部,邊界,外部各指的是什麼。
3)內部,邊界,外部的定義
對於多邊形,內部是多邊形的外環和內環圍起來的面部分,邊界由內環和外環構成,外部是除內部和邊界以外的空間其他所有部分。
對於線要素,邊界是線首尾節點(中間節點不算),內部是線上除了首尾節點之外的部分。外部是空間除了內部與邊界的部分。
點要素的內部是點本身,其邊界是空集,外部是除了點本身外的空間其他部分。當然,對於點與其他要素的拓撲關係,我們通常習慣用「點在對象上」、「點不在對象上」進行描述,而且,在空間關係的計算上,也會按照這樣的思路設計算法。我的意思是,對於點的拓撲關係處理一般先判斷「點是否在對象上」然後填充9交叉模型矩陣的,而不是像多邊形之間的關係判斷。
4)9交叉模型的布爾形式
9交叉模型交集矩陣的定義域為{F,0,1,2},那麼一共可能有49種可能的拓撲關係。簡單的考慮到外部與外部的交集的維度一定是2 ,那麼可能的拓撲關係仍有89種,考慮很多種關係是矛盾的,剩下的組合仍然很多。這與我們希望直觀,簡單的表達拓撲關係的目標相差甚遠。實際上,常見的拓撲關係描述符大概10種左右。為了方便描述這些關係,可以對矩陣的定義域做補充:
0,1,2表示非空,用T進行表示;空集仍然用F表示;引入*表示是什麼都可以,geos中為「DONTCARE」我們常用的拓撲關係描述符,就是採用上述6種類型描述出來的。
5)常用拓撲關係描述
Intersects
相交是指兩對象的內部或邊界存在交集,對應下面四種Intersection Matrix
就是說 對應Interior,Boundary的2×2的部分任意一個單元是T就可以了,其他的都「DONTCARE」。注意,這些矩陣都是對稱的。
Disjoint
相離就是不相交,因此對應於相交的「Interior,Bountry 任意存在交集」,相離的定義是Interior,Boundary均不存在交集。這個矩陣也是對稱的。
Contains
A.Contains(B)表示B完全在A內部。即A,B的interior相交並且 B的Interior與Boundary均不與A的exterior相交。
Within
Within 與Contains互為轉置。A.Contains(B) = B.Within(A)。為什麼叫互為轉置呢,這是因為within的相交矩陣是Contains矩陣的轉置就好了。
Equal
Equal表示的是A和B的形狀完全相同(但是,不是說他們所有的坐標都是完全一樣的!A或者B都可能有冗餘的坐標,比如多點共線)。Equal的交集矩陣是內部相交,但任意一方的內部與邊界均不與對方的外界相交
Overlap
疊置判斷對A與B的維度有要求,要求A與B的維度相同,並且要求A與B的內部的交集的維度與AB的維度相同。因為多邊形(面)之間的交集,點之間的交集均與他們的維度相同,線之間的交集可能會是點,線兩種情況,所以特別將線與面、點之間的矩陣進行了區分,要求線的內部交集為線。
面、點的交集矩陣:
線的交集矩陣:
Touch
Touch表示的是兩個幾何要素之間的臨接關係。touch關係的要點是:
兩個元素的內部(interior)不能有交集,但是內部與邊界,邊界與邊界可以有交集。
參與的兩種元素不能同時為點類型。(點沒有邊界,內部與內部不相交變成相離了)三個矩陣中,前兩個互為轉置關係,最後一個是對稱矩陣。所以說這個關係也是對稱的。
Cross
穿越的定義是A與B的內部有交集,但交集的維度要比A與B最大的維度要小。按照這個標準,點點與面面不可能存在cross關係,因為他們內部的交集的維度與他們的維度是相同的。同樣,對於線線的交集要區別對待,指定其內部的交集為0(而不是1)。
非線線交集矩陣:
線線交集矩陣:
6)對拓撲關係的分析:從矩陣的角度
從上述9交叉模型矩陣的表達上,我們已經能夠分析出很多有趣的信息了。
1.如果交集矩陣是對稱的,那麼對應的拓撲關係滿足交換律的。A.Relation(B)=B.Relation(A)
可以交換的拓撲關係有(對應矩陣對稱):
Intersects,Disjoint,Equal,Overlap,Touch,Cross(線線)
不可以交換的拓撲關係有:
Contains,Within,Cross(非線線)
2.如果兩個關係矩陣互為轉置,那麼這兩個關係可以調換位置A.Relation1(B)=B.Relation2(A)。滿足條件的關係有
Contains,Within
3.如果兩個矩陣互補,那麼兩種關係也是互斥關係。滿足條件的有
Intersects,Disjoint
4.拓撲關係之間的關係
上述8種關係並全不是互斥的,元素A,B可以同時滿足多種拓撲關係。這些拓撲關係的「關係」更適合使用文氏圖來描述