ST_ContainsProperly — 测试 B 的每个点是否都位于 A 的内部
boolean ST_ContainsProperly(
geometry geomA, geometry geomB)
;
如果 B 的每个点都位于 A 的内部(或者等效地,B 的任何点都不位于 A 的边界或外部),则返回 true
。
用数学术语来说: ST_ContainsProperly(A, B) ⇔ Int(A) ⋂ B = B
如果两个几何图形的 DE-9IM 交集矩阵匹配 [T**FF*FF*],则 A 正确包含 B
A 没有正确地包含自身,但确实包含自身。
计算一组几何图形与大型多边形几何图形的交集时,请使用此谓词。 交叉点相当慢,因此您可以使用 ContainsProperly 提取完全位于该区域内的感兴趣的几何图形,这非常高效。 在这些场景中,直观地看出交集确实是原始目标几何体。
此功能自动包括利用几何上可用的任何空间索引的边界框比较。 要避免使用索引,请使用函数 |
该谓词相对于 ST_Contains 和 ST_Intersects 的优点是可以更有效地计算,无需计算各个点的拓扑。 |
这个函数是由 GEOS 模块执行的。
可用性:1.4.0
增强:3.0.0 启用了对 |
请勿将此函数用于无效的几何图形。 你会得到意想不到的结果。 |
--a circle within a circle SELECT ST_ContainsProperly(smallc, bigc) As smallcontainspropbig, ST_ContainsProperly(bigc,smallc) As bigcontainspropsmall, ST_ContainsProperly(bigc, ST_Union(smallc, bigc)) as bigcontainspropunion, ST_Equals(bigc, ST_Union(smallc, bigc)) as bigisunion, ST_Covers(bigc, ST_ExteriorRing(bigc)) As bigcoversexterior, ST_ContainsProperly(bigc, ST_ExteriorRing(bigc)) As bigcontainsexterior FROM (SELECT ST_Buffer(ST_GeomFromText('POINT(1 2)'), 10) As smallc, ST_Buffer(ST_GeomFromText('POINT(1 2)'), 20) As bigc) As foo; --Result smallcontainspropbig | bigcontainspropsmall | bigcontainspropunion | bigisunion | bigcoversexterior | bigcontainsexterior ------------------+------------------+------------------+------------+-------------------+--------------------- f | t | f | t | t | f --example demonstrating difference between contains and contains properly SELECT ST_GeometryType(geomA) As geomtype, ST_Contains(geomA,geomA) AS acontainsa, ST_ContainsProperly(geomA, geomA) AS acontainspropa, ST_Contains(geomA, ST_Boundary(geomA)) As acontainsba, ST_ContainsProperly(geomA, ST_Boundary(geomA)) As acontainspropba FROM (VALUES ( ST_Buffer(ST_Point(1,1), 5,1) ), ( ST_MakeLine(ST_Point(1,1), ST_Point(-1,-1) ) ), ( ST_Point(1,1) ) ) As foo(geomA); geomtype | acontainsa | acontainspropa | acontainsba | acontainspropba --------------+------------+----------------+-------------+----------------- ST_Polygon | t | f | f | f ST_LineString | t | f | f | f ST_Point | t | t | f | f