ST_Touches
Determines if two GEOMETRY objects touch at a single point or along a boundary, but do not have interiors that intersect.
GEOGRAPHY Polygons with a vertex or border on the International Date Line (IDL) or the North or South pole are not supported.
Behavior Type
Syntax
ST_Touches( g1, g2 [USING PARAMETERS spheroid={true | false}] )
Arguments
g1 |
Spatial object, value of type GEOMETRY |
g2 |
Spatial object, value of type GEOMETRY |
Parameters
spheroid = {true | false} |
(Optional) BOOLEAN that specifies whether to use a perfect sphere or WGS84. Default: False |
Returns
BOOLEAN
Supported Data Types
Data Type | GEOMETRY | GEOGRAPHY (WGS84) |
Point |
Yes |
Yes |
Multipoint |
Yes |
No |
Linestring |
Yes |
No |
Multilinestring |
Yes |
No |
Polygon |
Yes |
Yes |
Multipolygon |
Yes |
No |
GeometryCollection |
Yes |
No |
Compatible GEOGRAPHY pairs:
Data Type | GEOGRAPHY (WGS84) |
Point-Point | No |
Linestring-Point | No |
Polygon-Point | Yes |
Multipolygon-Point | No |
Examples
The following examples show how to use ST_Touches.
Two polygons touch at a single point:
=> SELECT ST_Touches(ST_GeomFromText('POLYGON((-1 2,0 3,0 1,-1 2))'), ST_GeomFromText('POLYGON((1 3,0 3,1 2,1 3))')); ST_Touches ------------ t (1 row)
Two polygons touch only along part of the boundary:
=> SELECT ST_Touches(ST_GeomFromText('POLYGON((-1 2,0 3,0 1,-1 2))'), ST_GeomFromText('POLYGON((1 2,0 3,0 1,1 2))')); ST_Touches ------------ t (1 row)
Two polygons do not touch at any point:
=> SELECT ST_Touches(ST_GeomFromText('POLYGON((-1 2,0 3,0 1,-1 2))'), ST_GeomFromText('POLYGON((0 2,-1 3,-2 0,0 2))')); ST_Touches ------------ f (1 row)