很有用的一篇资料,经常用,经常找,不如搬过来。感谢原作者!

来源:Classicning Daily Log

http://www.classicning.com/blog/post/388.html

DE-9IM:The Dimensionally Extended Nine-Intersection Model要使用DE-9IM首先要建立几何对象的interior,boundary和exterior。首先boundary是指对几何进行一次降维之后得到对 象,举例来说一个点的boundary为空,未封闭的线的boundary为其两个端点,封闭线的boundary为空,多边形的boundary为它的 环状边界。interior是指几何对象的边界被移除之后剩下的部分。exterior则是指不在boundary和interior中点构成的几何对 象。

约定:以I(a),B(a),E(a)表示几何对象a的interior,boundary和exterior,以dim(a)表示几何对象的维度,在二维空间中他的取值为{-1, 0, 1, 2},其中-1代表空。为了便于表示,用下面一些符号来表示取值的集合:
T : {0, 1, 2}
F : {-1}
* : {-1, 0, 1, 2}
0 : {0}
1 : {1}
2 : {2}

那么就可以用这样一个矩阵来判断几何对象a和b的位置关系:

 

Interior

Boundary

Exterior

Interior

dim(I(a)∩I(b))

dim(I(a)∩B(b))

dim(I(a)∩E(b))

Boundary

dim(B(a)∩I(b))

dim(B(a)∩B(b))

dim(B(a)∩E(b))

Exterior

dim(E(a)∩I(b))

dim(E(a)∩B(b))

dim(E(a)∩E(b))

另外,将零维对象简写为P,一维对象简写为L,二维对象简写为A。

根据这个矩阵的值可以构造一个字符串,这个字符串称为IntersectionPattern。另外JTS中的IntersectionMatrix也封装了这个矩阵。

以下是几个预定义的空间关系
Equal 两个几何对象完全相同,它的定义表示为DE-9IM即"TFFFTFFFT"
Disjoint 两个对象的边界和内部都没有任何公共部分,表示为DE-9IM是"FF*FF****"
Intersection Disjoint取反
Touches 简单地说Touches表示两个对象的边缘相接触,这个关系是以下几类几何对象间特有的:A/A, L/L, L/A, P/A ,P/L。用DE-9IM表示,可以为"FT*******", "F**T*****"或"F***T****"
Crosses Crosses表示一个对象穿过另一个对象,它应用于P/L, P/A, L/L和L/A之间。用DE-9IM表示为:"T*T******"(P/L, P/A,L/A),"0********"(L/L)
Within 包含于。DE-9IM表示:"T*F**F***"
Overlaps 相叠,应用于A/A, L/L 和P/P之间。DE-9IM:"T*T***T**"(A/A, P/P),"1*T***T**"(L/L)
Contains 包含,对立于Within。

JTS的Geometry类实现了以上的所有方法,而由于这些方法不能表示全部的空间位置关系,因此OGC的Simple Feature Specification和JTS都提供了一个relate方法,用来测试指定的DE-9IM关系。

转载于:https://www.cnblogs.com/flyingfish/archive/2007/10/12/922231.html

收藏:用DE-9IM判断二维空间位置关系相关推荐

  1. JS魔法堂:判断节点位置关系

    一.前言 在polyfill querySelectorAll 和写弹出窗时都需要判断两个节点间的位置关系,通过jQuery我们可以轻松搞定,但原生JS呢?下面我将整理各种判断方法,以供日后查阅. 二 ...

  2. 判断点与圆的位置关系

    判断点与圆的位置关系 第一步,创建一个类,代表二维空间的一个点.二维空间确定一个点可参考平面直角坐标系中,确定了x坐标和y坐标,即可确定点的位置 package com.tyl.homework;im ...

  3. c语言 两条线段位置,C++/STL实现判断平面内两条线段的位置关系代码示例

    概念 平面内两条线段位置关系的判定在很多领域都有着广泛的应用,比如游戏.CAD.图形处理等,而两线段交点的求解又是该算法中重要的一环.本文将尽可能用通俗的语言详细的描述一种主流且性能较高的判定算法. ...

  4. C#判断点和直线的位置关系

    /// <summary>/// 判断点和直线的位置关系/// </summary>/// <param name="LinePntA">直线上 ...

  5. 【POJ - 2318】TOYS(计算几何,叉积判断点与直线位置关系,二分)

    题干: Calculate the number of toys that land in each bin of a partitioned toy box.  Mom and dad have a ...

  6. java 课后习题 判断两个圆是否相交 圆和直线的位置关系

    知识点: 1.点到直线的距离公式 d = Ax +By +C = 0 根号 A^2+B ^2 2.直线方程的一般式 Ax + Bx + C = 0 A = y2 -y1 B =x1 -x2 C = x ...

  7. 【JAVA 第四章 流程控制语句】课后习题 判断两个圆是否相交 圆和直线的位置关系

    知识点: 1.点到直线的距离公式 d = Ax +By +C = 0 根号 A^2+B ^2 2.直线方程的一般式 Ax + Bx + C = 0 A = y2 -y1 B =x1 -x2 C = x ...

  8. sf | 判断点线面等几何对象的空间位置关系

    根据交点的个数和位置,两个几何要素之间的空间位置关系可分为相离.相切.相交和包含四种: 相离是指两个几何要素没有交点,相交是指两个要素存在交点,广义上讲相切和包含是相交关系中的特殊情况: 相切是指交点 ...

  9. C++实现空间中两个三角形位置关系(相交、平行)的判断

    两个空间三角形相交关系的判断: 分别判断三角形trangle_1 的三条边与三角形trangle_2 的位置关系,三角形trangle_2 的三条边与三角形trangle_1 的位置关系. --求解三 ...

最新文章

  1. 安卓相对布局常用语句
  2. POJ 3069 Saruman's Army(贪心)
  3. 图表点编辑数据无反应_提升论文硬核实力之“如何避免图表绘制的雷区”
  4. 单片机常用的几种通信协议
  5. 常用数据验证正则表达式释义(附:正则表达式常用符号)
  6. 8006.ros2发布与订阅
  7. Android 数据存储和文件使用案例分析
  8. Web前端Javascript笔记(6)正则表达式
  9. 少有人挖但仍可获得奖金的10类Web 漏洞(下)
  10. 如何将Spring Bean注入到JSF Converter
  11. 【039】Geometry 总结
  12. android 沙盒双开 微信,微信双开回来了,而且还不会被封号
  13. zyf的童年(异或运算的运用)
  14. ubuntu安装百度输入法
  15. java生成假数据工具类-基于Faker1.0.2
  16. 思岚S2激光雷达6——matlab处理雷达数据
  17. 啊哈添柴挑战Java1827. 顺序输出(难)
  18. Hadoop-wordcount,合并多个part-*文件
  19. 被动信息收集(一)nslookup.dig.DNS字典爆破.whois
  20. spark并行度(parallelism)和分区(partition)未生效的问题

热门文章

  1. python3入门(三)字典的使用
  2. 富士康裁员六万,试图用机器人扭转赤字?
  3. Centos7制作docker初始镜像
  4. 国有大型企业数据级同城异地灾难备份案例
  5. s:select 使用
  6. IE二级链接无法打开
  7. Java使用POI读取和写入Excel指南
  8. Python-SQLAlchemy:第4节:级联
  9. 使用一个月Windows 8.1优缺点汇总
  10. AndroidStudio 解决Android方法数超过65535的问题