DE-9IM全称为Dimensionally Extended nine-Intersection Model,是一种判断对象之间空间关系的拓扑模型,java的拓扑套件jts和python的shapely在空间关系计算上,都使用了这种模型,它把复杂的空间运算降维成逻辑运算,用以提升程序的计算性能。

在DE-9IM中,几何对象被分成三个部分,内部(interior)、边界(boundary)和外部(exterior)。

模型对这三个部分的规定为:一个点的boundary为空;未封闭的线的boundary是它的两个端点;封闭线的boundary是空;多边形的boundary是它的环状边界;interior是边界被移除后剩下的部分。exterior是不在boundary和interior中点构成的部分。

Subtypes

Dim

Interior (I)

boundary (B)

Point, MultiPoint

0

Point, Points

Empty

LineString, Line

1

Points that are left when the boundary points are removed.

Two end points.

LinearRing

1

All points along the geometry.

Empty.

MultilineString

1

Points that are left when the boundary points are removed.

Those points that are in the boundaries of an odd number of its elements (curves).

Polygon

2

Points within the rings.

Set of rings.

MultiPolygon

2

Points within the rings.

Set of rings of its elements (polygons).

NOTICE: exterior points (E) are points p not in the interior or boundary, so not need extra interpretation, E(p)=not(I(p) or B(p)).

几何对象a与b的关系即可用一个3×3的数组表示:

其中dim()是相交部分的维度,点是0,线是1,面是2,如果不相交是-1。

用一个直观的例子来看:

从左到右和从上到下读取,DE-9IM(a,b)字符串代码为212101212,其中0、1、2都是相交,用T替换,这个字符串可以更新为TTTTTTTTT,-1是不相交,可以替换成F,这里没有。

可以看出,字符串前8个里,只有一个T就可以判断面a和b是相交的。所以,DE-9IM(a,b)函数,不需要把9个值都计算出来,就可以判断两者之间的关系,对于数组中不需要计算的值,用*号替代。

DE-9IM模型对空间关系都有定义。

我们只要能计算出3×3的Boolean数组,就能判断两个几何对象的关系。

在JTS或shapely程序中,为了提升计算性能,一般还会先进行MBR判断,再进行DE-9IM判断。

以最常见的a.interserts(b)为例,判别a是否与b相交。

1.判断a的MBR(最小外包矩形)是否与b的MBR相交,不相交,返回false。

2.判断a是否是矩形,如果是,判断a是否与b相交,不相交,返回false。

3.判断b是否是矩形,如果是,判断b是否与a相交,不相交,返回false。

4.采用DE-9IM模型进行相交判断,只要不是Disjoint,就是相交。

5.判断disJoint,既是经典的数学问题,点是否落在多边形内。

更具体的运算逻辑,可以查看JTS或shapely源码。

DE-9IM模型的原理是这样的,但是我们不需要自己写算法,只需要了解原理,最终的计算,还是会交给JTS或shapely。

GIS算法:3_拓扑空间关系计算模型DE-9IM相关推荐

  1. 计算圆弧与矩形相交_GIS算法:3_拓扑空间关系计算模型DE-9IM

    DE-9IM全称为Dimensionally Extended nine-Intersection Model,是一种判断对象之间空间关系的拓扑模型,java的拓扑套件jts和python的shape ...

  2. GIS中的拓扑空间关系

    1.GIS系统与一般信息系统的主要区别在于它不仅存储实体的属性信息,还存储实体的几何信息,这里的几何信息主要指的是实体的地理位 置信息[通常用解析几何的方法来分析]以及该实体与其它实体的相对位置信息, ...

  3. 洪水填充算法_基于GIS的洪水淹没范围计算

    03 收稿日期 : 2007 2 06 2 21; 修回日期 : 2007 2 07 2 16 作者简介 : 甘郝新 , 男 , 湖北宜昌人 , 主要从事水利信息化系统设计 . 研发工作. 在防洪减灾 ...

  4. NLP --- 最大熵模型的解法(GIS算法、IIS算法)

    上一节中我们详细的介绍了什么是最大熵模型,也推导出了最大熵模型的目标公式,但是没给出如何求解的问题,本节将详细讲解GIS算法求解最大熵模型的过程,这里先把上一节的推导出的公式拿过来: 上面第一个式子是 ...

  5. GIS算法基础——左转算法拓扑生成

    GIS基础算法目录 GIS算法基础--左转算法拓扑生成 GIS算法基础--矢量数据压缩道格拉斯普克压缩算法(非递归实现) GIS算法基础--左转算法拓扑生成 GIS基础算法目录 基于JavaScrip ...

  6. 量子计算机模型取,Grover算法在单道量子计算模型下的实现

    摘要: 量子计算机以其巨大的潜力日益得到人们的重视,而且在通向真正实用的量子计算装置的道路上,我们也取得了巨大的进步.从经典计算机的体系结构得到启示,人们提出了量子计算的量子线路模型.它基于一系列作用 ...

  7. 量子计算机grover算法,Grover算法在单道量子计算模型下的实现

    摘要: 量子计算机以其巨大的潜力日益得到人们的重视,而且在通向真正实用的量子计算装置的道路上,我们也取得了巨大的进步.从经典计算机的体系结构得到启示,人们提出了量子计算的量子线路模型.它基于一系列作用 ...

  8. [GIS算法] 拓扑关系

    在知识传播途中,向涉及到的相关著作权人谨致谢意! 文章目录 拓扑关系 数据结构 拓扑关系的自动建立 弧段的预处理 直线段相交的判断方法 自相交弧段处理 弧段相交打断处理 结点匹配算法 建立拓扑关系 计 ...

  9. r语言 计算模型的rmse_直播丨R语言与作物模型高级应用实战技术应用

    随着基于过程的作物生长模型(Process-based Crop Growth Simulation Model)的发展,R语言在作物生长模型和数据分析.挖掘和可视化中发挥着越来越重要的作用.想要成为 ...

最新文章

  1. SpringBoot第六篇:springboot整合mybatis
  2. 智能车竞赛技术报告 | 智能车视觉 - 宜宾学院- 平头哥1组
  3. 高性能ASP.NET系统架构设计
  4. bigdecimal不等于0怎么写_创业计划书不知道怎么写?掌握核心逻辑是关键
  5. 循序渐进,学习开发一个RISC-V上的操作系统 5.1答案
  6. c++ 0x8000ffff灾难性故障_《可靠性设计》——故障模式影响分析
  7. 压实你下属身上的责任
  8. BDD敏捷开发入门与实战
  9. go语言:200行代码做udp rtp转发并发分布服务器
  10. domain name
  11. onvif协议之初探
  12. 镜像电流源特点_MOS管电压型静电击穿特点
  13. UNIX网络编程卷一 学习笔记 第一章 简介
  14. 伪随机生成器具体实现——线性同余法
  15. Java代码复用的三种常用方式:继承、组合和代理
  16. Unity3D基础数学向量
  17. Essential Phone PH1官方刷机方法
  18. Minecraft教育版——两个村庄的故事
  19. 我在B站读大学,大数据专业
  20. TextPad安装环境配置

热门文章

  1. 适用于火车头7.6的翻译插件-亲测10000篇文章稳定不报错
  2. 传统民间游戏于文化消费
  3. uniapp:常用跨端业务组件(ts版本)
  4. 不用装闭路电视就可以看CCTV1-10频道电视,在线随心换台包你满意
  5. Balala Power(贪心)
  6. 【批处理命令BAT】一键关闭占用指定网络端口的进程
  7. 0102数据结构和图处理算法-无向图-数据结构和算法(Java)
  8. 软考网管教程精讲之提高交换机网络整体效率
  9. Google pieCharts的学习
  10. win10左下角开始图标点击不能打开