PostGIS

ST_Touches

Prev

7.11.1. Topological Relationships

Next

Name

ST_Touches — Tests if two geometries have at least one point in common, but their interiors do not intersect

Synopsis

boolean +`*`+ST_Touches*(`geometry `A, geometry B`)`;

Description

Returns TRUE if A and B intersect, but their interiors do not intersect. Equivalently, A and B have at least one point in common, and the common points lie in at least one boundary. For Point/Point inputs the relationship is always FALSE, since points do not have a boundary.

In mathematical terms: [.emphasis]#ST_Touches(A, B) ⇔ (Int(A) ⋂ Int(B) ≠ ∅) ∧ (A ⋂ B ≠ ∅) #

This relationship holds if the DE-9IM Intersection Matrix for the two geometries matches one of:

  • FT*

  • FT*

  • FT*

Note

This function automatically includes a bounding box comparison that makes use of any spatial indexes that are available on the geometries.

To avoid using an index, use _ST_Touches instead.

Important

Enhanced: 3.0.0 enabled support for GEOMETRYCOLLECTION

[.inlinemediaobject]check This method implements the OGC Simple Features Implementation Specification for SQL 1.1.

s2.1.1.2 // s2.1.13.3

check This method implements the SQL/MM specification.

SQL-MM 3: 5.1.28

Examples

The ST_Touches predicate returns TRUE in the following examples.

st_touches01

POLYGON / POLYGON

st_touches02

POLYGON / POLYGON

st_touches03

POLYGON / LINESTRING

st_touches04

LINESTRING / LINESTRING

st_touches05

LINESTRING / LINESTRING

st_touches06

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)

Prev

Up

Next

ST_RelateMatch

Home

ST_Within