Name

ST_Touches — 测试两个几何图形是否至少有一个共同点,但它们的内部不相交

Synopsis

boolean ST_Touches(geometry A, geometry B);

描述

如果 A 和 B 相交,但它们的内部不相交,则返回 TRUE。 等价地,A和B至少有一个公共点,并且公共点至少位于一个边界内。 对于点/点输入,关系始终为 FALSE,因为点没有边界。

用数学术语来说: ST_Touches(A, B) ⇔ (Int(A) ⋂ Int(B) ≠ ∅) ∧ (A ⋂ B ≠ ∅)

如果两个几何图形的 DE-9IM 交集矩阵匹配以下之一,则此关系成立:

  • FT*******

  • F**T*****

  • F***T****

[Note]

此功能自动包括利用几何上可用的任何空间索引的边界框比较。 要避免使用索引,请改用 _ST_Touches

[Important]

增强:3.0.0 启用了对 GEOMETRYCOLLECTION 的支持

此方法实现了 SQL 1.1 的 OGC 简单功能规范。 s2.1.1.2 // s2.1.13.3

该方法实现了SQL/MM规范。 SQL-MM 3: 5.1.28

示例

ST_Touches 谓词在以下示例中返回 TRUE

POLYGON / POLYGON

POLYGON / POLYGON

POLYGON / LINESTRING

LINESTRING / LINESTRING

LINESTRING / LINESTRING

POLYGON / POINT

SELECT ST_Touches('LINESTRING(0 0, 1 1, 0 2)'::geometry, 'POINT(1 1)'::geometry);
 st_touches
------------
 f
(1 row)

SELECT ST_Touches('LINESTRING(0 0, 1 1, 0 2)'::geometry, 'POINT(0 2)'::geometry);
 st_touches
------------
 t
(1 row)