ArcGIS拓扑专题_第1页
ArcGIS拓扑专题_第2页
ArcGIS拓扑专题_第3页
ArcGIS拓扑专题_第4页
ArcGIS拓扑专题_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ArcGIS 拓扑专题拓扑基本概念拓扑学拓扑学是几何学的一个分支,但是这种几何学又和通常的平面几何、立体几何不 同。通常的平面几何或立体几何研究的对象是点、线、面之间的位置关系以及它们的 度量性质。拓扑学采用拓扑几何来描述,主要涉及目标与周围其他对象的 “相连”、 “相邻”、“包含“等关系研究。拓扑关系拓扑学是研究空间实体的拓扑关系的科学。拓扑关系是明确定义空间结构的一种数学方 法,它表示要素间的邻接关系和包含关系, 这些信息在地图上借助图形来识别和解释, 而在 计算机中则利用拓扑关系对各种数据加以完善严密地组织建立拓扑的意义数据是 GIS 的核心, GIS 数据质量对于评定 GIS 的算法。

2、减少 GIS 设计与开发的盲目 性,GIS系统的无缝的统计查询、空间分析都具有重要的意义。而在现实生活中,由于数据 源的多源性、数据格式多样性、 数据生产、数据转换、数据处理标准的不一致性等原因都造 成数据的质量无法满足现实的需要。例如 GIS 在国土应用当中,最常见的是获得一个宗地 (面状要素)所包络的界址线(线状要素) ,界址点(点状要素) ,如果数据质量不严格就不 能获得正确的结果。那么就需要进行数据检查, 拓扑检查无疑是最有效、 最快捷的、 最简便的一种检查方式。以 ArcGIS 拓扑为例, 在数据集当中建立适当的拓扑规则 ( must be covered by boundary o

3、f 点必须在多边形的边界上,线被多边形边界重叠) ,进行拓扑检查,就能标记出有悖于该 拓扑规则的拓扑错误,便于用户修改,进而达到标准的数据质量。拓扑最基本的用途是: 保证数据质量、 提高空间查询统计分析的正确性和效率, 进而为 相关行业提供真实有效的指导,同时也使地理数据库能够更真实地反映地理要素。拓扑检查入库前的拓扑检查作用:保证了数据质量(防患于未然) ,规范标准化,本地文件的检查效率高。 (适合于 国家级库建设、省级库建设,大数据量)入库后的拓扑检查作用: 对数据库的数据质量进行实时检查, 提高了编辑数据的数据质量 。(适合于县级 及以下库建设,特别是数据编辑、空间分析等功能使用频繁)A

4、rcGIS 拓扑介绍目前 ESRI 提供的数据存储方式中 ,Coverage 和 GeoDatabase 能够建立拓扑 ,Shape 格 式的数据不能建立拓扑 .ArcGIS 拓扑( Topology )是在同一个要素集 (FeatureDataset )下的要素类 ( Feature Class )之间的拓扑关系的集合。所以要参与一个拓扑的所有要素类,必须在同一个要素集 内。一个要素集可以有多个拓扑,但每个要素类最多只能参与一个拓扑。ArcGIS 拓扑由拓扑名称(Name ),拓扑容差(Toleranee )、级别(Rank )、要素类(Featureclass )、拓扑规则(Rule )组

5、成。下面利用ArcCatalog 建立拓扑的过程来简单介绍一下ArcGIS拓扑的组成元素。1 :拓扑名称拓扑名称不能重复,也就是说一个数据集只能存在唯一的拓扑名称。该名称不能以数字开头,不能存在一些类似、#等符号2 :拓扑容差(Tolerance )拓扑容差是边界与节点只要在该范围内默认他们为无缝连接。默认的容差值为数据集的 XY容差,拓扑容差不能小于数据集的XY容差。包括Z容差在ArcGIS中可分为x、y族容限和Z族容限,x、y族容限是指当两个要素顶点被判定为不重合时他们之间的最小水平距离,冋一族容限内的顶点被定义为重合并且合并到一起,而Z族容限定义了高程上的最小差异,或则重合的顶点间的最小

6、 z值;在族容限范围内的顶点会被捕捉到一起。3 :要素类(FeatureClass)必须选择在同一数据集下的要素类,当要素集中的所有要素都已经参加建立其它拓扑的 时候,使用已使用的要素类新建立拓扑会产生错误;4 :级别(Rank)在拓扑验证的过程中,有自动捕捉的过程,要素会移动。在ArcGIS拓扑关系中每一个要素类是根据 Rank值的大小来控制移动程度的。Rank等级越高的要素移动程度越小。ArcGIS9.3.1 提供的Rank范围在(1-50),Rank值等于1的为最高等级。包括ZrankBefore ValidateEqpai AanfctdR«ik*dEqual Ranks5

7、:拓扑规则(Rules)定义地理数据库中一个给定要素内或两个不同要素类之间所许可的要素关系指令。通俗称ArcGIS定义了不同图形类型要素的空间关系。拓扑规则可以定义在要素类的不同要素之间,也可以定义在两个或多个要素类之间。ArcGIS* Geodatabase Topology RulesArcGISIO版本新加了 6个拓扑规则,现在共 32个(ArcGIS9.3.1之前为26个)面拓扑规则:Con tai ns One Poi nt线拓扑规则 :Must Not In tersect with线拓扑规则 :Must Not In tersect or touch In terior With

8、线拓扑规则 :Must Be Properly In side点拓扑规则 :Must Be Coi ncide nt With点拓扑规则:Must be Disjoint6 :验证拓扑就是根据建立拓扑时设置的要素类,要素类级别,根据设置好的拓扑规则进行检验,如果目标数据存在与拓扑规则相悖的情况,即标记显示拓扑错误。需要注意的是没有版本的拓扑可以在随时验证,而有版本的拓扑必须在编辑状态中验证。非常大的数据集验证需要很长的时间,用户根据数据量来安排验证时间。7 :验证拓扑结果脏区(Dirty Area )在编辑过程过的区域内,可能会出现该编辑行为的结果违反已有拓扑规则的情况,标记 为脏区。在编辑后

9、,脏区允许选定部分区域而不用整个拓扑区域范围进行验证。EdK FeatureDirty Area Created出现脏区的情况有:新建要素或者删除要素要素的形状改变要素的子类变化 版本一致化(reconciled )拓扑规则更改错误(Error )和例外(exceptions)拓扑检验时,凡是与拓扑规则相悖的会标记为拓扑错误(Error ),但是某些所谓的错误可以指定该处错误为一个特殊情况,可以不受我们定义的拓扑关系规则的约束,不再将其视为错误,把该类型的错误标记为例外(exceptions )。&rorFor Hwst NotRole拓扑错误原因1:与拓扑规则相悖2 :不同级别的 T

10、oleranee 设置3:存储方式应该将参与同一拓扑中的数据集存储在相同的几何存储类型。反之,就会出现因为不同存储类型引起的某些拓扑错误。由于要在不同的存储类型的数据存储的方式的轻微变化。这些差异,是极小(差不多1毫米),但可能会导致违反您的拓扑规则。例如:一个面状要素类 A的存储为SDO_Geometry ,个面状要素类 B存储为ArcSDE压缩二进制文件(Long Raw ),如果把拓扑规则设定为要素类A Must not overlap with要素类B,功能在呈现的方式中的微小差异可能导致违反该拓扑规则,导致拓扑错误。8 :不能建立拓扑的情况目标要素类已参与了一个Topology 或G

11、eometry Network目标要素类是一个注记层目标要素类是一个多维图层目标要素类是一个多点层目标要素类是一个多片层目标要素类已被注册为有版本拓扑管理修改拓扑属性(ArcCatalog )重命名或者其他(重新验证)删除拓扑删除拓扑不会影响参与该拓扑的要素类;只会删除控制这些要素类间空间关系的规则。复制粘贴拓扑复制拓扑的同时也会复制其中的要素类利用ArcEngine 拓扑操作ArcEngine 建立拓扑的基本原理利用ArcEngine建立拓扑主要利用ItopologyContainer接口进行创建,ITopology 接口进行参数添加设置。根据Iworkspace 接口获得Ifeatured

12、ataset 对象,QI到 ItopologyCo ntai ner,然后就可以创建拓扑了。获得刚才的Itopology 对象,对要素类的拓扑等级和拓扑规则进行设置。然后验证拓扑。/ <summary>/建立拓扑/ </summary>/ vparam name="featureDataset">目标数据集 </param>/ vparam name="topologyName">拓扌卜名称 </param>public void CreateTopology(IFeatureDataset f

13、eatureDataset, string topologyName)/建立一个空拓扑(拓扑名称、获得数据集的 XY容差作为拓扑容差)ITopologyContainer topologyContainer = (ITopologyContainer)featureDataset;ITopology topology = topologyContainer.CreateTopology(topologyName,topologyContainer.DefaultClusterTolerance, -1,"");/获得“ Roads ”线状要素类加入到拓扑当中,拓扑等级为1I

14、FeatureClassContainerfeatureclassContainer(IFeatureClassContainer)featureDataset;IFeatureClass featureClass = featureclassContainer.get_ClassByName("Roads"); topology.AddClass(featureClass, 5, 1,1, false);/建立一个拓扑规则(线不重合)ItopologyRuleContainertopologyRuleContainer(ITopologyRuleContainer)top

15、ology;ITopologyRule topologyRule = new TopologyRuleClass();topologyRule.T opologyRuleType = esriTopologyRuleType.esriTRTLineNoOverlap; topologyRule.OriginClassID = featureClass.ObjectClassID;topologyRule.AIIOriginSubtypes = true;topologyRule.Name = "Roads No Overlap"/把建立好的拓扑规则添加到拓扑中if (top

16、ologyRuleContainer.get_CanAddRule(topologyRule)topologyRuleContainer.AddRule(topologyRule);/验证拓扑IGeoDataset geoDataset = (IGeoDataset)topology;/根据拓扑对象获得范围IPolygon searchArea = new PolygonClass();ISegmentCollection segmentCollection = (ISegmentCollection)searchArea;segmentCollection.SetRectangle(geoD

17、ataset.Extent);/获得整个拓扑中的“脏区”IPolygon dirtyArea = topology.get_DirtyArea(searchArea);/验证“脏区”IEnvelope dirtyAreaEnvelope = dirtyArea.Envelope; topology.ValidateTopology(dirtyAreaEnvelope);GP原理建立拓扑gpCreateTopologyToolnew利用ArcEngine伪代码ESRI.ArcGIS.DataManagementTools.CreateTopologyESRI.ArcGIS.DataManagem

18、entTools.CreateTopology();/填写相关参数gpCreateTopologyTool.in_dataset gpCreateTopologyTool.in_cluster_tolerance gpCreateTopologyTool.out_name/获得拓扑对象gpCreateTopologyTool.out_topology拓扑渲染由上面可以获得 ITopology 对象,获得ItopologyLayer 对象,ITopologyLayer 接口 具有一个渲染 Ren derer的方法,可以根据拓扑错误信息( esriTopologyRe nderer )进行 分类渲

19、染。拓扑编辑在进行拓扑验证后,我们要对错误的点、线进行编辑修改。在编辑前要生成拓扑图(TopologyGraph ),在拓扑图上显示需要修改的节点( Nodes )、边线(Edges )等信息, 所做的编辑其实就是在TopologyGraph上进行的。上面提到的ITopologyLayer ,当ITopologyLayer 建立后,在内存中就存在了 Cache 缓存。拓扑图TopologyGraph的建立就是需要这个ITopologyLayer 的Cache来完成的。拓扑编辑必须在数据编辑器打开情况下才能进行。IDataset dataset = (IDataset)topology;IWor

20、kspaceEdit workspaceEdit = (IWorkspaceEdit)dataset.Workspace;workspaceEdit.StartEditing(true);workspaceEdit.StartEditOperation();/获得拓扑图层ItopologyLayer pTopoLayer=GetTopoLayer();/获得拓扑验证范围IEnvelope pEnv=GetTopoExtent();/建立拓扑图ITopologyGraph topologyGraph = pTopoLayer.Topology.Cache;topologyGraph.Build(

21、pEnv,false);/获得拓扑图对象后,可以获得对错误的点、线进行操作处理IEnumTopologyNode enumtopologyNode= topologyGraph.GetParentNodes(featureClass,objectID);/获得点对象ITopologyNode topologyNode = enumtopologyNode.Next();/拓扑编辑操作/提交编辑lEnvelope pEditEnv=null; topologyGraph.Post( out pEditEnv); workspaceEdit.StopEditOperation(); workspa

22、ceEdit.StopEditing(true);拓扑删除删除拓扑时,首先要移除该拓扑的拓扑规则,然后才能删除。/获得拓扑对象ITopology pTopo=GetTopology(); IClass pCals=GetTopoRule();/移除拓扑规则pTopo.RomoveClass(pCals); IDataset pDS=pTopo as IDataset; pDS.Delete();获得脏区对象/ Assume we have a reference to a Topology called topology and Cast to IGeodataset IGeoDataset

23、geoDataset = (IGeoDataset)topology;/ Create a new polygon objectIsegmentCollection location = (ISegmentCollection)new ESRI.ArcGIS.Geometry.PolygonClass();/ Set the rectangle of the pLocation polygon to be equal to the Topology extent location.SetRectangle(geoDataset.Extent);ESRI.ArcGIS.Geometry.IPol

24、ygon locationPolygon = (ESRI.ArcGIS.Geometry.IPolygon)location; / Get the Dirty Area that covers the entire topology.IPolygon polygon = topology.get_DirtyArea(locationPolygon);ArcMap 拓扑工具介绍实验数据:点状数据(JZD界址点层)、线状数据(JZX界址线层)、面状数据(ZD宗地层)。建立拓扑(规则一:面Must Be Covered By Boundary Of线;规则二:面 MustBe Covered By

25、Bou ndary Of 点等)在ArcMap下面进行拓扑操作必须打开编辑状态。123456789 10 11Topology: CZDJ Topology 竜 I囂:SJS1酚弓耳炉関序号名称说明1Topology拓扑图层显示Layer2Map参与拓扑的可编辑图层设置(JZD层、JZX层、ZD层)Topology3Con struc1:线拓扑生成面(目标编辑图层要选择面才能显示为可用)tCreate new Polyg ons from selected featuresFeatures直接生产新的面状要素Create new polyg on s(c on sideri ngexist i

26、ngfeatures intarget layer)如果已存在面状要素不再生成新的面状要素Split exist ing features in target layer using select ion根据线直接分割已存在的面状要素2 :面拓扑生成线(目标编辑图层要选择线才能显示为可用)在多个面进行拓扑生成线的情况下,如果有两个相邻面,那么只生成一条公共边。4Plan arize对线拓扑(相交点打断线)Lines删除重复线A3lanarize Lines/5Topology拓扑编辑工具Edit Tool6Show显示共用的要素(例如选择一条线,该线可能就是一个JZX要素,也Shared可能是

27、一个ZD要素的一条边)Features7、ValidateValidate Topology in specified Area自定义拓扌卜验证区域8、TopologyValidate Topology in CurrentExtent拓扑验证当前视图区9、域范围Validate En tire Topology拓扑验证所有数据10Fix标记拓扑错误工具Topology/广ErrorTool / /11Error拓扑错误查看器(错误分类查询、错误定位、错误明细等)In spector进行拓扑验证Error nsperfor拓扑在Geodatabase 的存储在Geodatabase 数据库中与

28、拓扑相关的表包括 GDB_TOPOLOGIES (存储拓扑名称), GDB_TOPORULES (存储拓扑规则),and GDB_TOPOCLASSES (存储跟拓扑相关的要素 类的参数设置)。对每一个拓扑进行验证,就可以出现拓扑错误。在 GDB里面就会建立针对每一个拓扑 存储拓扑错误的表。拓扑错误根据不同类型分配到4个表里面:T_<n>_POLYERRORS(面状拓扑错误卜T_<n>_POINTERRORS(点状拓扑错误卜T_<n>_LINEERRORS(线状拓扑错 误)、T_<n>_DIRTYAREA (脏区)。N代表在 GDB_TOPOLO

29、GIES 里面每个拓扑对应的 ID。 这些表在ArcCatalog 是看不到的,但是在 ArcMap进行拓扑编辑的时候可以自动加载SDE里面拓扑表的存储在默认的DBTUNE表里面,有两个标准的 关键字 TOPOLOGY_DEFAULTS 和TOPOLOGY_DEFAULTS:DIRTYAREAS。TOPOLOGY_DEFAULTS :控制存储 3 中拓扑错误的要素类(点、线、面)。TOPOLOGY_DEFAULTS :DIRTYAREAS :控制存储拓扑脏区的要素类。在默认情况下,拓扑表和脏区表在相同的存储位置,但是脏区表是动态变化的, 尤其是 在版本控制的Geodatabase 里面表现非常

30、活跃,因此对受版本控制数据进行大量的编辑情 况下,如果使用拓扑,建议更改DBTUNE关键字为TOPOLOGY_DEFAULTS :DIRTYAREAS 里面的参数值,将有关脏区的相关要素进行单独存储,效率会更高。若要使用非默认的拓扑关键字中,管理员创建新拓扑关键字指定不同的存储参数的默认值。1 : MAIN 表空间主要在使用中压缩二进制(SDELOB)来存储数据。对此数据创建的所有拓扑结构也存储在MAIN表空间。以下为TOPOLOGY_DEFAULTS 参数值:KeywordParameter nameConfig .stringTOPOLOGY-DEFAULTS6_INDEX_ROWIDPC

31、TFREE 0 INRRANS 4 TABLESPACE MAIN STORAGE (INITIAL 409600) NOLOGGINGTOPOLOGYDEFAULTSB_INDEX_5HAPEPCTFREE 0 1NPRAMS 4 TABLESPACE MAIN STORAGE (INITIAL 409600) NOLOGGINGTOPOLOGY.DEFAU LTSB_INDEX_USERPCTFREE 0 TNTTRANS 4 TABLESPACE MAIN STORAGE (JNmAL 409600) NOLOGGINGTOPOLOG Y_DE FAULTS6-STORAGEPCTFRE

32、E 0 lNURANS 4 TABLESPACE MAIN STORAGE (INITIAL 409600)2 : 一些数据被存储在表空间为SDO的Oracle空间格式(SDO_GEOMETRY)3 :构成同一拓扑中的所有数据都使用相同的几何存储类型。4:因为所有的SDO_GEOMETRY数据类型被存储在表空间为SDO里面,所以拓扑表的SDO类型数据也存储在SDO表空间,而且该表空间存储所有用户拓扑表的TOPOLOGY_SDO 配置关键字。TOPOLOGY_SDO的参数值如下:KeywordPa ra meter_nanieConfig_sringTOPOLOGY_SDOB_INDEX_ROW

33、1DPCTFREE 0 NITRANS 4 TABLESPACE SOO STORAGE (NmAL 409600 NOLOGGIMGTOPOLOGY.SDOB_INDEX_SMAPEPCTFREE 0 INITRAN5 4 TABLESPACE SDO STORAGE (INITIAL J09600J NOLOGGIMGTOPOLOGY.SDOBJNDEXUSERPCTFREE 0 NITRANS 4 TAELESPACE SCO STORAGE (NmAL 409600J NOLOGGINGTOPOLOGY_SDOB_STORAGEPCTFREE 0 INTTRANS 4 TABLESPA

34、CE SDO STORAGE (INTTIAL 409600J脏区在拓扑层中存储为单一的要素,当一个新的脏区区域产生,会联合原来的脏区代替 原有脏区的要素。也就是说在脏区存储的面积值,为所有分散的脏区面积总和。在Geodatabase 里面与拓扑相关表之间的逻辑关系goc沉一曰口T LlNCeftORS'心 tilOR3GW4CLA5S D二:弋:三 ZiDESTC1AS3D:r阪l l -匸二:=< 瓦L L 三二isfxcEPnormu孔OmihK:LiS3lDORJGWSUBTXPE二L丄二十 2 £= TV-z5ESTCLUWDESTSUBTYPEALLJ>

35、;E STS W3TVPFSTOPOLOGYRIJLCTYPEJ-'r 5RULEOUDOeJECTT©j=i-'sJr*:LuL5.r-弓 3 r-二eSTlDTOPORULETYPELEJEISEXCEPT1OMI gobjwmjBSuZk I里1HIJL EEE.CJLASSID RULECATEGORY MEXPGrmg在虚线表示一个隐式表之间的关系。GDBTOOGLASSESPKCLSSID一TQPOLOGYIJXYFUHK2RA1VCEVENTSONAHJULYZEGDBJTOPQLOGlESiin1EiAT5AS=NAMEmiOM4ERHIMAMEI _1.DATsMEinDPROPERTIESGaBFEATJREDATASETPK£iU1LHATAfiAEEMAME OWWERNAMESR1DT 3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论