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

相关推荐
晴子呀31 分钟前
分库分表和sql的进阶用法总结
数据库·sql
编程(变成)小辣鸡32 分钟前
Redis 知识点与应用场景
数据库·redis·缓存
Kay_Liang35 分钟前
从聚合到透视:SQL 窗口函数的系统解读
大数据·数据库·sql·mysql·数据分析·窗口函数
H21220216540 分钟前
SQLite3库链接与加载问题解决方案
数据库·oracle·sqlite
uhakadotcom41 分钟前
使用postgresql时有哪些简单有用的最佳实践
后端·面试·github
IT毕设实战小研44 分钟前
基于Spring Boot校园二手交易平台系统设计与实现 二手交易系统 交易平台小程序
java·数据库·vue.js·spring boot·后端·小程序·课程设计
倔强的石头_1 小时前
KingbaseES高可用架构深度解析——从读写分离到异地灾备的全方位守护
数据库
bobz9651 小时前
QT 字体
后端
泉城老铁1 小时前
Spring Boot 中根据 Word 模板导出包含表格、图表等复杂格式的文档
java·后端
用户4099322502121 小时前
如何在FastAPI中玩转APScheduler,实现动态定时任务的魔法?
后端·github·trae