Fork me on GitHub

ST_Within

Signatures

BOOLEAN ST_Within(GEOMETRY geomA, GEOMETRY geomB);

Description

Returns true if geomA is within geomB.

Within means that every point of geomA is a point of geomB, and the interiors of the two geometries have at least one point in common.

As a consequence, the following are equivalent:

  • ST_Within(geomA, geomB) and ST_Within(geomB, geomA) are true.
  • ST_Equals(geomA, geomB) is true.
This function does not work on GEOMETRYCOLLECTIONs.
Implements the OpenGIS Simple Features Implementation Specification for SQL version 1.2.1.
This predicate does not yet support spatial indices, but it will in a future release. Use it in conjunction with && operator. See here for more details.

Examples

Cases where ST_Within is true
SELECT ST_Within(geomA, geomB) FROM input_table;
-- Answer:    TRUE
geomA POLYGON geomB POLYGON
POLYGON((2 2, 7 2, 7 5, 2 5, 2 2)) POLYGON((1 1, 8 1, 8 7, 1 7, 1 1))

geomA LINESTRING geomB POLYGON
LINESTRING(2 6, 6 2) POLYGON((1 1, 8 1, 8 7, 1 7, 1 1))

geomA POINT geomB POLYGON
POINT(4 4) POLYGON((1 1, 8 1, 8 7, 1 7, 1 1))

geomA POLYGON geomB POLYGON
POLYGON((1 2, 6 2, 6 5, 1 5, 1 2)) POLYGON((1 1, 8 1, 8 7, 1 7, 1 1))

geomA LINESTRING geomB POLYGON
LINESTRING(1 2, 1 6, 5 2) POLYGON((1 1, 8 1, 8 7, 1 7, 1 1))

geomA LINESTRING geomB LINESTRING
LINESTRING(3 5, 5 3) LINESTRING(2 1, 5 3, 2 6)

geomA POINT geomB LINESTRING
POINT(4 4) LINESTRING(2 1, 5 3, 2 6)

Cases where ST_Within is false
SELECT ST_Within(geomA, geomB) FROM input_table;
-- Answer:    FALSE
geomA POLYGON geomB POLYGON
POLYGON((0 2, 5 2, 5 5, 0 5, 0 2)) POLYGON((1 1, 8 1, 8 7, 1 7, 1 1))

geomA LINESTRING geomB POLYGON
LINESTRING(2 6, 0 8) POLYGON((1 1, 8 1, 8 7, 1 7, 1 1))

geomA POINT geomB POLYGON
POINT(8 4) POLYGON((1 1, 8 1, 8 7, 1 7, 1 1))

geomA POINT geomB POLYGON
POINT(8 4) POLYGON((1 1, 7 1, 7 7, 1 7, 1 1))

See also