GIS开源库GEOS库学习教程(三):空间关系/DE-9IM/谓词

news/2024/11/17 8:55:37/

1、DE-9IM

  要判断两个多边形的关系,实际上属于几何图形空间关系判断。几何图形并不只有多边形一种,它包括点、线、面构成的任何图形,两两之间相互关系也有很多种,因此空间关系非常复杂。根据前人的研究,总结出了DE-9IM模型,作为一种空间关系判断的标准。

  DE-9IM,全称是Dimensionally Extended nine-Intersection Model (DE-9IM),是一种拓扑模型,用于描述两个几何图形空间关系的一种标准。在专业领域,通常将每个几何图形分为三部分:外部(exterior),边界(boundary)和内部(interior)。相像一下,一个矩形的三个部分分别是指哪些地方?两个图形的关系判断,实际上就是三个部分的分别判断,因此就会有一个3*3交叉矩阵,这个矩阵就是DE-9IM模型,如下图:

在这里插入图片描述
  其中,a,b分别代表两个面,I,B,E分别表示它的三个部分。Dim()函数表示相交部分的维度。如果相交部分是一个面,则是二维,即dim()=2;如果相交部分是一条线,则为一维,dim()=1;如果相交部分是一些点,则为0维,dim()=0;如果不相交,则dim()=-1;从上往下,从左往右读取这个矩阵,就会有一个字符串,如"212101212",即将相互关系转换成了一个字符串,最终对字符串进行判断就可以了。上面的图只是许多关系中的一种,画的是相交的情形,所以并没有出现-1的情况。

  如果换一种写法,我们将(0,1,2)认为是相交,写为T,-1认为不相交,写为F。则"212101212"变为"TTTTTTTTT"。 实际上这9个值,我们只需要知道其中几个值就能作出判断了,不需要全部知道。比如我们只要知道第一位是T,就能判断两者相交,而后面8位是什么并不关心。不关心是什么值,我们就用*来代替,因此,我们只要看到"T********",就知道两个图形相交。

2、谓词

  将关系用专业术语来表达,我们就叫谓词,比如相交、接触、重叠、包含等。关系比较多,定义也是非常精细。我们这里只考虑两个面(两个多边形)的关系,因此,只需要掌握几种关系就可以了。如果需要判断点、线关系的,建议去https://en.wikipedia.org/wiki/DE-9IM 仔细看看,介绍得非常详细。

  面之间的关系,主要两种:相交和脱离(不相交),相交又分为接触、重叠、覆盖和相等。
在这里插入图片描述
覆盖、接触和重叠
                 上图分别表示:覆盖、接触和重叠

在geos中, 这五种关系,分别有对应的函数,返回一个BOOL值

a->equals(b)   //判断ab是否相等,返回
a->disjoint(b)  //判断ab是否脱离
a->touches(b) //判断ab是否接触
a->covers(b)   //判断ab是否覆盖,注意和contains的区别
a->overlaps(b) //判断两者是否有重叠部分
  • 如果ab脱离,可以用:a->distance(b) 计算两者间的最短距离。

  • 如果ab重叠,可以用:a->intersection(b) 返回相交部分的几何图形。

  • 如果不知道两者之间是什么关系 ,可以使用:a->relate(b) 来返回一串字符串,然后去匹配字符串,看属于哪一种关系。


http://www.ppmy.cn/news/46215.html

相关文章

Linux网络-传输层UDP/TCP详解

目录 计算机网络的层状结构 UDP协议 UDP报文格式 理解UDP/TCP报文的本质 UDP的特点 UDP的缓冲区 sendto/recvfrom/send/recv/write/read IO类接口 UDP是全双工的 UDP注意事项 UDP协议,实现简单聊天室(服务端客户端) TCP协议 TCP协…

php跨域调用json的例子

JSON和XML没什么太大区别,不过JSON有一个更大范围的应用,那就是,跨域的数据调用。由于安全性问题,AJAX不支持跨域调用,这样要调用不同域名下的数据,很麻烦。下面这个例子,足以展示php用json如何…

java运动会成绩管理系统dzkf0534程序

借助java编程语言、jsp技术、MySQL数据库和tomcat服务器来完成系统的所有功能,最后进行系统测试,来检测系统的权限和漏洞,从而将系统完善,达到符合标准。 .系统登录:系统登录是用户访问系统的路口&#xff…

【8086汇编】环境搭建 - 学习笔记:WIN10下安装配置 MASMPlus + DOSBox

【8086汇编】环境搭建 - 学习笔记:WIN10下安装配置 MASMPlus DOSBox 一、MASMPlus 1.2下载安装 二、DOSBox 0.74-3下载安装配置自动挂载C盘添加环境变量 三、masm v5.0四、ml.exe v6.11参考资料 一、MASMPlus 1.2 下载 脚本之家:MASMPlus(汇编开发环境…

jenkins——环境变量、节点配置以及节点环境变量的使用

这里写目录标题 一、Jenkins 环境变量1、环境变量分类a、系统内置环境变量b、用户自定义环境变量 2、环境变量的使用3、控制台输出 二、Jenkins 节点配置1、Jenkins的常用节点2、准备工作3、SSH类节点配置4、Java web节点配置5、Java web节点配置详细步骤 三、Jenkins 节点环境…

[NVMe 协议] PCIe 和 NVME 寄存器

声明 主页:元存储的博客_CSDN博客 依公开知识及经验整理,如有误请留言。 个人辛苦整理,付费内容,禁止转载。 内容摘要 前言 NVMe(Over PCIe)寄存器主要分为两类,一类是PCIe配置空间寄存器,一类是NVMe控制器相关的寄存器。 NVMe离不开PCIe,NVMe SSD是PCIe的endpoint。…

深入剖析 Qt QMultiHash:原理、应用与技巧

目录标题 引言QMultiHash 的基本用法综合用法示例 迭代器:遍历 QMultiHash 中的元素(Iterators: Traversing Elements in QMultiHash )QMultiHash的高级用法QMultiHash的优点和局限性优点:局限性: QMultiHash和QHash的…

扬帆优配|逼近历史最高点!刚刚,A股这一板块沸腾!

今天早盘,A股整体小幅走强,上证指数创阶段性新高,并逼近年内最高点,科创50指数则大涨超2%领涨两市。 盘面上,新能源车、黄金、锂矿、建筑等板块涨幅居前,互联网、传媒娱乐、知识产权、博彩概念等板块跌幅居…