ST_Contains

确定空间对象是否完全在另一个空间对象内部,并且不仅仅在其边界上存在。两个参数必须是相同的空间数据类型。要么指定两个 GEOMETRY 对象,要么指定两个 GEOGRAPHY 对象。

如果某个对象(例如点或线串)仅沿空间对象的边界存在,则 ST_Contains 将返回 False。线串的内部是线串上除起点和终点以外的所有点。

ST_Contains(g1, g2) 在功能上等同于 ST_Within(g2, g1)

不支持顶点或边界位于国际日期变更线 (IDL) 或南、北极的 GEOGRAPHY 多边形。

行为类型

不可变

语法

ST_Contains( g1, g2
                        [USING PARAMETERS spheroid={true | false}] )

参数

g1
空间对象,类型为 GEOMETRY 或 GEOGRAPHY
g2
空间对象,类型为 GEOMETRY 或 GEOGRAPHY

参数

spheroid = {true | false}

(可选)用于指定是否使用理想球体或 WGS84 的 BOOLEAN 值。

默认值:False

返回

BOOLEAN

支持的数据类型

兼容的 GEOGRAPHY 对:

示例

以下示例显示了 ST_Contains 的用法。

第一个多边形未完全包含第二个多边形:

=> SELECT ST_Contains(ST_GeomFromText('POLYGON((0 2,1 1,0 -1,0 2))'),
   ST_GeomFromText('POLYGON((-1 3,2 1,0 -3,-1 3))'));
 ST_Contains
-------------
 f
(1 row)

如果点在线串上,但不在终点上:

=> SELECT ST_Contains(ST_GeomFromText('LINESTRING(20 20,30 30)'),
   ST_GeomFromText('POINT(25 25)'));
 ST_Contains
--------------
 t
(1 row)

如果点在多边形的边界上:

=> SELECT ST_Contains(ST_GeographyFromText('POLYGON((20 20,30 30,30 25,20 20))'),
   ST_GeographyFromText('POINT(20 20)'));
 ST_Contains
--------------
 f
(1 row)

两个在空间上等效的多边形:

=> SELECT ST_Contains (ST_GeomFromText('POLYGON((-1 2, 0 3, 0 1, -1 2))'),
   ST_GeomFromText('POLYGON((0 3, -1 2, 0 1, 0 3))'));
 ST_Contains
--------------
 t
(1 row)

另请参阅