PostGis空间(上):常见空间关联函数全解析

1、简介

接着PostGis入门的下一章节,我们来讲PostGis的空间关系,下面讲空间关系常用的函数以及他们的含义。 不了解PostGis的朋友可以看一下这篇文章:PostGIS入门指南:将PostgreSQL转变为强大的空间数据库

2、空间关系

2.1 ST_Equals

ST_Equals(几何 A,几何 B)测试两个几何的空间相等性。

  • 如果两个相同类型的几何具有相同的 x,y 坐标值,即如果第二个形状等于(相同)第一个形状,则 ST_Equals 返回 TRUE。 几何意义:
  • 空间相等性: 两个几何对象在空间上完全相等意味着它们覆盖相同的空间区域,并且几何形状完全一致。
  • 边界和内部: ST_Equals 不仅检查两个几何对象的形状,还检查它们的边界和内部是否完全相同。
  • 拓扑相等 : 这意味着两个几何对象即使在表示形式上有所不同(例如顶点顺序),只要它们覆盖相同的空间区域,也会被认为是相等的。

2.2 ST_Intersects、ST_Disjoint、ST_Crosses和ST_Overlaps

ST_IntersectsST_CrossesST_Overlaps 测试几何图形的内部是否相交。

2.2.1 ST_Intersects

ST_Intersects(几何 A,几何 B)返回 t (TRUE), 如果几何对象 A 和 B 之间有任何共同的空间部分。这意味着 A 和 B 之间的边界或内部有重叠或接触的部分。

2.2.2 ST_Disjoint

ST_Intersects 的反义词是 ST_Disjoint(几何 A , 几何 B)。返回 TRUE 如果几何对象 A 和 B 完全不相交,即没有任何重叠或接触。例如,如果两个多边形完全分开,没有任何公共点或边界,那么 ST_Disjoint 会返回 TRUE。

2.2.3 ST_Crosses

ST_Crosses(geometry A, geometry B) 返回 TRUE,如果两个几何对象相交,并且交集位于两个几何对象的内部,同时交集的维度比源几何对象的最大维度小1。 在理解 ST_Crosses 的定义时,重要的是要了解几何对象的维度:

  • 点:0 维
  • 线串:1 维
  • 多边形:2 维
  • 多面体:3 维

2.2.4 ST_Overlaps

ST_Overlaps (几何 A,几何 B)比较两个相同尺寸的几何,如果它们的交集导致几何不同但尺寸相同,则返回 TRUE。 ST_Overlaps(geometry A, geometry B) 返回 TRUE,如果以下条件同时满足:

  1. 几何对象 A 和 B 的维度相同。
  2. 几何对象 A 和 B 的交集是一个具有相同维度的几何对象。
  3. 几何对象 A 和 B 的交集部分导致一个新的几何对象,这个新的几何对象与 A 和 B 都不完全相同。
  4. 交集部分的几何尺寸与 A 和 B 相同。

2.3 ST_Touches

ST_Touches测试两个几何体是否在其边界处相交,但在其内部不相交

2.4 ST_Within和ST_Contains

T_WithinST_Contains测试一个几何图形是否完全位于另一个几何图形中。

2.4.1 ST_Within

ST_Within(geometry A , geometry B) 如果第一个几何图形完全位于第二个几何图形中,则返回 TRUE。ST_Within测试的结果与ST_Contains完全相反。

2.4.2 ST_Contains

ST_Contains(geometry A, geometry B) 如果第二个几何完全包含在第一个几何中,则返回 TRUE。

2.5 ST_Distance和ST_DWithin

一个非常常见的 GIS 问题是"查找其他东西距离 X 内的所有东西"。 ST_Distance(几何 A,几何 B)计算两个几何之间的最短距离,并将其作为浮点数返回。这对于实际报告对象之间的距离很有用。 为了测试两个对象是否在彼此的距离范围内,ST_DWithin 函数提供了索引加速的真/假测试。这对于诸如"道路 500 米缓冲区内有多少棵树"之类的问题很有用。您不必计算实际的缓冲区,只需测试距离关系即可。


PS:

大家好,我是小健,Java开发工程师一枚,我会持续发一些技术推文,偶尔也会发些工作求职,互联网热点的事情,希望各位小伙伴多多支持,如果觉得本篇文章对您有所帮助,记得点赞关注收藏喔~

相关推荐
Moment13 分钟前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
Cobyte1 小时前
AI全栈实战:使用 Python+LangChain+Vue3 构建一个 LLM 聊天应用
前端·后端·aigc
麦聪聊数据1 小时前
Web 原生架构如何重塑企业级数据库协作流?
数据库·sql·低代码·架构
未来之窗软件服务1 小时前
数据库优化提速(四)新加坡房产系统开发数据库表结构—仙盟创梦IDE
数据库·数据库优化·计算机软考
程序员侠客行2 小时前
Mybatis连接池实现及池化模式
java·后端·架构·mybatis
Honmaple2 小时前
QMD (Quarto Markdown) 搭建与使用指南
后端
PP东2 小时前
Flowable学习(二)——Flowable概念学习
java·后端·学习·flowable
invicinble2 小时前
springboot的核心实现机制原理
java·spring boot·后端
Goat恶霸詹姆斯3 小时前
mysql常用语句
数据库·mysql·oracle
全栈老石3 小时前
Python 异步生存手册:给被 JS async/await 宠坏的全栈工程师
后端·python