[ 作者:蔡晓兵 | 来源:GIS空间站 | 时间:2005-11-13 20:06:58 ] |
<script type="text/javascript">
</script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
1、问题的提出 空间数据的拓扑关系及其处理方法在高级的空间分析处理和空间数据库数据质量保证方面具有相当重要的作用。在ArcInfo的经典数据格式COVERAGE中,拓扑关系被完整地保存,并有一组检查工具(命令和函数)供使用者对空间数据进行拓扑关系检查并给出错误定位标识和相应的统计数据。这曾经是ArcInfo有别于其它GIS或图形处理软件的最重要的标志之一,为全球GIS界所广泛推崇。随着ArcInfo升级到8版本后,全新的空间数据模型Geodatabase被引入,其中对拓扑关系的管理和处理方法发生了重大的改变。笔者在《中国用户通讯》第十期中曾专门撰文(参见“什么是Geodatabase”)对COVERAGE到Geodatabase的演变进行了阐述,其中有较多的笔墨谈及拓扑关系的处理。直至ArcGIS 8.2版,Geodatabase对拓扑关系的处理都相对薄弱,ArcGIS Desktop在处理类似公共点公共边等空间拓扑关系时,所提供的动态编辑工具相对而言也较为简化和单一。Geodatabase中数据的空间拓扑关系的正确性靠数据入库前的工序来保证,ArcGIS Desktop和Geodatabase本身对此并不提供太多的帮助。时隔一年,情形又一次发生了深刻的变化,在ESRI即将发布的最新版本:ArcGIS 8.3中,Geodatabase对拓扑关系的处理较之以往,由于引入了一些全新的概念和技术,其能力产生了本质的飞跃。 2、Geodatabase中的数据存储和建模 在切入正题之前,让我们对Geodatabase的空间数据存贮机制作一个简要的说明。Geodatabase是ESRI在其新一代GIS平台软件ArcGIS 8中引入的一种全新的空间数据模型。Geodatabase采用一种开放的结构将空间数据(包括:矢量、栅格、影像、三维地形等)及其相关的属性数据统一存放在工业标准的数据库管理系统DBMS中。空间要素类(Feature Class),如:河流、国界、宗地、电杆等,对应了DBMS中的表,而具体的一个要素(Feature)则是表中的一条记录。具有共同空间参考的一组空间要素类又可以组成更大的结构,称为要素数据集合(Feature Data Set)。除了空间要素类以外,Geodatabase中还可以建立关系类、几何网络、定义要素子类型、值域及规则等。所有的要素类均可以借助通用的CASE工具(如:Visio、Rational Rose等)进行模型定义和扩展。 3、Geodatabase中拓扑关系的实现 在ArcGIS 8.3版中,Geodatabase引入了拓扑关系规则。如前所述,在Geodatabase中可以定义关系和规则。拓扑关系规则即是新增加的一类。拓扑关系规则可作用于同一要素数据集中的不同要素类或者同一要素类中的不同要素。用户可以指定空间数据必须满足的拓扑关系约束,譬如:要素之间的相邻关系、连接关系、覆盖关系、相交关系、重叠关系等。所有这些关系都对应相应的规则。在城市规划应用中,两个相邻的地块之间不能有“飞地”,我们可以有一条对应的规则:“相邻多边形间不能存在间隙”。再如,当以河流作为国界时,河流(线状)与国界线必须一致,可用规则:“线必须被多边形边线覆盖”。用户通过选择若干规则的组合构成对空间数据必须满足的拓扑关系的灵活指定。为了检查和维护空间数据的拓扑关系正确性,在ArcGIS Desktop中给出了一组(编辑)工具,用于对空间数据根据用户指定的拓扑关系规则进行编辑,并帮助用户及时发现可能存在的拓扑关系错误。 Geodatabase中并不实际保存拓扑关系。不同要素类之间的公共点、公共边等要素是在拓扑编辑过程中动态地检测到的。例如,我们选择一条线并对其进行编辑,此时Geodatabase将自动检测到与此线要素具有公共几何元素的所有其它要素,当我们修改该线要素时,系统自动对所有的公共边和公共点进行维护,以保持其应有的拓扑关系。这种实现方式的好处在于,可以局部、有选择的维护拓扑关系,效率很高。 4、拓扑规则 拓扑规则可以定义在要素类的不同要素之间,也可以定义在两个或多个要素类之间。比较典型的拓扑规则例子是:多边形不能相互重叠(两个建设用地地块间不可相互重叠);点必须被多边形边线覆盖(建设用地的界址点必须在用地红线上);不能有悬挂结点(用地红线不能有多余的出头线段);两个线层不能相交(地下管线和道路中心线不能有交叉点),等等。在ArcGIS 8.3版中,将给出总共25条可供选用的拓扑规则。在以后发布的版本中,还会给出更多的规则。对一个要素数据集,我们可以定义一个拓扑关系类,在拓扑关系类中,指定若干我们希望数据满足的拓扑关系规则。当然,通过修改拓扑关系类的定义,就能够方便地改变对拓扑关系约束的要求。这给我们管理空间数据带来了很大的灵活性。 5、拓扑属性 如上所述,通过定义拓扑关系类,我们就能按特定的要求规定要素本身及其间必须遵守的空间拓扑约束。在拓扑关系类中,除了拓扑关系规则外,还要指定:参与拓扑约束的各要素类,容限值(cluster tolerance),精度等级(coordinate accuracy rank)。其中: &容限值:指落在以此值为半径的圆形区域内的所有点被看成是一致的,会被捕捉(snap)到一起。 &精度级别:每个参与拓扑约束的要素类都可以人为地赋予一个精度级别,精度级别越高,在容限值范围内需要移动时就越稳定,即:级别低的要向级别高的靠拢。当不同的要素类数据精度不一致时,通常应将精度较高者设定为较高级别。 6、拓扑关系正确性检查 在ArcGIS 8.3 Desktop中提供了一组工具用于对空间数据的拓扑关系正确性进行检查。检查结果会作为一个特殊的图层加载到地图文档中供显示,所有存在拓扑关系错误的地方都会在该层中以特定(可自定义)的颜色和符号明显地显示出来。同时,我们还可以打开错误查看器(Error Inspector)以列表方式查看所有拓扑关系出错记录。 在ArcMap中,错误查看器中的错误记录与地图上的要素是相关联的,点取任一记录都可在地图上看到其所在位置被高亮显示。 7、拓扑关系错误处理 对于被检查出来的拓扑关系错误,用户可有三种选择: &用编辑工具改正这个错误 &对该错误暂不处理 &将该错误置为例外 后面两种处理方式是有本质不同的。暂不处理的错误仍然是错误,只要不改正永远都会被记录和标识出来。而当我们将错误置为例外时,就等于指定该处为一个特殊情况,可以不受我们定义的拓扑关系规则的约束,不再将其视为错误。这种处理方式是颇具特色和智慧的。其实在实际应用中,我们常会遇到需要视为“例外”的情形。我们在整理宗地数据时,根据历史资料录入系统的宗地地块就有重叠的情况,这在理论上是不允许的,但因为地块的界址点坐标已经作为法律文件存在,不可以随便“改正”。因此,最好的办法就是将其置为“例外”。 8、Geodatabase拓扑关系处理方法的优势 一直以来,基于COVERAGE数据模型的拓扑关系处理是Arc/Info“标签式”的著名功能,即将正式发布的ArcGIS 8.3在Geodatabase中引入了全新的拓扑关系管理机制,新的机制除了能够完全覆盖老的功能以外,在如下几个方面具有明显的优势: &用户可自行定义哪些要素类将受拓扑关系规则约束。 &多个点、线、面要素类(层)可以同时受同一组拓扑关系规则约束。 &提供了大量的拓扑关系规则(8.3版提供25个,以后将提供更多)。 &用户为自己的数据可以自行指定必要的拓扑关系规则。 &拓扑关系及规则在工业标准的DBMS中进行管理,可支持多用户并发处理。 &用户可以局部建立或检查拓扑关系以提高效率。 9、小结 COVERAGE数据模型中,数据的拓扑关系是严格地被存储下来的,当数据编辑修改时,局部的变动必须对全局的拓扑关系重新建立(BUILD),所谓“牵一发而动全身”。当数据量很大时,这是一个十分耗时费力的工作。另外,COVERAGE数据模型中,我们无法指定不同的COVERAGE之间必须遵守的拓扑关系约束,一些类似“河流与国界”、“人井与管道”等需要不同要素类之间满足一定的几何一致性的问题就会十分棘手。COVERAGE中定义的拓扑关系十分严格,而且是在一种缺省的环境下被预先设定的,不允许有任何例外的情形存在,这种不灵活性在实际工作中有时会让我们感到十分不便。因为是文件结构,基于COVERAGE的数据在修改编辑时就不能支持多用户并发操作。现在,所有这些问题,在Geodatabase中都已经迎刃而解。事物的发展正如马克思所说,是“螺旋式上升”的。从Arc/Info COVERAGE到ArcGIS 8.0-8.2 Geodatabase再到ArcGIS 8.3 Geodatabase,对空间拓扑关系的处理,完成了一个“否定之否定”的循环跃进。这种全新的基于规则的拓扑关系管理机制,把效率、功能、灵活性和可扩展性结合得恰到好处。由此,我们也可以进一步感受到Geodatabase的强大生命力 |