现在的位置: 首页 > 综合 > 正文

拓扑检查(ArcEngine)

2013年02月07日 ⁄ 综合 ⁄ 共 1541字 ⁄ 字号 评论关闭
创建拓扑

         
拓扑(Topology)是在同一个要素集(FeatureDataset)下的要素类(Feature
Class)之间的拓扑关系的集合。所以要参与一个拓扑的所有要素类,必须在同一个要素集内。一个要素集可以有多个拓扑,但每个要素类最多只能参与一个拓
扑。

         使用ArcCatalog创建Topology,在生成要素集及其下的要素类后,先不要进行注册版本,而先要根据创建拓扑向导创建拓扑层,之后再进行注册版本。

         不能建立拓扑的情况:
                 目标要素类已参与了一个Topology或Geometry Network
                 目标要素类是一个注记层或多维图层
                 目标要素类已被注册为有版本

         
在ArcEngine应用程序中虽然可通过ITopologyContainer接口创建Topology,但这仅适合于要素类没有注册版本的情况。对于
已注册版本的要素集,这种创建拓扑方法会使WorkSpace失效。一般使用ArcSDE,要素类很少不注册版本的;没有注册版本就无法实现版本追溯,甚
至连编辑的撤销重做都无法实现。

 

拓扑检查

         对于有注册版本的拓扑检查,必须在一个Edit Operation间进行。

    ''' <summary>
    ''' 对指定图层执行拓扑检查,并将拓扑结果层添加到Map
    ''' </summary>
    ''' <param name="pFeatureClass">参与拓扑的要素类</param>
    ''' <param name="pMap"></param>
    ''' <remarks></remarks>
    Public Sub ValidateTopology(ByVal pFeatureClass As IFeatureClass, ByVal pMap As IMap)
        
Dim pTopoClass As ITopologyClass = pFeatureClass
        
'如果要素类参与了拓扑
        If pTopoClass.IsInTopology Then

            
'StartEditOperation()

            
'执行拓扑检查
            Dim pTopo As ITopology = pTopoClass.Topology
            
Dim pGeoDS As IGeoDataset = pTopo
            
Dim pValidatedEnv As IEnvelope = pTopo.ValidateTopology(pGeoDS.Extent.Envelope)

            
'EndEditOperation()

            
'将检查结果添加到Map
            Dim pTopoLayer As ITopologyLayer = New TopologyLayer
            pTopoLayer.Topology 
= pTopo
            
Dim pLayer As ILayer = pTopoLayer
            pLayer.Name 
= pFeatureClass.AliasName & "_拓扑"
            pMap.AddLayer(pLayer)
        
End If
    
End Sub

抱歉!评论已关闭.