《怎样用程序添加、删除连接(join)和关联(relate)》由会员分享,可在线阅读,更多相关《怎样用程序添加、删除连接(join)和关联(relate)(3页珍藏版)》请在金锄头文库上搜索。
1、内容摘要 ArcMap 里面可以通过属性字段为两个图层建立或删除连接和关联,怎样使用 VBA 或 Engine 完成同样的工作呢? 这里主要用到 IDisplayRelationshipClass.DisplayRelationshipClass 方法,如下为实现 的 VBA 代码: 过程描述 Private Sub AddJoin_Relation_Click()Dim pFeatLayer As IFeatureLayerDim pDispTable As IDisplayTableDim pFCLayer As IFeatureClassDim pTLayer As ITableDim
2、pTabCollection As IStandaloneTableCollectionDim pStTable As IStandaloneTableDim pDispTable2 As IDisplayTableDim pTTable As ITableDim pMemRelFact As IMemoryRelationshipClassFactoryDim pRelClass As IRelationshipClassDim pDispRC As IDisplayRelationshipClassSet pFeatLayer = GetLayer(0) MapControl1.Layer
3、(0)Dim pDoc As IMxDocumentSet pDoc = ThisDocumentDim pMap As IMapSet pMap = pDoc.ActiveViewSet pTabCollection = pMapIf pTabCollection.StandaloneTableCount = 0 ThenExit SubEnd IfSet pDispTable = pFeatLayerSet pFCLayer = pDispTable.DisplayTableSet pTLayer = pFCLayerSet pDispRC = pFeatLayerSet pStTable
4、 = pTabCollection.StandaloneTable(0)Set pDispTable2 = pStTableSet pTTable = pDispTable2.DisplayTableSet pMemRelFact = New MemoryRelationshipClassFactorySet pRelClass = pMemRelFact.Open(pStTable.Name, pTTable, “id“, pTLayer, “省 行政中心“, “forward“, “backward“, esriRelCardinality.esriRelCardinalityOneToM
5、any) 这里参数根据具体数据和需求设置,详细信息可参照开发帮助文档增加连接 JoinpDispRC.DisplayRelationshipClass pRelClass, esriJoinType.esriLeftOuterJoin增加关系 -RelateDim pRelClassCollEdit As IRelationshipClassCollectionEditSet pRelClassCollEdit = pFeatLayerpRelClassCollEdit.AddRelationshipClass pRelClassSet pDispRC = pFeatLayerIf Not p
6、DispRC.RelationshipClass Is Nothing ThenMsgBox “建立关联时:“ & pDispRC.RelationshipClass.OriginClass.AliasNameEnd If End SubPrivate Sub RemoveJoinRelation_Click()Dim pFeatLayer As IFeatureLayerDim pDispRC As IDisplayRelationshipClassDim pRelationshipClassCollectionEdit As IRelationshipClassCollectionEdit
7、Set pFeatLayer = GetLayer(0) MapControl1.Layer(0)Set pRelationshipClassCollectionEdit = pFeatLayerSet pDispRC = pFeatLayerIf Not pDispRC.RelationshipClass Is Nothing ThenMsgBox “删除关联前:“ & pDispRC.RelationshipClass.OriginClass.AliasNameEnd If删除 RelateCall pRelationshipClassCollectionEdit.RemoveAllRelationshipClasses删除所有 JoinpDispRC.DisplayRelationshipClass Nothing, esriJoinType.esriLeftOuterJoin 这里第一个参数传入 Nothing 即可完成删除Set pDispRC = pFeatLayerIf Not pDispRC.RelationshipClass Is Nothing ThenMsgBox “删除关联后:“ & pDispRC.RelationshipClass.OriginClass.AliasNameEnd IfEnd Sub