PostGIS提供了若干拓扑关系函数,本文介绍如下函数:
1. ST_3DIntersects #相交
2. ST_Contains #包含
3. ST_ContainsProperly #完全包含
4. ST_Covers #覆盖
5. ST_CoveredBy #被覆盖
6. ST_Crosses #空间相交
ST_3DIntersects-相交
- 定义
boolean ST_3DIntersects( geometry geomA , geometry geomB ); - 说明
重叠或者接触,或者在空间上交叉,都返回True,否则返回false。 - 注意
- 此函数支持3d,不会删除z索引。
- 此函数支持多面体曲面。
- 此函数支持三角形和不规则三角网曲面(TIN)。
- 此方法也由sfgal后端提供。
- 此方法实现SQL/MM规范。
- 示例
SELECT ST_3DIntersects(pt, line), ST_Intersects(pt, line)
FROM (SELECT 'POINT(0 0 2)'::geometry As pt, 'LINESTRING (0 0 1, 0 2 3)'::geometry As line) As foo;
st_3dintersects | st_intersects
-----------------+---------------
f | t
(1 row)
ST_Contains-包含
- 定义
boolean ST_Contains(geometry geomA, geometry geomB); - 说明
几何A包含几何B当且仅当B的点不在A的外部,且B的内部至少有一点位于A的内部。此定义的一个重要微妙之处在于A不包含其边界,但A包含自身。与之形成对比的是,在ST_Contains中,几何体A本身并不正确包含。
如果几何图形B完全位于几何图形A内,则返回TRUE。要使此函数有意义,源几何图形必须具有相同的坐标投影,并且具有相同的SRID。ST_Contains是ST_Inside的反面。所以ST_Contains(A,B)意味着ST_Within(B,A)内,除非是无效的几何图形,不管是否定义,结果总是错误的。 - 注意
- 该方法实现了sql1.1的OpenGIS简单特性实现规范。
- 示例
-- 一个圆在另一个圆中
SELECT ST_Contains(smallc, bigc) As smallcontainsbig,
ST_Contains(bigc,smallc) As bigcontainssmall,
ST_Contains(bigc, ST_Union(smallc, bigc)) as bigcontainsunion,
ST_Equals(bigc, ST_Union(smallc, bigc)) as bigisunion,
ST_Covers(bigc, ST_ExteriorRing(bigc)

本文介绍了PostGIS提供的几种拓扑关系函数,包括ST_3DIntersects、ST_Contains、ST_ContainsProperly、ST_Covers、ST_CoveredBy和ST_Crosses等。这些函数用于判断不同几何对象之间的空间关系。
最低0.47元/天 解锁文章
3620

被折叠的 条评论
为什么被折叠?



