ST_Crosses — 測試兩個幾何物件是否有一些,但非全部的內部點是共有的
boolean ST_Crosses(
geometry g1, geometry g2)
;
比較兩個幾何物件,如果它們的交集「空間交叉」,則返回 true
;也就是說,這些幾何物件有一些,但非全部的內部點是共有的。幾何物件內部的交集必須是非空的,且其維度必須小於兩個輸入幾何物件的最大維度,並且兩個幾何物件的交集不能等於任一幾何物件。否則,返回 false
。交叉關係是對稱的且非自反的。
用數學術語表示:ST_Crosses(A, B) ⇔ (dim( Int(A) ⋂ Int(B) ) < max( dim( Int(A) ), dim( Int(B) ) )) ∧ (A ⋂ B ≠ A) ∧ (A ⋂ B ≠ B)
如果幾何物件的 DE-9IM 交集矩陣符合以下情況,則它們交叉:
T*T******
用於點/線、點/面和線/面的情況
T*****T**
用於線/點、面/點和面/線的情況
0********
用於線/線的情況
對於點/點和面/面的情況,結果為 false
![]() |
|
OpenGIS 簡單特徵規範僅為點/線、點/面、線/線和線/面情況定義了這個謂詞。 JTS / GEOS 將定義擴展到也適用於線/點、面/點和面/線的情況。這使得關係對稱。 |
![]() |
|
此函式會自動包含一個邊界框比較,該比較會使用幾何物件上可用的任何空間索引。 |
![]() |
|
增強功能:3.0.0 版本啟用了對 |
此方法實作了OGC 簡單特徵 SQL 1.1 實作規範 s2.1.13.3
此方法實作了 SQL/MM 規範。SQL-MM 3: 5.1.29
以下情況皆會返回 true
。
![]()
|
![]()
|
![]()
|
![]()
|
考慮一個使用者有兩個表格的情況:一個道路表格和一個高速公路表格。
CREATE TABLE roads ( id serial NOT NULL, geom geometry, CONSTRAINT roads_pkey PRIMARY KEY (road_id) );
|
CREATE TABLE highways ( id serial NOT NULL, the_gem geometry, CONSTRAINT roads_pkey PRIMARY KEY (road_id) );
|
要確定與高速公路交叉的道路列表,請使用類似以下的查詢:
SELECT roads.id FROM roads, highways WHERE ST_Crosses(roads.geom, highways.geom);