Name

ST_Covers — 如果B中没有点在A之外,则返回TRUE

Synopsis

boolean ST_Covers(geometry geomA, geometry geomB);

boolean ST_Covers(geography geogpolyA, geography geogpointB);

描述

退货 true 如果几何图形/地理图形B中没有点在几何图形/地理图形A的外部,则测试几何图形B的每个点是否都在几何图形A的内部(即,与几何图形A的内部或边界相交)。

[Note]

This function automatically includes a bounding box comparison that makes use of any spatial indexes that are available on the geometries. 要避免使用索引,请使用函数 _ST_Covers

[Important]

增强:已启用3.0.0支持 GEOMETRYCOLLECTION

[Important]

请勿对无效的几何图形使用此函数。你会得到意想不到的结果。

由GEOS模块执行

增强:2.4.0为地理类型添加了对面中的面和面中的线的支持

增强:2.3.0增强到PIP短路,几何体扩展到支持多点和少点。以前的版本仅支持多边形中的点。

可用性:1.5-引入了对地理位置的支持。

可用性:1.2.2

注意:这是“允许的”版本,返回布尔值,而不是整数。

不是OGC标准,但甲骨文也有。

示例

几何图形示例

--a circle covering a circle
SELECT ST_Covers(smallc,smallc) As smallinsmall,
  ST_Covers(smallc, bigc) As smallcoversbig,
  ST_Covers(bigc, ST_ExteriorRing(bigc)) As bigcoversexterior,
  ST_Contains(bigc, ST_ExteriorRing(bigc)) As bigcontainsexterior
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 | smallcoversbig | bigcoversexterior | bigcontainsexterior
--------------+----------------+-------------------+---------------------
 t            | f              | t                 | f
(1 row) 

地理示例

-- a point with a 300 meter buffer compared to a point, a point and its 10 meter buffer
SELECT ST_Covers(geog_poly, geog_pt) As poly_covers_pt,
  ST_Covers(ST_Buffer(geog_pt,10), geog_pt) As buff_10m_covers_cent
  FROM (SELECT ST_Buffer(ST_GeogFromText('SRID=4326;POINT(-99.327 31.4821)'), 300) As geog_poly,
        ST_GeogFromText('SRID=4326;POINT(-99.33 31.483)') As geog_pt ) As foo;

 poly_covers_pt | buff_10m_covers_cent
----------------+------------------
 f              | t
    

另请参阅

ST_Contains, ST_CoveredBy, ST_Within