2.4.2. 拓扑数据结构¶

1. 拓扑学

图2-24  拓扑等价的三个图形

拓扑学(Topology)是一门新兴的几何学,作为几何学。

它仍是研究图形(或形状)的科学。

它之所以较新,是因为它研究的是图形在连续变形下的不变的整体性质。

与其它的几何学相比,它更为灵活和更具可塑性,所以有时又称做“橡皮板几何学”。

拓扑学与欧几里得几何学的不同之处在于它不涉及距离、方位或曲直等性质,即不涉及图形的量度性质。

例如,火车站的交通示意图、公共汽车站的路牌都可以看作拓扑图形,因为这些图形在比例、形状或位置方面均有着极大的变形。

在欧几里得几何学中,只允许图形做刚体运动(平移、旋转、反射),在这种运动中,图形上任意两点间的距离保持不变,因此,这里的几何性质就是指那些在刚体运动中保持不变的性质,因而欧几里得几何学可叫做“刚体几何学”。

拓扑学中的运动可以称作“弹性运动”,对图形可以任意伸张、扭曲、拉缩,但图形中不同的各点仍为不同的点,不可能使不同的两点合并成一点。

当且仅当一图形做弹性运动使其与另一图形重合,这两个图形是“拓扑等价”的(如图2-24),一个图形的拓扑性质是那些与此图形等价的图形都具有的性质。

因此,图形的拓扑性质就是那些在弹性运动中保持不变的性质,一图形的任何弹性运动都丝毫不改变图形的拓扑性质,所以拓扑学也叫“弹性几何学”。

2. 拓扑关系

在地图上仅用距离和方向参数描述图上目标之间的关系是不圆满的。

因为图上两点间的距离或方向(在实地上是一定的)会随地图投影不同而发生变化。

因此仅用距离和方向参数还不可能确切地表示它们之间的空间关系。

并且,在地图图形的连续变换中,它的某些性质发生了变化,如长度、角度和相对距离,但另一些性质则保持不变,如邻接性、包含性、相交性和空间目标的几何类型(点、线、面特征类型)等保持不变。

这类在连续变形中保持不变的属性称为拓扑属性。

空间拓扑关系是讨论空间实体间拓扑属性,即在拓扑变换旋转、平移、缩放等下保持不变的空间关系,它是GIS中不可缺少的一种基本关系。

拓扑关系是不考虑度量和方向的空间实体之间的空间关系,拓扑学是研究图形在拓扑变换下不变的性质,因此拓扑学己成为空间拓扑关系研究的基础,为空间对象间的包含、覆盖、相离、和相接等空间关系的描述提供直接的理论依据。

地理空间中的点、线、面实体之间存在着各种各样的拓扑关系,因此表示拓扑关系的数据是空间数据的重要组成部分。

另外,空间拓扑关系是空间查询与分析的基础。

一方面它为地理信息系统数据库的有效建立、空间查询、空间分析、辅助决策等提供了最基础的关系,另一方面使空间拓扑关系理论应用于地理信息系统查询语言,形成一个标准的空间查询语言成为可能,从而通过应用程序进行空间特征的存储、提取、查询、更新等。

图2-25空间几何实体图形

拓扑关系是指网结构元素结点、弧段、面域之间的空间关系,主要表现为下列三种关系:

(1)拓扑邻接

拓扑邻接指存在于空间图形的同类元素之间的拓扑关系。

如图2-25(a)所示,结点邻接关系有N1/N4,N1/N2···等;多边形邻接关系有P1/P3,P2/P3

···等。

(2)拓扑关联

拓扑关联指存在于空间图形的不同类元素之间的拓扑关系。

如图2-25(a)所示,结点与弧段关联关系有N1/C1、C3、C6,N2/C1、C2、C5

···等。

多边形与线段的关联关系有P1/C1、C5、C6,P2/C2、C4、C5、C7等。

(3)拓扑包含

拓扑包含指存在于空间图形的同类但不同级的元素之间的拓扑关系,如图2-25(b)所示,P1包含P2和P3。

空间数据拓扑关系对地理信息系统的数据处理和空间分析具有重要意义。

根据拓扑关系,不需要利用坐标或距离,可以确定一种地理实体相对于另一种地理实体的位置关系,拓扑数据也有利于空间要素的查询,例如,查询某铁路线有哪些车站,汇入某条主流的支流有哪些,以某个交通“结点”为中心,呈辐射状的道路各通向何地。

3. 拓扑数据结构

在矢量拓扑数据结构中,空间数据不但要记录空间实体的位置,而且要记录空间实体间的拓扑关系,这是地理信息系统区别于其它数据库管理系统的重要标志。

建立拓扑关系是一种对空间结构关系进行明确定义的数学方法。

目前,空间数据的拓扑数据结构的表示方式没有固定的格式,也还没有形成标准,其基本原理是相同的。

因此,在矢量拓扑结构表示方法中,任何地理实体均可以用点、线、面来表示其特征,并且可根据各实体间的空间拓扑关系,解译出更多的信息。

对于二维空间数据而言,矢量数据可抽象为点(结点)、线(弧段或边)、面(多边形)三种要素,也称拓扑要素。

对三维而言,还要加上体。

其最基本的拓扑关系主要有拓扑邻接、拓扑关联、拓扑包含等几种。

拓扑数据结构中关键就是对这些拓扑要素间的拓扑关系进行表示,几何数据的表示可参照矢量数据的简单数据。

虽然,目前GIS中基本拓扑关系的表示方法不尽相同,但是只要能完整表达出拓扑要素间的基本拓扑关系就可以。

图2-26基本拓扑关系数据

根据图2-26所示的基本拓扑关系,图2-25(a)中的拓扑实体关系数据结构如表2-1、表2-2、表2-3、表2-4所示。

其中,表2-3中“-”表示边的方向为逆时针方向,“0”为区分含洞的弧段。

目前,人们对拓扑关系的表达进行了大量研究,提出了更复杂的关联和邻接关系,但各种GIS软件对矢量空间数据拓扑关系的表达还没有超过使用上述所列的各种关系。

实际上,许多GIS系统在处理使用上述表格的方式有所不同,对于上述出现变长记录的表格(如结点关联的弧段),有的系统使用指针方法,有的则直接存储变长记录(如ArcGIS)。

表2-1弧段—结点关系

弧段

弧段两端结点

弧段

左面

右面

C1

N2,N1

C1

0

P1

C2

N3,N2

C2

0

P2

C3

N1,N3

C3

0

P3

C4

N4,N3

C4

P3

P2

C5

N2,N4

C5

P1

P2

C6

N1,N4

C6

P3

P1

C7

N5,N5

C7

P4

P2

表2-2弧段—面关系

表2-3面—弧段关系

构成面的弧段

结点

结点关联弧段

P1

C1, C6 , -C5, 0

N1

C6, C3, C1

P2

C4,C5, C2, 0, C7

N2

C1, C5, C2

P3

C4, C6, -C3, 0

N3

C2, C4, C3

P4

C7, 0

N4

C4, C5, C6

N5

C7

表2-4结点—弧段关系

拓扑数据结构的构建实际上大大增加了数据编辑的难度和复杂性。

以至于它成了一个引起广泛争议的问题。

显然,拓扑关系的存在为数据错误的查找和空间分析提供了必要的前提,但并不是所有的GIS应用、都必须具备这种预先存储的、耗费大量精力才能创建的数据结构。

许多GIS软件只使用其中几种最基本的拓扑关系,就能满足大多数的空间分析需要,但更复杂的空间分析,也许需要更多的拓扑关系。

一般地,建立的拓扑关系越多,数据编辑的维护难度就越大、越复杂,

但进行处理比较复杂的空间分析时就越方便,空间分析花费的时间就越少。

因此,究竟是否应预先存储拓扑关系、存储哪些拓扑关系就成为当前争论的焦点。

java gis 矢量数据结构_2.4. 矢量数据结构相关推荐

  1. java set第n位_数据结构与算法——常用数据结构及其Java实现

    本文采用Java语言来进行描述,帮大家好好梳理一下数据结构与算法,在工作和面试中用的上.亦即总结常见的的数据结构,以及在Java中相应的实现方法,务求理论与实践一步总结到位. 常用数据结构 数组 数组 ...

  2. java架构师进阶之独孤九剑:数据结构以及书籍推荐

    这是整个java架构师连载系列,分为9大步骤,我们现在还在第一个步骤:程序设计和开发->数据结构与算法. " 如果说 Java 是自动档轿车,C 就是手动档吉普.数据结构呢?是变速箱的 ...

  3. 数据结构与算法——常用数据结构及其Java实现

    前言 仿佛一下子,2017年就快过去一半了,研一马上就要成为过去式了,我打算抓住研一的尾巴,好好梳理一下数据结构与算法,毕竟这些基础知识是很重要的嘛.所以准备在这里搞一个系列的文章,以期透彻. 本系列 ...

  4. 【数据结构基础】线性数据结构——栈和队列的总结及封装(C和java)

    前言 数据结构,一门数据处理的艺术,精巧的结构在一个又一个算法下发挥着他们无与伦比的高效和精密之美,在为信息技术打下坚实地基的同时,也令无数开发者和探索者为之着迷. 也因如此,它作为博主大二上学期最重 ...

  5. 【数据结构】初入数据结构的树(Tree)以及Java代码实现(一)

    初入数据结构的树(Tree)以及Java代码实现(一) 树的定义 为什么叫树? 树型结构的元素具有一对多关系 树的定义 树的一些基本概念 树的结点 后代,祖先 子树.空树 树的度与高(深度),结点的度 ...

  6. java对数据结构的了解_数据结构对java有用吗

    设计一个数据结构其实就是把现有的基本数据类型组织.封装起来.相对来说数据结构对于C/C++比较重要,因为JAVA类机制实在太强大了,类库其实可以理解为数据结构的封装.即使对于一些比较复杂的抽象数据类型 ...

  7. 数据结构和算法 java实现_数据结构与算法——常用数据结构及其Java实现

    前言 仿佛一下子,2017年就快过去一半了,研一马上就要成为过去式了,我打算抓住研一的尾巴,好好梳理一下数据结构与算法,毕竟这些基础知识是很重要的嘛.所以准备在这里搞一个系列的文章,以期透彻. 本系列 ...

  8. java矢量字,Java ME Mapdigit 二维图形库矢量字体下载

    Java ME Mapdigit 二维图形库矢量字体下载 英文字体 arial.fon Download courier.fon Download elephant.fon Download geor ...

  9. 数据结构java实验 刘小晶_《数据结构实例解析与实验指导——Java语言描述》刘小晶著【摘要 书评 在线阅读】-苏宁易购图书...

    商品参数 作者: 刘小晶著 出版社:清华大学出版社 出版时间:2013-2-1 版次:1 印次:1 印刷时间:2013-2-1 字数:619000 页数:380 开本:16开 装帧:平装 ISBN:9 ...

  10. gis 矢量切片读取_ArcGIS 矢量切片全接触(多图)

    ArcGIS 矢量切片知多少 >>>>什么是矢量切片 矢量切片是一种新的利用一些新技术来控制动态的可交互的地图展示方式,这种新技术可以让个人在移动端或者浏览器端自定义个性化的地 ...

最新文章

  1. 【计算机网络】传输层 : TCP 拥塞控制 ( 慢开始 | 拥塞避免 | 快重传 | 快恢复 )
  2. delphi项目开发经验2008年09月18日 星期四 10:07随着项目的失败,这些天一直在总结失败的原因,到底是为什么?
  3. [Shell]条件判断与流程控制:if, case, for, while, until
  4. 文件服务器ping延时大,windowns 2008 ping 127.0.0.1延迟大的解决方法。
  5. 单片机sleep函数的头文件_单片机空项目代码解析
  6. Scala案例:词频统计
  7. 梅特勒托利多xk3124电子秤说明书_托利多电子秤使用说明
  8. 拖拽之路(四):自定义QListView实现美观的拖拽样式(拖拽不影响选中)
  9. 惠普:某些 SSD 驱动的寿命只有32,768 小时(3年多),立即更新!
  10. matlab simulink电感,一文教你快速学会在matlab的simulink中调用C语言进行仿真
  11. Undefined和Null的区别
  12. 海南自贸区电信行业环境分析
  13. SAR成像处理算法_CS算法_原理
  14. 根据计算机配置设置bios,电脑如何进入bios设置
  15. php 将pdf生成图片,php 将pdf转成图片且将图片拼接
  16. 转:各种文本格式转换的网站
  17. 【无标题】解决最新版discuz3.4安装模板插件提示【对不起,您安装的不是正版应用】
  18. linux指令练习题
  19. 嵌入式算法:STM32 F4xx 使用DSP实现cubic spline插值算法
  20. 记一个简单的Android计时器制作过程。

热门文章

  1. 手机微信收不到消息提醒,这样设置就能轻松解决
  2. 微信突然限制,你的小程序链接还好吗?
  3. 计算机毛利润的函数,毛利率计算公式
  4. 这份免税的农产品销售发票,可以抵扣9%的增值税吗?
  5. 适合WhatsApp网页版的4个最好的免费WhatsApp 群发工具
  6. 圆柱体积计算机公式,圆柱的体积计算公式是什么 怎么计算
  7. 有监督学习,无监督学习,强化学习总结
  8. 关于Ubuntu的联网操作
  9. 微信能上但浏览器无法上网
  10. spss连接mysql