ST_ContainsProperly

如果Geometry对象B完全在Geometry对象A的内部,则返回True。

语法

boolean  ST_ContainsProperly(geometry  geomA , geometry  geomB);

参数

参数名称

描述

geomA

第一个Geometry对象。

geomB

第二个Geometry对象。

描述

  • 如果输入的Geometry对象B和Geometry对象A的内部相交,但不和A的边界(或外部)有接触,那么返回True。B中每个点都在A内部。

  • 两个对象的DE-9IM相交矩阵符合[T**FF*FF*]

  • 该函数不支持GeometryCollection类型对象作为输入参数。

  • 不要将该函数用于无效的Geometry对象,否则会得到不可预料的结果。

  • 该函数会自动生成一个bounding box用于利用Geometry对象上的索引。如果不想使用索引,请使用函数_ST_ContainsProperly。

示例

对比ST_ContainsProperly和ST_Contains

SELECT ST_Contains(g1,g2), ST_ContainsProperly(g1,g2),ST_ContainsProperly(g1,g3)
    FROM (SELECT 'POLYGON((0 0,0 3,3 3,3 0,0 0))'::geometry as g1,
                     'POLYGON((0 0,0 1,1 1,1 0,0 0))'::geometry as g2,
                     'POLYGON((1 1,1 2,2 2,2 1,1 1))'::geometry as g3 ) as test;
 st_contains | st_containsproperly | st_containsproperly
-------------+---------------------+---------------------
 t           | f                   | t
(1 row)