名称

ST_相交 — 测试两个几何图形是否相交(它们至少有一个公共点)

概要

boolean ST_Intersects( geometry geomA , geometry geomB );

boolean ST_Intersects( geography geogA , geography geogB );

描述

如果两个几何图形相交,则返回 true。几何图形相交是指它们有任何公共点。

对于地理数据,使用 0.00001 米的距离容差(因此非常接近的点被认为相交)。

用数学术语表示: ST_Intersects(A, B) ⇔ A ⋂ B ≠ ∅

如果几何图形的 DE-9IM 相交矩阵匹配以下任何一种,则它们相交

  • T********

  • *T*******

  • ***T*****

  • ****T****

除了测试几何图形是否不相交的 ST_Disjoint 之外,所有其他空间关系测试都隐含了空间相交。

[Note]

此函数自动包含一个边界框比较,该比较利用了几何图形上可用的任何空间索引。

已更改:3.0.0 删除了 SFCGAL 版本,并添加了对 2D TIN 的原生支持。

已增强:2.5.0 支持 GEOMETRYCOLLECTION。

已增强:2.3.0 将 PIP 短路增强功能扩展到支持点数较少的 MultiPoints。早期版本仅支持点在多边形中。

由 GEOS 模块执行(对于几何图形),地理数据是原生的

可用性:1.5 引入了对地理数据的支持。

[Note]

对于地理数据,此函数的距离容差约为 0.00001 米,并且使用球体而非椭球体计算。

[Note]

注意:这是返回布尔值而不是整数的“允许”版本。

此方法实现了 OGC SQL 1.1 简单要素实现规范。 s2.1.1.2 //s2.1.13.3 - ST_Intersects(g1, g2 ) --> Not (ST_Disjoint(g1, g2 ))

此方法实现了 SQL/MM 规范。SQL-MM 3: 5.1.27

此方法支持圆字符串和曲线。

此函数支持三角形和不规则三角网格表面 (TIN)。

几何图形示例

SELECT ST_Intersects('POINT(0 0)'::geometry, 'LINESTRING ( 2 0, 0 2 )'::geometry);
 st_intersects
---------------
 f
(1 row)
SELECT ST_Intersects('POINT(0 0)'::geometry, 'LINESTRING ( 0 0, 0 2 )'::geometry);
 st_intersects
---------------
 t
(1 row)

-- Look up in table. Make sure table has a GiST index on geometry column for faster lookup.
SELECT id, name FROM cities WHERE ST_Intersects(geom, 'SRID=4326;POLYGON((28 53,27.707 52.293,27 52,26.293 52.293,26 53,26.293 53.707,27 54,27.707 53.707,28 53))');
 id | name
----+-------
  2 | Minsk
(1 row)

地理数据示例

SELECT ST_Intersects(
    'SRID=4326;LINESTRING(-43.23456 72.4567,-43.23456 72.4568)'::geography,
    'SRID=4326;POINT(-43.23456 72.4567772)'::geography
    );

 st_intersects
---------------
t

另请参阅

&&, ST_3DIntersects, ST_Disjoint