空间数据拓扑关系的自动生成_0
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
---------------------------------------------------------------最新资料推荐------------------------------------------------------
空间数据拓扑关系的自动生成
空间数据拓扑关系的自动生成冯文钊拓扑空间关系是一种对空间结构进行明确定义的数学方法,具有拓扑关系的矢量数据结构就是拓扑数据结构。
矢量数据拓扑关系在空间数据的查询和分析过程中非常重要,拓扑数据结构是地理信息系统分析和应用功能所必需的,它描述了基本空间目标点、线、面之间的关联、邻接和包含关系。
拓扑空间关系信息是空间分析、辅助决策的等的基础,也是GIS区别于 CAD(计算机辅助设计)等的主要标志。
拓扑空间关系的自动建立算法是 GIS 中的关键和难点算法之一,国内外对该问题一直在进行研究。
而且,由于拓扑关系自动生成与维护的复杂性, GIS 学术界研究人员针对 GIS 是否需要拓扑关系,问题是以一种什么样的方式来进行拓扑空间关系表达。
对于拓扑关系的自动建立问题,研究的焦点是如何提高算法与过程的效率和自动化程度,本章将讲述其实现的基本步骤和要点。
拓扑关系自动生成算法的一般过程为:
1.弧段处理,使整幅图形中的所有弧段,除在端点处相交外,没有其他交点,即没有相交或自相交的弧段。
2.结点匹配,建立结点、弧段关系。
3.建立多边形,以左转算法或右转算法跟踪,生成多边形,
1 / 18
建立多边形与弧段的拓扑关系。
4.建立多边形与多边形的拓扑关系。
5.调整弧段的左右多边形标识号。
6.多边形内部标识号的自动生成。
事实上,拓扑关系的生成过程中还涉及到许多工作,例如弧
段两端角度的计算、悬挂结点和悬线的标识、多边形面积计算、点
在多边性内外的判别等。
第一节拓扑关系的计算机表达一、拓扑结点结点用来描述
如管线的交点、道路路口等现实世界的特征对象,结点可以用来检
测弧段与弧段的连接关系和多边形特征是否能正确地完成。
只与一条弧段相连接的起点或终点叫做悬挂结点。
如图 1 所示 P 点就是悬挂结点:
图 1 结点一般包括:
结点号、结点坐标、与该结点连接的弧段集合,结点的数据
结构可以表示如下:
class Node { private: long _ID; //结点号 Point * _Point; //指向
结点坐标的指针 P(悬挂结点) vectorArcPoint * ArcCollection ; //与该结点相联接的弧段集合指//针
public: Node() {}; //构造函数
~Node() {}; //析构函数 other
Method; //其他公共操作 } 二、拓扑弧段
---------------------------------------------------------------最新资料推荐------------------------------------------------------
及其表示拓扑弧段指处于两个结点之间的点序列串,可以给弧段定
义一个方向,或者定义为数字化弧段时从一个结点到另一个结点的
采点方向,或者硬性定义一个方向,定义方向后弧段开始的结点就
称为起始结点,弧段结束的结点就称为结束结点,由起始结点到终
止结点的方向称为起终方向,由终止结点到起始结点的方向称为终
起方向。
弧段起终方向左侧的多边形称为弧段的左多边形,弧段起终方
向右侧的多边形称为弧段的右多边形,如果弧段的起始结点或终止
结点只与一条弧段相关联,则该弧段称为悬挂弧段,如图 2 所示弧
段 L为悬挂弧段。
一般可以通过标识悬挂弧段来检测原始矢量数据的质量。
L(悬挂弧段)
图 2 图 1 弧段一般包括:
弧段号、弧段节点坐标串、弧段起始和终止结点、弧段左右
多边形,弧段的数据结构可以表示如下:
class Arc { private: long _ID; //弧段号 vectorPoint _Points; //弧段节点坐
标串指针 Node * _start; //起始结点
指针 Node * _end; //终止结点指针
Polygon * _LeftPolygon; //弧段左多边形指针
3 / 18
Polygon * _RightPolygon; //弧段右多边形指针 public: Arc() {}; //构造函数 ~Arc() {}; //析构函数 OtherMethod; //其他公共操
作 } 三、拓扑面及其表示拓扑面是由一条或若干条弧段首尾相
连接而成的边线所包含的区域,内部包含有其它拓扑面的拓扑面
一般称为复杂面,被包含的拓扑面称为岛,没有岛的拓扑面称为简
单面,如图 3 所示。
对于拓扑面也可以定义正反方向,一般定义为:
当沿拓扑面的边界前进时,被弧段所包围的面域始终处于弧段
的右侧时的方向就是正方向,反之,则是反方向,如图 4 所示,
箭头所指向的方向就是正方向,可以看出对于拓扑面的外边界,顺
时针方向是正方向,而对于内边界逆时针方向就是正方向。
简单面复杂面图 3 图 4 多边形一般包括:
多边形号、中心点坐标、多边形属性数据、多边形的组成弧
段号、多边形岛的信息,考虑到组成弧段的方向和多边形顶点序列
的方向存在的可能的不一致性以及效率问题,可以改为记录下组成
多边形的弧段指针和方向性信息,即弧段与多边形的方向是否一致,
对于岛的信息则通过将构成变形的边线分块来处理的方式体现,比
如多边形包含岛屿,则可以使多边形的外边界成为多边形的第一部
分,岛屿作为多边形的二、三、四等部分的方式加以解决。