PostGIS
Synopsis
boolean +`*`+ST_CoveredBy
*(`geometry `geomA
, geometry
geomB`
)`;
boolean +`*`+ST_CoveredBy
*(`geography `geogA
, geography
geogB`
)`;
Description
Returns true
if every point in Geometry/Geography A lies inside
(i.e. intersects the interior or boundary of) Geometry/Geography B.
Equivalently, tests that no point of A lies outside (in the exterior of)
B.
In mathematical terms: [.emphasis]#ST_CoveredBy(A, B) ⇔ A ⋂ B = A #
ST_CoveredBy is the converse of ST_Covers. So,
ST_CoveredBy(A,B) = ST_Covers(B,A)
.
Generally this function should be used instead of ST_Within, since it has a simpler definition which does not have the quirk that "boundaries are not within their geometry".
|
|
|
Performed by the GEOS module
Availability: 1.2.2
this is the "allowable" version that returns a boolean, not an integer. |
Not an OGC standard, but Oracle has it too.
Examples
--a circle coveredby a circle
SELECT ST_CoveredBy(smallc,smallc) As smallinsmall,
ST_CoveredBy(smallc, bigc) As smallcoveredbybig,
ST_CoveredBy(ST_ExteriorRing(bigc), bigc) As exteriorcoveredbybig,
ST_Within(ST_ExteriorRing(bigc),bigc) As exeriorwithinbig
FROM (SELECT ST_Buffer(ST_GeomFromText('POINT(1 2)'), 10) As smallc,
ST_Buffer(ST_GeomFromText('POINT(1 2)'), 20) As bigc) As foo;
--Result
smallinsmall | smallcoveredbybig | exteriorcoveredbybig | exeriorwithinbig
--------------+-------------------+----------------------+------------------
t | t | t | f
(1 row)