Name

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

Synopsis

boolean ST_Touches(geometry g1, geometry g2);

説明

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

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

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

  • FT*******

  • F**T*****

  • F***T****

[Important]

GEOMETRYCOLLECTIONを引数として呼ばないでください。

[Note]

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