空间拓扑描述的是自然界地理对象的空间位置关系-相邻,重合,连通等,是地理对象空间属性的一部分.目前ESRI提供的数据存储方式中,Coverage和GeoDatabase能够建立拓扑,Shape格式的数据不能建立拓扑

1.     GeoDataBase建立拓扑的基础 

1).GeoDatabase实现拓扑的基础是”几何重合”,Geodatabase中的地理对象都是实体存储,主要是根据节点坐标是否重合来判断地理要素之间是否存在某种拓扑关系

2).拓扑只能在要素集(FeatureDataset)中创建,参加创建拓扑的所有要素类(FeatureClass)必须具有相同的空间参考

3).参与拓扑创建的必须是简单要素类,注记类(Annoca),尺寸和几何网络要素类不能参与拓扑的创建

4)单个要素集可以创建多个拓扑

2.     GeoDatabase拓扑中的重要概念 

1).规则:表达要素之间的空间关系,ESRI提供了27中拓扑关系(见后面附表)

2).拓扑容限.决定在多大范围内要素能够被捕捉在一起(也称为聚类容限(cluster tolerance))

3).拓扑等级 控制在拓扑验证的过程中节点移动的级别.这时候,等级低的要素类将向等级高的要素类移动,最高级别为1,最低级别为-50

4).脏区(dirty area):脏区就是参与拓扑创建时被修改的地理要素(增,删,改)的区域

5).错误要素(Error Feature):只要素类中不符合拓扑规则的要素或者要素的一部分

3.     使用拓扑的详细步骤及代码 

1).创建拓扑

ITopology是一个不可创建类,创建拓扑需通过调用ITopologyContainer:CreateTopology方法来建立拓扑,拓扑的规则要用ITopologyRule接口来表达,必须加到ITopologyRuleContainer中.

public void CreateTopology(IFeatureDataset featuredataset, string topologyName,esriTopologyRuleType rulename,double clusterTolerance,int classID)
{
try
{
ITopologyContainer topologyContainer = (ITopologyContainer)featureDataset;
ITopology topology=topologyContainer.CreateTopology(topologyName, clusterTolerance, -, "");
IFeatureClassContainer featureclassContainer = (IFeatureClassContainer)featureDataset;
ITopologyRuleContainer topologyRuleContainer = (ITopologyRuleContainer)topology;
ITopologyRule topologyRule = new TopologyRuleClass();
topologyRule.TopologyRuleType = rulename;
topologyRule.OriginClassID = classID;
if (topologyRuleContainer.get_CanAddRule(topologyRule))
{
topologyRuleContainer.AddRule(topologyRule);
}
}
catch (COMException ex)
{
MessageBox.Show(ex.
}
}

2).验证拓扑

通过调用ITopology:ValidateTopology 方法来验证指定区域内的拓扑,没有版本的拓扑可以在任何时候验证,指定版本的拓扑必须在编辑会话中验证

例如验证整个区域的拓扑的代码片段,假设已经存在创建好的拓扑ITopology topo

IGeoDataset geodataset=(IGeoDataset) topo; 

topo. ValidateTopology(geodataset. Extent.Envelope); 

ESRI的拓扑规则

esriTRTAny 
任何拓扑规则. 查询拓扑的时候用

esriTRTFeatureLargerThanClusterTolerance 
地理要素小于聚类容限被删除

esriTRTAreaNoGaps 
面是封闭的

esriTRTAreaNoOverlap 
面不相交

esriTRTAreaCoveredByAreaClass 
The rule is an area covered by area class rule.

esriTRTAreaAreaCoverEachOther 
两个区域完全重合

esriTRTAreaCoveredByArea 
一个区域被另一个区域覆盖

esriTRTAreaNoOverlapArea 
一个面没有相交的面

esriTRTLineCoveredByAreaBoundary 
线被区域的边线覆盖

esriTRTPointCoveredByAreaBoundary 
点在面的边界上

esriTRTPointProperlyInsideArea 
点完全在面内

esriTRTLineNoOverlap 
无重合的线

esriTRTLineNoIntersection 
无相交的线

esriTRTLineNoDangles 
无摇摆的线

esriTRTLineNoPseudos 
线不存在伪节点

esriTRTLineCoveredByLineClass 
The rule is a line covered by line class rule.

esriTRTLineNoOverlapLine 
The rule is a line-no overlap line rule.

esriTRTPointCoveredByLine 
点被线覆盖

esriTRTPointCoveredByLineEndpoint 
点被线的尾节点覆盖

esriTRTAreaBoundaryCoveredByLine 
一个面的边界被线覆盖

esriTRTAreaBoundaryCoveredByAreaBoundary 
一个面的边界被另一个面的边界覆盖

esriTRTLineNoSelfOverlap 
不存在自重合的线

esriTRTLineNoSelfIntersect 
不存在自相交的线

esriTRTLineNoIntersectOrInteriorTouch 
The rule is a line-no intersect or interior touch rule.

esriTRTLineEndpointCoveredByPoint 
线的尾节点被点覆盖

esriTRTAreaContainPoint 
面包含点

esriTRTLineNoMultipart 
The rule is a line cannot be multipart rule.

ArcEngine拓扑的更多相关文章

  1. arcengine 开发经典帖

    http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=25575&page=1&extra= 使用ArcGIS Engine 开发自定义 ...

  2. arcengine 开发经典帖 【强烈推荐仔细研读】

    转自原文 arcengine 开发经典帖 使用ArcGIS Engine 开发自定义GIS应用: 第一部分:使用ArcGIS Engine 发布自定义GIS应用软件-全面了解ArcGIS Engine ...

  3. 算法与数据结构(七) AOV网的拓扑排序

    今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...

  4. 有向无环图的应用—AOV网 和 拓扑排序

    有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林 ...

  5. 通过HTML5的Drag and Drop生成拓扑图片Base64信息

    HTML5 原生的 Drag and Drop是很不错的功能,网上使用例子较多如 http://html5demos.com/drag ,但这些例子大部分没实际用途,本文将搞个有点使用价值的例子,通过 ...

  6. 【BZOJ-2938】病毒 Trie图 + 拓扑排序

    2938: [Poi2000]病毒 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 609  Solved: 318[Submit][Status][Di ...

  7. Arcgis, ArcEngine, Arcgis Server使用开发汇总 索引

    ArcGIS系列软件license及安装: Arcgis SDE10.1 和 Arcgis server10.1的授权文件license tnt_esri.dat Arcgis8.1安装license ...

  8. BZOJ1565 [NOI2009]植物大战僵尸(拓扑排序 + 最大权闭合子图)

    题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=1565 Description Input Output 仅包含一个整数,表示可以 ...

  9. 图——拓扑排序(uva10305)

    John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...

随机推荐

  1. codeforces 754D. Fedor and coupons

    D. Fedor and coupons time limit per test 4 seconds memory limit per test 256 megabytes input standar ...

  2. 《OOAD与UML那点儿事》目录索引

    关键字:OOAD.UML.设计模式 各位园友,大家好,我是Bobby,在学习OOAD和开发的项目的过程中有一些感悟和想法,整理和编写了一些学习资料 [内容简介]掌握某种开发语言,让你实现了由零到一的脱 ...

  3. 让Java和MySQL连接起来

    Java 连接 MySQL 需要驱动包,可以下载菜鸟教程提供的 jar 包:http://static.runoob.com/download/mysql-connector-java-5.1.39- ...

  4. 关于HTML5音频——audio标签和Web Audio API各平台浏览器的支持情况

    对比audio标签 和 Web Audio API 各平台浏览器的支持情况:   audio element Web Audio API desktop browsers Chrome 14 Yes  ...

  5. Compare接口

    1.Comparable接口 此接口强行对实现它的每个类的对象进行整体排序.此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 .实现此接口的对象列表(和数组)可以通过 ...

  6. JQuery_元素属性操作

    除了对元素内容进行设置和获取,通过jQuery 也可以对元素本身的属性进行操作,包括获取属性的属性值.设置属性的属性值,并且可以删除掉属性. <script type="text/ja ...

  7. 误删除libc.so.6 恢复

    一.我是怎样一步一步毁掉系统的 最近在centos 7上进行开发.由于需要使用高版本linux内核的特性,需要将linux内核升级.按照教程:centos 7升级内核 进行升级的时候发现在安装elre ...

  8. Evolutionary Computing: [reading notes]On the Life-Long Learning Capabilities of a NELLI*: A Hyper-Heuristic Optimisation System

    resource: On the Life-Long Learning Capabilities of a NELLI*: A Hyper-Heuristic Optimisation System ...

  9. ActiveReports最终报表设计器本地化方法介绍

    ActiveReports UI界面中的所有字符信息.错误提示信息.以及一些logo.图像资源,都能够通过运行batch文件来本地化.本文主要介绍资源本地化的具体步骤: 1. 资源目录 所有可本地化的 ...

  10. css学习笔记 7

    background-position属性值为百分比的时候,第一个百分比表示水平方向的距离,第二个表示垂直方向上的距离. text-indent的主要作用是为段落设置首行缩进,只能应用于块级元素.该属 ...