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);