PostGIS中的“ST_Intersects”和“ST_Within”
在PostGIS中,ST_Intersects判断两个几何图形是否有任何公共部分(包括边界接触),而ST_Within判断第一个几何图形是否完全位于第二个几何图形内部(边界接触不算在内),前者是相交关系(对称),后者是包含关系(不对称),两者在空间查询中有不同的应用场景。
ST_Intersects(相交)
- 定义:当两个几何图形之间存在任何公共部分时返回TRUE
- 判断条件:两个图形有公共点、公共线或公共面
- 示例:
- 两个多边形有重叠区域
- 一条线穿过一个多边形
- 一个点位于多边形的边界上
ST_Within(被包含)
- 定义:当第一个几何图形完全位于第二个几何图形内部时返回TRUE
- 判断条件:几何图形A完全在几何图形B的内部
- 注意:与ST_Contains完全相反,即
ST_Within(A,B)等价于ST_Contains(B,A) - 示例:
- 一个点完全在一个多边形内部
- 一条线完全在一个多边形内部
- 一个小多边形完全在一个大多边形内部
关键区别
| 特性 | ST_Intersects | ST_Within |
|---|---|---|
| 关系类型 | 相交关系 | 包含关系 |
| 返回条件 | 有公共部分即可 | 必须完全在内部 |
| 边界情况 | 边界接触也算相交 | 边界接触不算在内部 |
| 对称性 | 对称(A∩B = B∩A) | 不对称(A在B内 ≠ B在A内) |
实际应用示例
AND ST_Within(t.shape, ST_GeomFromText(#{req.wkt}, 4490))
AND ST_Intersects(f.geom, ST_GeomFromText(#{req.wkt}, 4490))
总结:ST_Intersects判断是否有任何交集,而ST_Within判断是否完全包含在内部,两者在空间查询中有不同的应用场景。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 软件从业者Hort
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

