Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
测试某几何值是否在空间上覆盖另一个几何值。
geometry-expression.ST_Covers(geo2)
geo2
ST_Geometry
要与 geometry-expression 进行比较的另一个几何值。
BIT 如果 geometry-expression 覆盖 geo2 则返回 1,否则返回 0。
ST_Covers 方法测试 geometry-expression 是否完全覆盖 geo2。geometry-expression.ST_Covers( geo2 ) 等效于 geo2.ST_CoveredBy( geometry-expression )。
该谓语与 ST_Contains 类似,二者仅有一个细微差别。ST_Contains 谓语要求在 geometry-expression 的内部存在一个或多个 geo2 的内部点。对于 ST_Covers(),如果在 geometry-expression 外部没有 geo2 的点,则此方法将返回 1。此外,ST_Covers 还可以用于球形地球空间参照系中的几何,而 ST_Contains 却不适用。
如果 geometry-expression 包含圆弧线串,则将这些圆弧线串内插到线串中。
SQL/MM (ISO/IEC 13249-3: 2006) 服务商扩充
下面的示例测试多边形是否覆盖点。多边形完全覆盖点,所以示例返回 1。
SELECT NEW ST_Polygon( 'Polygon(( 0 0, 2 0, 1 2, 0 0 ))' ) .ST_Covers( NEW ST_Point( 1, 1 ) )
下面的示例测试多边形是否覆盖线。多边形完全覆盖线,所以示例返回 1。如果使用 ST_Contains 来代替 ST_Covers,则 ST_Contains 将返回 0。
SELECT NEW ST_Polygon( 'Polygon(( 0 0, 2 0, 1 2, 0 0 ))' ) .ST_Covers( NEW ST_LineString( 'LineString( 0 0, 1 0 )' ) )
在下面的示例中,给定多边形覆盖 Shape 几何时,将列出 ShapeID。此示例返回结果 [1,16,17,19,26]。请注意,尽管该行的 Shape 点仅与多边形的边界相交,但仍列出了 ShapeID 1。
1,16,17,19,26
SELECT LIST( ShapeID ORDER BY ShapeID ) FROM SpatialShapes WHERE NEW ST_Polygon( NEW ST_Point( 0, 0 ), NEW ST_Point( 8, 2 ) ).ST_Covers( Shape ) = 1