DE-9IM 空間關係模型

Weltㅤ發表於2024-11-09

參考部落格:

空間拓撲關係描述:9交叉模型(DE-9IM) | 會飛的大象

DE-9IM 空間關係模型 - 烏合之眾 - 部落格園

DE-9IM 空間關係模型 與Boost Geometry Lib - SuperVan - 部落格園

簡述

DE-9IM 是Dimensionally Extended 9-Intersection Model的縮寫,它是Egenhofer在《point set topological spatial relations》中提出的,用於描述兩個二維幾何物件(點、線、面)之間的空間關係的一種模型,它使用一個 3 x 3 的矩陣來描述幾何關係類別(相交部分的維度)。

維度(Dimension)的定義

dim是dimension的縮寫,指的是維度。在計算幾何中,維度是幾何要素的重要資訊之一,透過維度,可以進行一些判斷。比如,高維度的要素(比如線),是不可能within在低維度的要素中的(比如點)。再比如,兩個要素的交集的維度不會超過兩者維度中最小者。在geos中(以及其他類似系統):

  1. 多邊形的維度是2,含組合多邊形,帶洞多邊形等。
  2. 折線的維度為1,含多線。
  3. 點的維度為0,含多點。
  4. 空集(無交集)維度為F。

講到這裡,我們有必要了解不同型別的幾何物件的內部,邊界,外部各指的是什麼。

內部,邊界,外部的定義

對於多邊形,內部是多邊形的外環和內環圍起來的面部分,邊界由內環和外環構成,外部是除內部和邊界以外的空間其他所有部分。

DE-9IM 空間關係模型

對於線要素,邊界是線首尾節點(中間節點不算),內部是線上除了首尾節點之外的部分。外部是空間除了內部與邊界的部分。

DE-9IM 空間關係模型

點要素的內部是點本身,其邊界是空集,外部是除了點本身外的空間其他部分。當然,對於點與其他要素的拓撲關係,我們通常習慣用“點在物件上”、“點不在物件上”進行描述,而且,在空間關係的計算上,也會按照這樣的思路設計演算法。我的意思是,對於點的拓撲關係處理一般先判斷“點是否在物件上”然後填充9交叉模型矩陣的,而不是像多邊形之間的關係判斷。

DE-9IM 空間關係模型

空間關係

相離(Disjoint)

相離關係就是兩個幾何物件相互獨立,二者之間沒有任何相接觸到的地方。形象的說,比如一張紙上畫了兩個多邊形(或者點或線),你可以再畫一條線把它們分開,而且這條畫的線可以不碰到這兩個多邊形。

DE-9IM 空間關係模型

相交(Intersects)

相交是指兩物件的內部或邊界存在交集,相交關係廣泛的存在於點、線、面三種物件之間,同時它也包含了其他種類的拓撲關係。

DE-9IM 空間關係模型

包含(Contains)

包含表示一個幾何物件完全在另一個幾何物件內部。

下面圖是紅色幾何物件包含(Contains)了藍色幾何物件的在其裡頭的示意圖。

點不可能包含線和麵,線也不可能包含面在裡頭,所以有三個位置是X。

DE-9IM 空間關係模型

被包含(Within)

被包含(Within)一般也描述為在什麼內部(所以也有用inside的),表示一個幾何物件完全處於另一個幾何物件內部。這個其實就是包含(Contains)的反向關係。

就是說 A Within B 就等於是 B Contains A。

下面圖是紅色幾何物件被包含(Within)在藍色幾何物件裡頭的示意圖。

DE-9IM 空間關係模型

等於(Equals)

等於(Equals)表示兩幾何物件完全一致(包括形狀和位置),是一種完全重合的情況。

下面圖是紅色幾何物件等於(Equals)藍色幾何物件的示意圖。

DE-9IM 空間關係模型

橫跨(Crosses)

橫跨關係一般又叫做交叉或者跨立,這裡我還是覺得橫跨比較合適。

橫跨關係一定是建立線上與線或者線與面之間(可以理解為線才能夠橫在別的形狀上嘛)。

下面圖是紅色幾何物件橫跨(Crosses)在藍色幾何物件的上面的示意圖。

DE-9IM 空間關係模型

重疊(Overlaps)

重疊(Overlaps)表示兩個幾何物件物件之間有一部分是重合的情況(完全重合就是Equals了)。

重疊只發生線上-線、面-面之間,線與面只能是Crosses、Within或者Touches,點沒有長度和麵積(就是不存在部分,不可以分割),不可能Overlaps。

下面圖是紅色幾何物件重疊(Overlaps)在藍色幾何物件上的示意圖。

DE-9IM 空間關係模型

觸碰(Touches)

觸碰(Touches)這個一般又叫做接觸或者觸及,表示兩個幾何物件的邊界部分有重合部分的情況,也就是說兩個幾何物件有公共點或者公共邊線的情況。

點和點之間是沒有Touches關係,點和線與面的觸碰關係一定是點線上的端點或者面的邊上。

線和麵兩種形狀之間的Touches關係可能是有公共點,也可能是有公共邊。

DE-9IM 空間關係模型

DE-9IM 模型

DE-9IM模型圖示

DE-9IM模型把幾何物件分為內部、邊界、外部三個部分,兩個幾何物件這三個部分兩兩之間的關係,就可以組合為一個3X3大小(就是9個值)的矩陣,這9個值的組合,就表示兩個幾何物件的空間關係。

DE-9IM 內部 (Interior) 邊界 (Boundary) 外部 (Exterior)
內部 (Interior) DE-9IM 空間關係模型 DE-9IM 空間關係模型 DE-9IM 空間關係模型
邊界 (Boundary) DE-9IM 空間關係模型 DE-9IM 空間關係模型 DE-9IM 空間關係模型
外部 (Exterior) DE-9IM 空間關係模型 DE-9IM 空間關係模型 DE-9IM 空間關係模型

如上圖所示,淡紫色的多邊形為條件幾何物件(A),淡紅色的多邊形為測試幾何物件(B),圖中的黑色部分表示兩個幾何物件對應的部分(內部、邊界、外部)之間的相交(或者說重合)部分(A.[I/B/E] intersection B.[I/B/E])。

DE-9IM模型的布林形式

9交叉模型交集矩陣的定義域為{F,0,1,2},那麼一共可能有49種可能的拓撲關係。簡單的考慮到外部與外部的交集的維度一定是2 ,那麼可能的拓撲關係仍有89種,考慮很多種關係是矛盾的,剩下的組合仍然很多。這與我們希望直觀,簡單的表達拓撲關係的目標相差甚遠。實際上,常見的拓撲關係描述符大概10種左右。為了方便描述這些關係,可以對矩陣的定義域做補充:

  1. 0,1,2表示非空,用T進行表示;
  2. 空集仍然用F表示;
  3. 引入*表示是什麼都可以,geos中為“DONTCARE”

我們常用的拓撲關係描述符,就是採用上述6種型別描述出來的。

常用拓撲關係描述

Intersects

相交是指兩物件的內部或邊界存在交集,對應下面四種Intersection Matrix

\[\begin{aligned} & {\left[\begin{array}{lll} T & * & * \\ * & * & * \\ * & * & * \end{array}\right]} \ & {\left[\begin{array}{lll} * & T & * \\ * & * & * \\ * & * & * \end{array}\right]} \\\\ & {\left[\begin{array}{lll} * & * & * \\ T & * & * \\ * & * & * \end{array}\right]} \ & {\left[\begin{array}{lll} * & * & * \\ * & T & * \\ * & * & * \end{array}\right]} \end{aligned} \]

就是說 對應Interior,Boundary的2×2的部分任意一個單元是T就可以了,其他的都“DONTCARE”。注意,這些矩陣都是對稱的。

Disjoint

相離就是不相交,因此對應於相交的“Interior,Bountry 任意存在交集”,相離的定義是Interior,Boundary均不存在交集。

\[\left[\begin{array}{lll} F & F & * \\ F & F & * \\ * & * & * \end{array}\right] \]

,這個矩陣也是對稱的。

Contains

A.Contains(B)表示B完全在A內部。即A,B的interior相交併且 B的Interior與Boundary均不與A的exterior相交。

\[\left[\begin{array}{lll} T & * & * \\ * & * & * \\ F & F & * \end{array}\right] \]

Within

Within 與Contains互為轉置。A.Contains(B) = B.Within(A)。為什麼叫互為轉置呢,這是因為within的相交矩陣是Contains矩陣的轉置就好了。

\[\left[\begin{array}{lll} T & * & F \\ * & * & F \\ * & * & * \end{array}\right] \]

Equal

Equal表示的是A和B的形狀完全相同(但是,並不代表他們所有的座標都是完全一樣的。A或者B都可能有冗餘的座標,比如多點共線)。Equal的交集矩陣是內部相交,但任意一方的內部與邊界均不與對方的外界相交

\[\left[\begin{array}{ccc} T & * & F \\ * & * & F \\ F & F & * \end{array}\right] \]

Overlap

疊置判斷對A與B的維度有要求,要求A與B的維度相同,並且要求A與B的內部的交集的維度與AB的維度相同。因為多邊形(面)之間的交集,點之間的交集均與他們的維度相同,線之間的交集可能會是點,線兩種情況,所以特別將線與面、點之間的矩陣進行了區分,要求線的內部交集為線。

面、點的疊置矩陣:

\[\left[\begin{array}{ccc} T & * & T \\ * & * & * \\ T & * & * \end{array}\right] \]

線疊置矩陣:

\[\left[\begin{array}{lll} 1 & * & T \\ * & * & * \\ T & * & * \end{array}\right] \]

Touch

Touch表示的是兩個幾何要素之間的臨接關係。touch關係的要點是:

兩個元素的內部(interior)不能有交集,但是內部與邊界,邊界與邊界可以有交集。

參與的兩種元素不能同時為點型別。(點沒有邊界,內部與內部不相交變成相離了)

\[\begin{array}{ccc} \left[\begin{array}{ccc} F & T & * \\ * & * & * \\ * & * & * \end{array}\right] & \left[\begin{array}{ccc} F & * & * \\ T & * & * \\ * & * & * \end{array}\right] & \left[\begin{array}{ccc} F & * & * \\ * & T & * \\ * & * & * \end{array}\right] \end{array} \]

三個矩陣中,前兩個互為轉置關係,最後一個是對稱矩陣。所以說這個關係也是對稱的。

Cross

穿越的定義是A與B的內部有交集,但交集的維度要比A與B最大的維度要小。按照這個標準,點點與面面不可能存在cross關係,因為他們內部的交集的維度與他們的維度是相同的。同樣,對於線線的交集要區別對待,指定其內部的交集為0(而不是1)。

非線線交集矩陣:

\[\left[\begin{array}{} T & * & T \\ * & * & * \\ * & * & * \end{array}\right] \]

線線交集矩陣:

\[\left[\begin{array}{} 0 & * & * \\ * & * & * \\ * & * & * \end{array}\right] \]

對拓撲關係的分析:從矩陣的角度

從上述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可以同時滿足多種拓撲關係。可以將這些拓撲關係的“關係”使用韋恩圖來描述:

拓撲關係韋恩圖

相關文章