ARCGIS联合的命令怎么使用( 二 )


二、再看看在ArcEngine中实现拓扑的过程和接口函数:
首先,拓扑作为比较高级的功能,需要在程序里首先注册相应的功能代码 。实现这一必要步骤的接口是:IAoInitialize,它有Initialize 方法,必须在任何的其他组件前面使用,它可以初始化一个产品代码 。这是C#的方法声明格式:public esriLicenseStatus Initialize (esriLicenseProductCode
ProductCode);
esriLicenseProductCode有六个常量,我们在这里要用到的是esriLicenseProductCodeEngineGeoDB 。
下面看其拓扑实现的结构流程:首先需要获取工作空间,定义IWorkspaceFactory接口,它的作用是打开相应的数据库文件,然后赋予 IFeatureWorkspace接口,然后获取相应的数据集接口IFeatureDataset,将IFeatureDataset赋予 ITopologyContainer以获取属于这个数据集的拓扑集合,然后利用ITopologyContainer的CreateTopology方法创建具体的拓扑类,这样就创建了属于相应数据集的拓扑了 。然后就是通过一些接口和函数来设置这个拓扑的特性:图层、容限值、精度等级以及拓扑关系规则,最后通过ValidateTopology方法执行这个拓扑即可 。可以看到它的实现过程跟上面的是一样的 。
三、 有关geodatabase的topology规则
多边形topology
1.must
not overlay:单要素类,多边形要素相互不能重叠
2.must not have
gaps:单要素类,连续连接的多边形区域中间不能有空白区(非数据区)
3.contains
point:多边形+点,多边形要素类的每个要素的边界以内必须包含点层中至少一个点
4.boundary must
be covered by:多边形+线,多边形层的边界与线层重叠(线层可以有非重叠的更多要素)
5.must be
covered by feature class of:多边形+多边形,第一个多边形层必须被第二个完全覆盖(省与全国的关系)
6.must be covered
by:多边形+多边形,第一个多边形层必须把第二个完全覆盖(全国与省的关系)
7.must not
overlay with:多边形+多边形,两个多边形层的多边形不能存在一对相互覆盖的要素
8.must cover
each other:多边形+多边形,两个多边形的要素必须完全重叠
9.area boundary
must be covered by boundary of:多边形+多边形,第一个多边形的各要素必须为第二个的一个或几个多边形完全覆盖
10.must be properly inside
polygons:点+多边形,点层的要素必须全部在多边形内
11.must be
covered by boundary of:点+多边形,点必须在多边形的边界上
线topology
1.must
not have dangle:线,不能有悬挂节点
2.must not have
pseudo-node:线,不能有伪节点
3.must not overlay:线,不能有线重合(不同要素间)
4.must not self overlay:线,一个要素不能自覆盖
5.must not
intersect:线,不能有线交叉(不同要素间)
6.must not self
intersect:线,不能有线自交叉
7.must not intersect or touch
interrior:线,不能有相交和重叠
8.must be single part:线,一个线要素只能由一个path组成
9.must not
covered with:线+线,两层线不能重叠
10.must be
covered by feature class of:线+线,两层线完全重叠
11.endpoint must
be covered by:线+点,线层中的终点必须和点层的部分(或全部)点重合
12.must be
covered by boundary of:线+多边形,线被多边形边界重叠
13.must be
covered by endpoint of:点+线,点被线终点完全重合
14.point must be
covered by line:点+线,点都在线上
四、ArcGIS 常见拓扑错误的修改方法综述
一)、面不能相互重叠(must not overlap)
修改方法有以下几种:

推荐阅读