Geodatabase中基于规则的拓扑关系管理机制.docx
- 文档编号:3849172
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:22
- 大小:520.98KB
Geodatabase中基于规则的拓扑关系管理机制.docx
《Geodatabase中基于规则的拓扑关系管理机制.docx》由会员分享,可在线阅读,更多相关《Geodatabase中基于规则的拓扑关系管理机制.docx(22页珍藏版)》请在冰豆网上搜索。
Geodatabase中基于规则的拓扑关系管理机制
Geodatabase中基于规则的拓扑关系管理机制
(富融公司蔡晓兵)
1、问题的提出
空间数据的拓扑关系及其处理方法在高级的空间分析处理和空间数据库数据质量保证方面具有相当重要的作用。
在ArcInfo的经典数据格式COVERAGE中,拓扑关系被完整地保存,并有一组检查工具(命令和函数)供使用者对空间数据进行拓扑关系检查并给出错误定位标识和相应的统计数据。
这曾经是ArcInfo有别于其它GIS或图形处理软件的最重要的标志之一,为全球GIS界所广泛推崇。
随着ArcInfo升级到8版本后,全新的空间数据模型Geodatabase被引入,其中对拓扑关系的管理和处理方法发生了重大的改变。
笔者在《中国用户通讯》第十期中曾专门撰文(参见“什么是Geodatabase”)对COVERAGE到Geodatabase的演变进行了阐述,其中有较多的笔墨谈及拓扑关系的处理。
直至ArcGIS8.2版,Geodatabase对拓扑关系的处理都相对薄弱,ArcGISDesktop在处理类似公共点公共边等空间拓扑关系时,所提供的动态编辑工具相对而言也较为简化和单一。
Geodatabase中数据的空间拓扑关系的正确性靠数据入库前的工序来保证,ArcGISDesktop和Geodatabase本身对此并不提供太多的帮助。
时隔一年,情形又一次发生了深刻的变化,在ESRI即将发布的最新版本:
ArcGIS8.3中,Geodatabase对拓扑关系的处理较之以往,由于引入了一些全新的概念和技术,其能力产生了本质的飞跃。
2、Geodatabase中的数据存储和建模
在切入正题之前,让我们对Geodatabase的空间数据存贮机制作一个简要的说明。
Geodatabase是ESRI在其新一代GIS平台软件ArcGIS8中引入的一种全新的空间数据模型。
Geodatabase采用一种开放的结构将空间数据(包括:
矢量、栅格、影像、三维地形等)及其相关的属性数据统一存放在工业标准的数据库管理系统DBMS中。
空间要素类(FeatureClass),如:
河流、国界、宗地、电杆等,对应了DBMS中的表,而具体的一个要素(Feature)则是表中的一条记录。
具有共同空间参考的一组空间要素类又可以组成更大的结构,称为要素数据集合(FeatureDataSet)。
除了空间要素类以外,Geodatabase中还可以建立关系类、几何网络、定义要素子类型、值域及规则等。
所有的要素类均可以借助通用的CASE工具(如:
Visio、RationalRose等)进行模型定义和扩展。
3、Geodatabase中拓扑关系的实现
在ArcGIS8.3版中,Geodatabase引入了拓扑关系规则。
如前所述,在Geodatabase中可以定义关系和规则。
拓扑关系规则即是新增加的一类。
拓扑关系规则可作用于同一要素数据集中的不同要素类或者同一要素类中的不同要素。
用户可以指定空间数据必须满足的拓扑关系约束,譬如:
要素之间的相邻关系、连接关系、覆盖关系、相交关系、重叠关系等。
所有这些关系都对应相应的规则。
在城市规划应用中,两个相邻的地块之间不能有“飞地”,我们可以有一条对应的规则:
“相邻多边形间不能存在间隙”。
再如,当以河流作为国界时,河流(线状)与国界线必须一致,可用规则:
“线必须被多边形边线覆盖”。
用户通过选择若干规则的组合构成对空间数据必须满足的拓扑关系的灵活指定。
为了检查和维护空间数据的拓扑关系正确性,在ArcGISDesktop中给出了一组(编辑)工具,用于对空间数据根据用户指定的拓扑关系规则进行编辑,并帮助用户及时发现可能存在的拓扑关系错误。
Geodatabase中并不实际保存拓扑关系。
不同要素类之间的公共点、公共边等要素是在拓扑编辑过程中动态地检测到的。
例如,我们选择一条线并对其进行编辑,此时Geodatabase将自动检测到与此线要素具有公共几何元素的所有其它要素,当我们修改该线要素时,系统自动对所有的公共边和公共点进行维护,以保持其应有的拓扑关系。
这种实现方式的好处在于,可以局部、有选择的维护拓扑关系,效率很高。
4、拓扑规则
拓扑规则可以定义在要素类的不同要素之间,也可以定义在两个或多个要素类之间。
比较典型的拓扑规则例子是:
多边形不能相互重叠(两个建设用地地块间不可相互重叠);点必须被多边形边线覆盖(建设用地的界址点必须在用地红线上);不能有悬挂结点(用地红线不能有多余的出头线段);两个线层不能相交(地下管线和道路中心线不能有交叉点),等等。
在ArcGIS8.3版中,将给出总共25条可供选用的拓扑规则。
在以后发布的版本中,还会给出更多的规则。
对一个要素数据集,我们可以定义一个拓扑关系类,在拓扑关系类中,指定若干我们希望数据满足的拓扑关系规则。
当然,通过修改拓扑关系类的定义,就能够方便地改变对拓扑关系约束的要求。
这给我们管理空间数据带来了很大的灵活性。
5、拓扑属性
如上所述,通过定义拓扑关系类,我们就能按特定的要求规定要素本身及其间必须遵守的空间拓扑约束。
在拓扑关系类中,除了拓扑关系规则外,还要指定:
参与拓扑约束的各要素类,容限值(clustertolerance),精度等级(coordinateaccuracyrank)。
其中:
●容限值:
指落在以此值为半径的圆形区域内的所有点被看成是一致的,会被捕捉(snap)到一起。
●精度级别:
每个参与拓扑约束的要素类都可以人为地赋予一个精度级别,精度级别越高,在容限值范围内需要移动时就越稳定,即:
级别低的要向级别高的靠拢。
当不同的要素类数据精度不一致时,通常应将精度较高者设定为较高级别。
6、拓扑关系正确性检查
在ArcGIS8.3Desktop中提供了一组工具用于对空间数据的拓扑关系正确性进行检查。
检查结果会作为一个特殊的图层加载到地图文档中供显示,所有存在拓扑关系错误的地方都会在该层中以特定(可自定义)的颜色和符号明显地显示出来。
同时,我们还可以打开错误查看器(ErrorInspector)以列表方式查看所有拓扑关系出错记录。
在ArcMap中,错误查看器中的错误记录与地图上的要素是相关联的,点取任一记录都可在地图上看到其所在位置被高亮显示。
7、拓扑关系错误处理
对于被检查出来的拓扑关系错误,用户可有三种选择:
●用编辑工具改正这个错误
●对该错误暂不处理
●将该错误置为例外
后面两种处理方式是有本质不同的。
暂不处理的错误仍然是错误,只要不改正永远都会被记录和标识出来。
而当我们将错误置为例外时,就等于指定该处为一个特殊情况,可以不受我们定义的拓扑关系规则的约束,不再将其视为错误。
这种处理方式是颇具特色和智慧的。
其实在实际应用中,我们常会遇到需要视为“例外”的情形。
我们在整理宗地数据时,根据历史资料录入系统的宗地地块就有重叠的情况,这在理论上是不允许的,但因为地块的界址点坐标已经作为法律文件存在,不可以随便“改正”。
因此,最好的办法就是将其置为“例外”。
8、Geodatabase拓扑关系处理方法的优势
一直以来,基于COVERAGE数据模型的拓扑关系处理是Arc/Info“标签式”的著名功能,即将正式发布的ArcGIS8.3在Geodatabase中引入了全新的拓扑关系管理机制,新的机制除了能够完全覆盖老的功能以外,在如下几个方面具有明显的优势:
●用户可自行定义哪些要素类将受拓扑关系规则约束。
●多个点、线、面要素类(层)可以同时受同一组拓扑关系规则约束。
●提供了大量的拓扑关系规则(8.3版提供25个,以后将提供更多)。
●用户为自己的数据可以自行指定必要的拓扑关系规则。
●拓扑关系及规则在工业标准的DBMS中进行管理,可支持多用户并发处理。
●用户可以局部建立或检查拓扑关系以提高效率。
9、小结
COVERAGE数据模型中,数据的拓扑关系是严格地被存储下来的,当数据编辑修改时,局部的变动必须对全局的拓扑关系重新建立(BUILD),所谓“牵一发而动全身”。
当数据量很大时,这是一个十分耗时费力的工作。
另外,COVERAGE数据模型中,我们无法指定不同的COVERAGE之间必须遵守的拓扑关系约束,一些类似“河流与国界”、“人井与管道”等需要不同要素类之间满足一定的几何一致性的问题就会十分棘手。
COVERAGE中定义的拓扑关系十分严格,而且是在一种缺省的环境下被预先设定的,不允许有任何例外的情形存在,这种不灵活性在实际工作中有时会让我们感到十分不便。
因为是文件结构,基于COVERAGE的数据在修改编辑时就不能支持多用户并发操作。
现在,所有这些问题,在Geodatabase中都已经迎刃而解。
事物的发展正如马克思所说,是“螺旋式上升”的。
从Arc/InfoCOVERAGE到ArcGIS8.0-8.2Geodatabase再到ArcGIS8.3Geodatabase,对空间拓扑关系的处理,完成了一个“否定之否定”的循环跃进。
这种全新的基于规则的拓扑关系管理机制,把效率、功能、灵活性和可扩展性结合得恰到好处。
由此,我们也可以进一步感受到Geodatabase的强大生命力。
GIS中拓扑的原理
作者按
本文描述空间拓扑的涵义及GIS中拓扑的意义与实现原理,并以ESRI矢量数据模型coverage和Geodatabase为例,描述其实现拓扑的方法。
拓扑的涵义
拓扑是一个含义广泛的词语。
在本文中,我们不讨论广义的拓扑,仅对空间拓扑进行狭义的说明。
狭义上,我们认为:
空间拓扑描述的是自然界中地理对象的空间位置关系,是地理对象空间属性的一部分。
地理对象的拓扑关系,主要有以下三种:
∙相邻:
相邻关系确认对象之间是否在某一边界重合,例如行政区划图中的省、县数据。
∙重合:
重合关系确认对象之间是否在某一局部互相覆盖,如巴士线路和道路之间的关系。
∙连通:
连通关系可以确认通达度、获得路径等。
GIS中拓扑的意义
GIS软件中,拓扑的主要意义就是用于保证数据质量。
拓扑在空间数据模型中表达和规定数据之间的空间关系。
通过表达和规定这些空间关系,拓扑尽可能将地理数据与现实世界保持一致。
拓扑是精准地表达空间数据的有效方法,通过严格地约束要素之间的关系,提高了空间数据的准确度和可用性。
GIS中拓扑的实现
由于数据模型设计的背景不同,数据模型实现拓扑的方法也是不一样的。
下面我们将对ESRI的Coverage和Geodatabase这两种数据模型实现拓扑的原理和应用方法进行探讨。
Coverage如何实现拓扑
Coverage是第一个商用GIS软件--ArcInfoWorkstation的原生数据格式,1982年随软件同时推出。
Coverage以"弧段"为核心,构建"多边形-弧段拓扑"和"弧段-结点拓扑",通过共享机制实现了空间数据的拓扑关系存储。
在当时的计算机应用环境下,Coverage保存地理数据"拓扑",保证了地理数据可以做到多边形和弧段、弧段和结点之间的精确关系。
Coverage凭借这一特点,得到了广泛的认可、应用和推广。
图1Coverage描述数据的时候,以要素集合的形式出现,coverage拓扑只能在这样的单个要素集中实现。
Coverage拓扑表达要素之间连通或相邻的关系,在实现过程中,不需要坐标信息,而以"arc"(弧段)为核心来组织数据。
如下图2示:
图2Coverage多边形拓扑表达示例
上图中Coverage图层有a、b两个多边形,在coverage核心数据组织中,是这样表达a、b这两个多边形的。
ARC#
FNODE#
TNODE#
LPOLY#
RPOLY#
AB
A
B
a
NULL
BC
B
C
a
NULL
CD
C
D
b
NULL
DE
D
E
b
NULL
EF
E
F
b
NULL
FC
F
C
b
a
上图表中,Arc#表示弧段的ID、FNODE#表示弧段的起结点、TNODE#表示弧段的终结点、LPOLY#表示弧段的左多边形、RPOLY#表示弧段的右多边形。
图2中,AB、BC、CD、DE、EF、FC等弧段的起结点、终结点确定下来后,弧段便有了如图所示方向;基于方向,便可以确定出弧段的左多边形和右多边形。
这样,就构建了coverage的核心数据结构。
在图2中,AB、BC、CD、DE、EF的右多边形都不存在,因此用Null表示,而FC弧段左多边形为b、右多边形为a,即FC弧段被"重用"了两次!
--因此Coverage的拓扑,亦称为"共享"的拓扑。
由上图看出,coverage中的多边形是实体不存在的。
在多边形coverage中,空间上封闭的弧段定义了多边形要素的边界,标注点(图1中label点)则将多边形和属性表关联起来。
Coverage数据多部件要素的表达
在Coverage数据中,多部件要素也是实体不存在的,都是通过arc数据结构及附加信息映射生成。
见下图3。
图3
对于多部件的线性要素,使用route来识别,如route.showplace,就是表达名为Greatwall的一个多部件coverage线要素类,比如大比例尺地图中的,长城、长江等都可能属于这样的要素。
对于多部件的多边形数据,使用region来识别,如region.islands,就是表达名为islands的一个多部件coverage多边形要素类,比如大比例尺地图中的夏威夷等都可能属于这样的要素。
Geodatabase如何实现拓扑
Geodatabase实现拓扑的基础是"几何重合"。
与coverage以arc为核心组织数据不同,Geodatabase中的点、线、多边形都是实体存储的。
在判断地理要素之间是否存在某种拓扑关系时,Geodatabase根据节点坐标是否重合来确定。
(注:
在Geodatabase存储中,使用整型数值存储节点坐标值,这也大大提高了拓扑判断的运算效率)。
如下图4:
图4
图4是Geodatabase多边形要素类的存储。
在Geodatabase中,数据的存储方法是这样的:
要素ID
…
…
…
几何坐标
a
ABCFA
b
EFCDE
要素ID,表示多边形ID,几何坐标字段则存储了封装的几何坐标值。
如上表中第一行,对于要素a多边形,几何坐标中封装了ABCFA这五个点的坐标值。
Geodatabase基于几何节点的重合构建拓扑。
ArcGIS8.3版本的软件后,Geodatabase使用topology(拓扑)工具来构建的空间拓扑关系。
Geodatabase的拓扑可以在任意多个要素类之间实现!
Geodatabase创建拓扑的条件
在Geodatabase中,拓扑是需要额外创建的。
要创建拓扑,必须满足以下条件:
要素集
拓扑仅能在要素集中创建,并且要求参与其中的要素类必须具备同一空间参考。
单个要素集,可以创建多个拓扑。
简单要素类
参与拓扑创建的要素类必须是简单要素类(simplefeatureclass),注记类(Annotations)、尺寸(Dimensions)和几何网络要素类,都不能参与拓扑的创建。
同时,一个要素类只能参与一个拓扑。
图5Geodatabase拓扑
Geodatabase拓扑中的重要概念
Geodatabase的三个重要属性--规则、等级和拓扑容限。
规则:
定义了拓扑的要求,在这个规则中表达要素类之间的空间关系,
拓扑容限:
是一个距离范围,在这一范围内,所有的节点和边线被认为是重合的、同一的。
设置拓扑容限
拓扑等级(Ranks)控制在拓扑验证的过程中节点移动的级别。
这时候,等级低的要素类(子类)将向等级高的要素类(子类)移动。
在创建拓扑的过程中,你需要指定要素类的等级。
目前,最高的等级是1;最低等级为50。
除了以上三个重要属性之外,拓扑中还保存了要素类的脏区(dirtyareas)、错误(errors)和异常(exceptions)。
使用这些属性,可以对数据的质量进行维护。
在创建和编辑拓扑的时候,拓扑内部会生成两个新的要素类:
脏区(dirtyareas)和错误要素(errorfeatures)。
当拓扑创建之时,所有的要素都被处理为脏区(编辑后编辑区域成为脏区)。
对要素进行单独编辑后,编辑区域(脏区)会存储到数据库中。
使用脏区,表示Geodatabase中该区域数据的空间完整性可能已经被破坏。
"错误"要素类中存储的是违背拓扑规则的要素或者要素的一部分。
拓扑经过验证后,要素会被判断是否违背规则中定义的空间关联。
如果拓扑中违反规则的数据被检测到,那么便会生成新的错误要素。
对于一些违反拓扑规则的要素,可以作为异常情况处理,这部分数据拓扑使用"异常"来组织。
Coverage和Geodatabase的拓扑在编辑之后的变化
在coverage拓扑中,如果对要素进行编辑修改,那么拓扑将会被损坏,如果需要对数据进行浏览、查询或者分析,那么必须重建拓扑。
编辑coverage时,工作的顺序一般为:
编辑coverage>建立拓扑>其它正常操作。
图6
如对上图2进行了编辑,如上图6所示,添加了PQ弧段,那么这时候,coverage必须进行建立拓扑的操作,才能够重新进行操作。
这时候经过拓扑重建的数据结构如下:
ARC#
FNODE#
TNODE#
LPOLY#
RPOLY#
AP
A
P
a2
NULL
PB
P
B
a1
NULL
BC
B
C
a1
NULL
CD
C
D
b
NULL
DE
D
E
b
NULL
EF
E
F
b
NULL
FQ
F
Q
a1
NULL
QA
Q
A
a2
NULL
FC
F
C
b
a1
PQ
P
Q
a2
a1
此时,原来AB、AF弧段都将不存在,弧段的数据结构将重建。
使用Geodatabase的拓扑比操作coverage的拓扑要灵活得多。
Geodatabase拓扑创建以后,你可以在任一工作程序中停止操作。
使用Geodatabase拓扑,进行要素添加甚至错误出现后,数据仍然可以浏览、查询或者进行分析操作。
图7
对上图3,进行编辑,如上图7所示。
编辑后Geodatabase的数据结构如下表所示:
要素ID
…
…
…
几何坐标
a1
QPBCFQ
a2
APQA
b
EFCDE
事实上,Geodatabase的拓扑在创建拓扑-编辑要素-验证拓扑-修复错误等过程中,是可以在任意时刻停止工作的。
以下图8是Geodatabase拓扑的工作流程图。
在这一流程中,可以在任意时刻停止工作。
图8
结论
拓扑描述的是地理对象的空间关系,GIS中的数据模型实现拓扑的方式多样,但是目的是一致的--获取更高质量的空间数据。
在上面的例子中,Coverage和Geodatabase实现拓扑的思路是完全不一样的。
Coverage使用"共享"机制,强制地在数据中执行拓扑关系,在coverage的编辑过程中,强制性的拓扑会耗费很多的时间去重新建立拓扑。
Geodatabase的拓扑则建立在"几何重合"的基础上,这样的拓扑是非强制性的;Geodatabase的拓扑必须在要素集中创建,同时允许无数多个专题或几何类型的要素类进行拓扑定义;Geodatabase的拓扑提供了多种规则和编辑工具,为保证空间数据的完整性提供了很多便利。
无论是coverage还是Geodatabase,实现拓扑的意义都是为了获取更高质量的空间数据。
另外,还得提到的是,shapefile数据格式没有实现拓扑。
[作者:
邢超、袁满、伍朝琳
最后更新时间:
07年4月29日;
由于行文仓促,难免有错漏,请大家指正讨论]
Geodatabase模型
窗体顶端
5.3.1概述Geodatabase几何模型Geodatabase模型是ESRI公司在ArcGIS中推出的一种新型的面向对象的空间数据库模型。
它采用面向对象技术将现实世界抽象为由若干对象类组成的数据模型,每个对象类有其属性、行为和规则,对象类间又有一定的联系。
Geodatabase按层次结构将地理数据组织成数据对象,并存储在要素类、对象类和要素集中。
(2)Multiusergeodatabases:
Geodatabase中的数据集包括:
(1)Personalgeodatabases:
为一mdb文件,适用于小型项目的地理信息系统。
PersonalGeodatabase可以使用Access数据库打开。
其数据库容量为2GB。
2.栅格数据集(RasterDatasets)可以表现为影像地图、表面、表现某个环境因子采样数据的Grid、或者是普通的实物照片。
有些栅格数据具有多个波段。
3.不规则三角网数据集(TINdatasets)是从表面上采样高程点数据生成的不规则三角形。
TIN可以用于模拟地球表面,同时也可用于连续性的环境因子的分布研究,比如碳元素的分布。
1.要素数据集(FeatureDatasets)对于大型的企业数据库,可以通过ArcSDE为运行在PC上的ArcInfo应用程序提供Geodatabase。
ArcSDE不仅提供对地理数据的远程访问,而且还允许多用户同时编辑同一地理数据。
ArcSDE可以实行海量数据的中央化管理。
Geodatabase模型的优势
1)地理数据统一存储管理。
所有数据都能在同一数据库里存储并中心化管理。
2)数据输入和编辑更加准确,通过智能的属性验证确定减少很多的编辑错误。
3)用户更为直观地处理数据模型。
Geodatabase将要素的“自然”行为绑定到存储要素的表中。
4)要素具有丰富的关联环境。
使用拓扑关系、空间表达和一般关联,不仅可以定义要素的特征,还可以定义要素与其它要素的关联情况。
当与要素相关的要素被移动、改变或删除的时候,用户预先定义好的关联要素也会做出相应的变化。
5)可以制作蕴含丰富信息的地图。
通过直接在ArcMap中应用先进的绘图工具,可以更好地控制要素的绘制,还可以添加一些智能的绘图行为。
6)地图显示中,要素是动态的。
在ArcInfo中处理要素时,它们能根据相邻要素的变化做出响应。
也可以将要素与自定义查询或分析工具关联到一起。
7)要素形状可以更形象地定义。
Geodatabase中,可以使用直线、圆弧、椭圆弧和贝塞尔曲线来定义要素形状。
8)要素都是连续无缝的。
Geodatabase中可以实现无缝无分块的海量要素的存储。
9)多用户并发编辑地理数据。
Geodatabase数据模型允许多用户编辑同一区域的要素,并可以协调出现的冲突。
图4-5-5Geodatabase中对象层次结构图4-5-6Geometry类库中的主要几何对象[回节目录][下一根节][根节目录][回章目录]
窗体底端
窗体顶端
5.3.1概述Geodatabase几何模型Geodatabase模型是ESRI公司在ArcGIS中推出的一种新型的面向
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Geodatabase 基于 规则 拓扑 关系 管理机制