Name

ST_Touches — 二つのジオメトリが少なくとも一つの共有点を持ち、かつ内部でインタセクトしていないようになっているかテストします。

Synopsis

boolean ST_Touches(geometry A, geometry B);

説明

Aと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]

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

このメソッドはOGC Simple Features Implementation Specification for SQL 1.1の実装です。

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)