名前

ST_Touches — ジオメトリが共通のポイントを少なくとも一つ持ち、かつ内部でインタセクトしない場合にはTRUEを返します。

概要

boolean ST_Touches(geometry g1, geometry g2);

説明

g1g2の共通部分の点がg1g2の境界の結合上にある場合にはTRUEを返します。ST_Touchesは、面/面, 線/線, 線/面, 点/面, 点/線の全てを受け付けますが、点/点は受け付けません

数学用語で言うと、この述語は次のように表現されます。

二つのジオメトリに対して許されるDE-9IMは次のようになります。

  • FT*******

  • F**T*****

  • F***T****

[重要]

Enhanced: 3.0.0 GEOMETRYCOLLECTIONへの対応が可能となりました

[注記]

この関数の呼び出しによって、ジオメトリで使用可能なインデクスを使用したバウンディングボックスの比較が自動的に行われます。インデクスの使用を避けるには_ST_Touchesを使います。

This method implements the OpenGIS Simple Features Implementation Specification for SQL 1.1. s2.1.1.2 // s2.1.13.3

This method implements the SQL/MM specification. SQL-MM 3: 5.1.28

次に示す図全てで、ST_TouchesTRUEを返します。

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)