如何设置和修改层的数据源
本例要实现的是如何改变(或设置)一个层的数据源(Data Source)。主要用到IMapAdmin2接口。
l 要点
首先需要得到新数据源的IFeatureClass接口对象和当前要改变数据源的层的当前IFeatureClass接口对象,然后调用IMapAdmin2接口的FireChangeFeatureClass方法实现之。
l 程序说明
过程UICMD_ChageDataSource_Click是实现模块,调用过程ChangeLayerDataSource实现功能。
sNewFileName是层的新数据源的shape文件的完整文件名(包含)。
l 代码
|
Private Sub UICMD_ChageDataSource_Click() Dim pVBProject As VBProject Dim sProjectName As String Dim sNewFileName As String On Error GoTo ErrorHandler: Set pVBProject = ThisDocument.VBProject 'Get MXD File Path sProjectName = pVBProject.FileName 'Get Data File Path sNewFileName = sProjectName & "\..\..\..\..\data\country.shp" 'Call Procedure ChangeLayerDataSource sNewFileName Exit Sub ErrorHandler: MsgBox Err.Description End Sub Private Sub ChangeLayerDataSource(ByVal sNewFileName As String) Dim pWorkspaceFactory As IWorkspaceFactory Dim pWorkspace As IWorkspace Dim pFeatureWorkspace As IFeatureWorkspace Dim pNewFeatureCls As IFeatureClass Dim pOldFeatureCls As IFeatureClass Dim pMxDocument As IMxDocument Dim pMap As IMap Dim pActiveView As IActiveView Dim pMapAdmin2 As IMapAdmin2 Dim pFeatureLayer As IFeatureLayer On Error GoTo ErrorHandler 'Get Data FeatureClass Set pWorkspaceFactory = New ShapefileWorkspaceFactory Set pWorkspace = pWorkspaceFactory.OpenFromFile(sNewFileName & "\..\", 0) Set pFeatureWorkspace = pWorkspace Set pNewFeatureCls = pFeatureWorkspace.OpenFeatureClass("country") 'Get Lay(0)'s FeatureClass Set pMxDocument = ThisDocument Set pMap = pMxDocument.FocusMap Set pMapAdmin2 = pMap Set pActiveView = pMap Set pFeatureLayer = pMap.Layer(0) Set pOldFeatureCls = pFeatureLayer.FeatureClass 'Change Data Source Set pFeatureLayer.FeatureClass = pNewFeatureCls pMapAdmin2.FireChangeFeatureClass pOldFeatureCls, pNewFeatureCls pActiveView.Refresh 'if want to change Display in Toc ,cancel these comment below 'pFeatureLayer.Name = pNewFeatureCls.AliasName 'pMxDocument.CurrentContentsView.Refresh 0 Exit Sub ErrorHandler: MsgBox Err.Description End Sub |
浙公网安备 33010602011771号