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

相关推荐
TDengine (老段)9 分钟前
基于 TSBS 标准数据集下 TimescaleDB、InfluxDB 与 TDengine 性能对比测试报告
java·大数据·开发语言·数据库·时序数据库·tdengine·iotdb
lgily-122512 分钟前
常用的设计模式详解
java·后端·python·设计模式
TDengine (老段)12 分钟前
TDengine 在金融领域的应用
大数据·数据库·物联网·金融·时序数据库·tdengine·涛思数据
标贝科技24 分钟前
标贝科技:大模型领域数据标注的重要性与标注类型分享
数据库·人工智能
野木香30 分钟前
mysql8常用sql语句
数据库·sql·mysql
hycccccch31 分钟前
Redis的IO多路复用
数据库·redis·缓存
意倾城1 小时前
Spring Boot 配置文件敏感信息加密:Jasypt 实战
java·spring boot·后端
火皇4051 小时前
Spring Boot 使用 OSHI 实现系统运行状态监控接口
java·spring boot·后端
不再幻想,脚踏实地1 小时前
Spring Boot配置文件
java·数据库·spring boot
_extraordinary_1 小时前
MySQL 事务(二)
android·数据库·mysql