ArcObject 实现拓扑创建和检查

拓扑(Topology)是在同一个要素集(FeatureDataset)下的要素类(Feature Class)之间的拓扑关系的集合。所以要参与一个拓扑的所有要素类,必须在同一个要素集内(也就是具有同一的空间参考),这样进行的拓扑检查才是精确的。一个要素集可以有多个拓扑,但每个要素类最多只能参与一个拓扑,一个拓扑中可以定义多个规则。

进行拓扑分析的过程:
1 建立拓扑(添加拓扑规则)
2 验证拓扑
3 编辑过程中保证拓扑的正确
4 查询系统中存在的拓扑


1 建立拓扑的方法:

(1)利用 ArcCatalog 桌面建立。
(2)使用程序(ArcEngine)开发建立拓扑。

在 Engine 中建立拓扑的实现接口是ITopologyContainer::CreateTopologyITopologyContainer::CreateTopology方法用来创建拓扑。

接口说明:
ITopologyContainer是用来创建、添加、管理拓扑的平台容器。通过本接口用户可以了解当前要素集的拓扑信息,如名称;如果用户仅出于得到要素集拓扑信息的目的,建议不用本接口打开拓扑,而使用IFeatureDatasetNames::TopologyNames方法就可以快速获取。一旦使用CreateTopology方法创建拓扑后,本拓扑的参数便不能更改,如想变更则需删除或重新建立新的拓扑。
DefaultClusterTolerance是建立拓扑默认的“容差”。
MaximumClusterTolerance表示最大“容差”。
MinimumClusterTolerance表示最小“容差”。
如果用户在创建拓扑时使用的容差参数位于最大、最小之间 则参数有效,如位于最大与最小之间则按照极值(最大、最小)来处理;注意默认的容差是与最小容差一样的;

建立拓扑规则:
使用ITopologyRuleContainer接口。

接口说明:
IRule接口是Engine中的定义规则的接口,其中它的Type属性有以下几种:
建立拓扑规则我们将使用esriRTTopology;并通过ITopologyRule接口来实现拓扑规则。
并通过ITopologyRuleContainer接口将所定义的规则添加到当前的拓扑中(AddRule方法)。
ITopology接口和ITopologyRuleContainer接口共同继承于Topology类,所以可以QI。

注意 建立拓扑时会出现的问题:
(1)当要素集中的所有要素都已经参加建立其它拓扑的时候,使用已使用的要素类新建立拓扑会产生错误。
(2)当要素已参加网络分析(Geometry Network)运算的时候,建立拓扑也会出现错误。
(3)目标要素类是一个注记层或多维图层,不能建立拓扑。
(4)目标要素类已被注册为有版本,不能建立拓扑。

2 进行拓扑验证(validate)的方法:

(1)在ArcCatalog建立好拓扑后,可以选择直接验证。
(2)也可以在ArcMap中对建立好的拓扑进行验证(要素必须在编辑状态 Start Edit),然后可以进行拓扑的编辑。
(3)利用程序进行验证。

ITopology有一个方法ValidateTopology用来验证指定区域内的拓扑。需要注意 没有版本的拓扑可以在 任何时候验证。而有版本的拓扑必须在编辑回话中验证。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QQ359677345

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值