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 类型
使用说明
- 数学术语:
ST_COVERS(A, B) ⇔ A ⋂ B = B。 - ST_COVERS 与 ST_COVEREDBY 相反。 因此,
ST_COVERS(A,B) = ST_COVEREDBY(B,A)。 - 此函数定义更简单, 不存在边界不在其几何形状内的情况。
- 此功能自动包括利用几何上可用的任何空间索引的边界框比较。
- 此函数是由 GEOS 模块执行的。
- 此函数支持 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)