Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_COVERS

📄字数 1.0K
👁️阅读量 加载中...

功能描述

如果几何/地理 B 中的每个点都位于几何/地理 A 内部(即与其内部或边界相交),则返回 TRUE。同样,测试 B 中没有点位于 A 外部(外部)。

语法格式

sql
BOOLEAN ST_COVERS( GEOMETRY geomA , GEOMETRY geomB );
BOOLEAN ST_COVERS( GEOGRAPHY geogA, GEOGRAPHY geogB) ;

参数说明

  • geomA:第一个目标 GEOMETRY 对象。
  • geomB:第二个目标 GEOMETRY 对象。
  • geogA:第一个目标 GEOGRAPHY 对象。
  • geogB:第二个目标 GEOGRAPHY 对象。

函数返回类型

BOOLEAN 类型

使用说明

  1. 数学术语: ST_COVERS(A, B) ⇔ A ⋂ B = B
  2. ST_COVERS 与 ST_COVEREDBY 相反。 因此,ST_COVERS(A,B) = ST_COVEREDBY(B,A)
  3. 此函数定义更简单, 不存在边界不在其几何形状内的情况。
  4. 此功能自动包括利用几何上可用的任何空间索引的边界框比较。
  5. 此函数是由 GEOS 模块执行的。
  6. 此函数支持 GEOMETRYCOLLECTION。

示例

几何示例,一个圆在圆内部时:

sql
SQL> 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;

+--------------+----------------+-------------------+---------------------+
| SMALLINSMALL | SMALLCOVERSBIG | BIGCOVERSEXTERIOR | BIGCONTAINSEXTERIOR |
+--------------+----------------+-------------------+---------------------+
| T            | F              | T                 | F                   |
+--------------+----------------+-------------------+---------------------+

(1 row)

地理示例:

sql
SQL> 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                    |
+----------------+----------------------+

(1 row)