类别:

地理空间函数

ST_COVERS

如果一个地理空间对象中没有任何点位于另一个地理空间对象之外,则返回 TRUE。换言之:

  • GEOGRAPHY 对象 g2 位于 GEOGRAPHY 对象 g1 之外。

  • GEOMETRY 对象 g2 位于 GEOMETRY 对象 g1 之外。

ST_COVERS 与 ST_CONTAINS 相似,但又略有不同。有关“覆盖”和“包含”之间差异的详细信息,请参阅 维度扩展的 9 交叉点模型 (DE-9IM) (link removed)。

尽管 ST_COVERS 和 ST_CONTAINS 可能看起来类似,但这两个函数有细微的区别。有关“覆盖”和“包含”之间差异的详细信息,请参阅 维度扩展的 9 交叉点模型 (DE-9IM) (link removed)。

备注

此函数不支持使用 GeometryCollection 或 FeatureCollection 作为输入值。

小技巧

您可以使用搜索优化服务,提高用于调用此函数的查询的性能。有关详细信息,请参阅 搜索优化服务

另请参阅:

ST_CONTAINSST_COVEREDBY

语法

ST_COVERS( <geography_expression_1> , <geography_expression_2> )

ST_COVERS( <geometry_expression_1> , <geometry_expression_2> )
Copy

实参

geography_expression_1

不是 GeometryCollection 或 GEOGRAPHY 的 FeatureCollection 对象。

geography_expression_2

不是 GeometryCollection 或 GEOGRAPHY 的 FeatureCollection 对象。

geometry_expression_1

不是 GeometryCollection 或 GEOMETRY 的 FeatureCollection 对象。

geometry_expression_2

不是 GeometryCollection 或 GEOMETRY 的 FeatureCollection 对象。

返回

BOOLEAN。

使用说明

  • 对于 GEOMETRY 对象,如果两个输入 GEOMETRY 对象具有不同的 SRIDs,该函数会报告错误。

示例

GEOGRAPHY 示例

该示例展示了 ST_COVERS 函数的简单用法:

create table geospatial_table_01 (g1 GEOGRAPHY, g2 GEOGRAPHY);
insert into geospatial_table_01 (g1, g2) values 
    ('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))', 'POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))');
Copy
SELECT ST_COVERS(g1, g2) 
    FROM geospatial_table_01;
+-------------------+
| ST_COVERS(G1, G2) |
|-------------------|
| True              |
+-------------------+
Copy

GEOMETRY 示例

下面的查询显示了使用 ST_COVERS 的几个示例。请注意,Polygon 在其边框上覆盖(但不 包含)一个 LineString。

SELECT ST_COVERS(poly, poly_inside),
       ST_COVERS(poly, poly),
       ST_COVERS(poly, line_on_boundary),
       ST_COVERS(poly, line_inside)
  FROM (SELECT TO_GEOMETRY('POLYGON((-2 0, 0 2, 2 0, -2 0))') AS poly,
               TO_GEOMETRY('POLYGON((-1 0, 0 1, 1 0, -1 0))') AS poly_inside,
               TO_GEOMETRY('LINESTRING(-1 1, 0 2, 1 1)') AS line_on_boundary,
               TO_GEOMETRY('LINESTRING(-2 0, 0 0, 0 1)') AS line_inside);
Copy
+------------------------------+----------------------+----------------------------------+-----------------------------+
| ST_COVERS(POLY, POLY_INSIDE) | ST_COVERS(POLY,POLY) | ST_COVERS(POLY,LINE_ON_BOUNDARY) | ST_COVERS(POLY,LINE_INSIDE) |
|------------------------------+----------------------+----------------------------------+-----------------------------|
| True                         | True                 | True                             | True                        |
+------------------------------+----------------------+----------------------------------+-----------------------------+
Copy
语言: 中文