名稱

ST_CoveredBy — 測試 A 的每個點是否都位於 B 內

概要

boolean ST_CoveredBy(geometry geomA, geometry geomB);

boolean ST_CoveredBy(geography geogA, geography geogB);

描述

如果幾何/地理 A 中的每個點都位於幾何/地理 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]

此函式會自動包含一個邊界框比較,該比較會使用幾何圖形上可用的任何空間索引。要避免使用索引,請使用函式 _ST_CoveredBy

[Important]

增強功能:3.0.0 版本啟用了對 GEOMETRYCOLLECTION 的支援

[Important]

請勿將此函式與無效的幾何圖形一起使用。您將得到意想不到的結果。

由 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)