ST_CoveredBy — 测试 A 的每个点是否位于 B 中
boolean ST_CoveredBy(geometry geomA, geometry geomB);
boolean ST_CoveredBy(geography geogA, geography geogB);
如果 Geometry/Geography A 中的每个点都位于 Geometry/Geography B 内部(即与 B 的内部或边界相交),则返回 true。 等效地,测试 A 的任何点是否位于 B 的外部。
用数学术语表示:ST_CoveredBy(A, B) ⇔ A ⋂ B = A
ST_CoveredBy 是 ST_Covers 的逆运算。因此,ST_CoveredBy(A,B) = ST_Covers(B,A)。
通常,此函数应代替 ST_Within 使用,因为它具有更简单的定义,并且没有“边界不在其几何内部”的怪异之处。
| ![[Note]](../images/note.png)  | |
| 此函数会自动包含边界框比较,该比较利用几何体上可用的任何空间索引。要避免使用索引,请使用函数  | 
| ![[Important]](../images/important.png)  | |
| 增强功能:3.0.0 启用了对  | 
| ![[Important]](../images/important.png)  | |
| 不要将此函数与无效的几何体一起使用。您将得到意外的结果。 | 
由 GEOS 模块执行
可用性: 1.2.2
注意:这是返回布尔值而不是整数的“允许”版本。
不是 OGC 标准,但 Oracle 也有。
  --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)