ST_COVERS

更新时间:
复制 MD 格式

ST_COVERS函数用于判断value1对应的地理对象是否覆盖value2对应的地理对象。即判断value2对应的地理对象的所有点是否都位于value1对应的地理对象的边界或内部。

命令格式

BOOLEAN ST_COVERS(GEOGRAPHY <value1>, GEOGRAPHY <value2>)

参数说明

value1、value2:必填。GEOGRAPHY数据类型的地理对象。可根据需求使用ST_GEOGPOINT、ST_GEOGFROMWKB、ST_GEOGFROMTEXT、ST_MAKELINE和ST_MAKEPOLYGON函数来构造GEOGRAPHY类型对象。

返回值说明

返回BOOLEAN类型。返回规则如下:

  • 若value2所对应的地理对象的每一个点都位于value1所对应的地理对象的边界或内部,则返回TRUE;否则返回FALSE。

  • 若value1或value2为空的地理对象,则返回FALSE。

一个地理对象是覆盖它的边界节点的。

使用示例

  • 示例1:判断多边形POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))是否分别覆盖位于多边形外部、边界和内部的三个点 (5, 5)、(0, 0) 和 (0.5, 0.5)。

    -- 返回TRUE,因为point(0 0)在polygon的边界节点上
    SELECT ST_COVERS(ST_GEOGFROMTEXT('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))'), ST_GEOGPOINT(0, 0));
    
    -- 返回TRUE,因为point(0.5 0.5)在polygon的内部
    SELECT ST_COVERS(ST_GEOGFROMTEXT('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))'), ST_GEOGPOINT(0.5, 0.5));
    
    -- 返回FALSE,因为point(5 5)在polygon的外部
    SELECT ST_COVERS(ST_GEOGFROMTEXT('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))'), ST_GEOGPOINT(5, 5));
  • 示例2:若value1或value2为空的地理对象,则返回FALSE。

    -- 返回FALSE
    SELECT ST_COVERS(ST_GEOGFROMTEXT('POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))'),ST_GEOGFROMTEXT('point empty'));

相关文档