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中拓扑实现由于数据模型设计背景不同,数据模型实现拓扑办法也是不同样。下面咱们将对ESRICoverage和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#ABABaNULLBCBCaNULLCDCDbNULLDEDEbNULLEFEFbNULLFCFCba上图表中,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对于多部件线性要素,使用rou