Name

ST_Touches — Testar om två geometrier har minst en gemensam punkt, men deras inre delar inte skär varandra

Synopsis

boolean ST_Touches(geometry A, geometry B);

Beskrivning

Returnerar TRUE om A och B skär varandra, men deras interiörer inte skär varandra. På motsvarande sätt har A och B minst en gemensam punkt och de gemensamma punkterna ligger inom minst en gräns. För Point/Point-indata är relationen alltid FALSK, eftersom punkter inte har någon gräns.

I matematiska termer: ST_Touches(A, B) ⇔ (Int(A) ⋂ Int(B) = ∅) ∧ (A ⋂ B ≠ ∅)

Detta förhållande gäller om DE-9IM Intersection Matrix för de två geometrierna matchar en av:

  • FT*******

  • F**T*****

  • F***T****

[Note]

&index_aware; För att undvika att använda ett index, använd _ST_Touches istället.

[Important]

Förbättrad: 3.0.0 aktiverade stöd för GEOMETRYCOLLECTION

Denna metod implementerar OGC:s implementeringsspecifikation för enkla funktioner för SQL 1.1. s2.1.1.2 // s2.1.13.3

Denna metod implementerar SQL/MM-specifikationen. SQL-MM 3: 5.1.28

Exempel

Predikatet ST_Touches returnerar TRUE i följande exempel.

POLYGON / POLYGON

POLYGON / POLYGON

POLYGON / LINESTRING

LINESTRING / LINESTRING

LINESTRING / LINESTRING

POLYGON / PUNKT

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)