Skip to main content

ST_Covers

Tests whether geometry A covers geometry B - no point of B is outside A.

Syntax

ST_Covers(geometry_a, geometry_b)

Parameters

ParameterTypeDescription
geometry_aGeometryCovering geometry
geometry_bGeometryCovered geometry

Returns

TypeDescription
BooleanTrue if A covers B, false otherwise

Examples

Point on Polygon Boundary

SELECT ST_Covers(
ST_GeomFromText('POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))'),
ST_Point(0, 2)
);
-- Returns: true (point on boundary is covered)

Compare with ST_Contains

SELECT
ST_Contains(poly, point) as contains,
ST_Covers(poly, point) as covers
FROM (SELECT
ST_GeomFromText('POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))') as poly,
ST_Point(0, 2) as point
);
-- contains: false, covers: true

Find All Points in Region (Including Boundary)

SELECT p.id
FROM points p, regions r
WHERE r.name = 'Zone A'
AND ST_Covers(r.geom, p.geom);

Notes

  • ST_Covers is more inclusive than ST_Contains
  • ST_Contains returns false for points on boundary; ST_Covers returns true
  • Use ST_Covers when boundary points should be included
  • ST_Covers(A, B) is equivalent to ST_CoveredBy(B, A)

See Also