> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cockroachlabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ST_Covers

Given two shapes *A* and *B*, predicate function `ST_Covers(A, B)` returns `true` if no point in *B* lies outside of shape *A*.  Otherwise, it returns `false`.

In other words, shape *A* must completely cover every point in *B*.

This behavior is similar to [`ST_Contains`](https://docs.cockroachlabs.com/docs/v24.2/st_contains), except that the criteria for `ST_Contains` are more exacting, and therefore some pairs of shapes will be accepted by this function that would be rejected by `ST_Contains`.

`ST_Covers` works on the following data types:

* [`GEOMETRY`](https://docs.cockroachlabs.com/docs/v24.2/architecture/glossary#geometry)
* [`GEOGRAPHY`](https://docs.cockroachlabs.com/docs/v24.2/architecture/glossary#geography)

> [!NOTE]
>
> \`\` will attempt to use any available [spatial index](https://docs.cockroachlabs.com/docs/v24.2/spatial-indexes) to speed up its operation.  Use the prefixed variant `_` if you do not want any spatial indexes to be used.

> [!NOTE]
>
> This function is the inverse of [`ST_CoveredBy`](https://docs.cockroachlabs.com/docs/v24.2/st_coveredby).

## Examples

> [!NOTE]
>
> The screenshots in these examples were generated using [geojson.io](http://geojson.io), but they are designed to showcase the shapes, not the map.  Representing `GEOMETRY` data in GeoJSON can lead to unexpected results if using geometries with [SRIDs](https://docs.cockroachlabs.com/docs/v24.2/architecture/glossary#srid) other than 4326 (as shown below).

### True

In this example, \`\` returns `true` because:

* No Point in the smaller Polygon *B* lies outside of the larger Polygon *A*.

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
SELECT ST_Covers(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95.992775 36.153980, -75.704722 36.076944, -87.906471 43.038902))'), st_geomfromtext('SRID=4326;POLYGON((-87.623177 41.881832, -90.199402 38.627003, -82.446732 38.413651, -87.623177 41.881832))'));
```

```
   st_covers
---------------
     true

(1 row)
```

![ST\_Covers - true](https://mintcdn.com/cockroachlabs/bBD0UEapbn6fk8Rb/images/common/geospatial/st_covers_true.png?fit=max\&auto=format\&n=bBD0UEapbn6fk8Rb\&q=85\&s=85c8d8451973703cb7b1bf109d59c190)

### False

In this example, \`\` returns `false` because:

* Many Points in the smaller Polygon *B* lie outside of the larger Polygon *A*.

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
SELECT ST_Covers(st_geomfromtext('SRID=4326;POLYGON((-87.906471 43.038902, -95.992775 36.153980, -75.704722 36.076944, -87.906471 43.038902))'), st_geomfromtext('SRID=4326;POLYGON((-84.191605 39.758949, -75.165222 39.952583, -78.878738 42.880230, -84.191605 39.758949))'));
```

```
   st_covers
---------------
     false
(1 row)
```

![ST\_Covers - false](https://mintcdn.com/cockroachlabs/bBD0UEapbn6fk8Rb/images/common/geospatial/st_covers_false.png?fit=max\&auto=format\&n=bBD0UEapbn6fk8Rb\&q=85\&s=800475c6d0363e349541eda9dd057e61)

## See also

* [Export Spatial Data](https://docs.cockroachlabs.com/docs/v24.2/export-spatial-data)
* [Spatial tutorial](https://docs.cockroachlabs.com/docs/v24.2/spatial-tutorial)
* [Spatial and GIS Glossary of Terms](https://docs.cockroachlabs.com/docs/v24.2/architecture/glossary)
* [Spatial indexes](https://docs.cockroachlabs.com/docs/v24.2/spatial-indexes)
* [Spatial functions](https://docs.cockroachlabs.com/docs/v24.2/functions-and-operators#spatial-functions)

- [`ST_CoveredBy`](https://docs.cockroachlabs.com/docs/v24.2/st_coveredby)

* [`ST_Contains`](https://docs.cockroachlabs.com/docs/v24.2/st_contains)
* [`ST_Within`](https://docs.cockroachlabs.com/docs/v24.2/st_within)
* [`ST_Intersects`](https://docs.cockroachlabs.com/docs/v24.2/st_intersects)
* [`ST_CoveredBy`](https://docs.cockroachlabs.com/docs/v24.2/st_coveredby)
* [`ST_Disjoint`](https://docs.cockroachlabs.com/docs/v24.2/st_disjoint)
* [`ST_Equals`](https://docs.cockroachlabs.com/docs/v24.2/st_equals)
* [`ST_Overlaps`](https://docs.cockroachlabs.com/docs/v24.2/st_overlaps)
* [`ST_Touches`](https://docs.cockroachlabs.com/docs/v24.2/st_touches)
* [`ST_ConvexHull`](https://docs.cockroachlabs.com/docs/v24.2/st_convexhull)
* [`ST_Union`](https://docs.cockroachlabs.com/docs/v24.2/st_union)
* [Migrate from Shapefiles](https://docs.cockroachlabs.com/docs/v24.2/migrate-from-shapefiles)
* [Migrate from GeoJSON](https://docs.cockroachlabs.com/docs/v24.2/migrate-from-geojson)
* [Migrate from GeoPackage](https://docs.cockroachlabs.com/docs/v24.2/migrate-from-geopackage)
* [Migrate from OpenStreetMap](https://docs.cockroachlabs.com/docs/v24.2/migrate-from-openstreetmap)
* [Introducing Distributed Spatial Data in CockroachDB](https://www.cockroachlabs.com/blog/spatial-data/) (blog post)
* [Using GeoServer with CockroachDB](https://docs.cockroachlabs.com/docs/v24.2/geoserver)
