修改MXD图层连接的方法

it2022-05-05  100

使用MXD的同志们肯定遇到这样的问题: 一个MXD复制到其它机器上,或者SDE服务器发生了变化,MXD打开后所有图层前都有一个讨厌的红色感叹号。连接丢失了。这个时候怎么办呢?

方法:       1、手工修改法                   1)断掉网络,打开MXD。断掉网络是为了加快打开MXD的速度;             2)连上网络             3)在一个图层上,点击鼠标右键,选择【Data】-【Repair Data Source】,选择正确的SDE服务器,或者其它类型数据源。MXD会自动修复。

            缺点:             如果我们有多个有效的数据源,只是想切换数据源,修复的时候,你会发现,自动修复的图层仍然采用了之前旧的数据源。似乎要逐个图层去修改。

      2、代码修改             可以把下面代码Copy到VBA环境,修改连接串,执行,可以在瞬间完成数据源的修改,是不是很爽?当然也可以做成一个独立的程序,用来修复MXD。

Private Sub IDataLayerExample()     Dim pMxdoc As IMxDocument     Dim pApp As IApplication     Set pApp = Application     Set pMxdoc = pApp.Document     Dim pLayer As ILayer     Dim pDataLayer As IDataLayer     Dim pDatasetName As IDatasetName     Dim pWSName As IWorkspaceName     Dim sFDS As String     Dim pFCName As IFeatureClassName     Dim i As Integer     For i = 0 To pMxdoc.FocusMap.LayerCount - 1         '获取图层         Set pLayer = pMxdoc.FocusMap.Layer(i)         If TypeOf pLayer Is IDataLayer Then             sFDS = ""             Set pDataLayer = pMxdoc.FocusMap.Layer(i)             Set pDatasetName = pDataLayer.DataSourceName             Set pWSName = pDatasetName.WorkspaceName             '修改连接串             pWSName.PathName = "C:\Documents and Settings\Administrator\Application Data\ESRI\ArcCatalog\Connection to localhost(dlg).sde"             '重新连接             pDataLayer.Connect pDatasetName                         '以下代码用来显示连接信息             Set pDatasetName.WorkspaceName = pWSName                         If TypeOf pDatasetName Is IFeatureClassName Then                 Set pFCName = pDatasetName                 If Not pFCName.FeatureDatasetName Is Nothing Then                     sFDS = pFCName.FeatureDatasetName.Name                 End If             End If

            Debug.Print "(" + Format(i) + ") Path: " + pWSName.PathName             Debug.Print "Feature Dataset: " + sFDS             Debug.Print "Feature Class/Dataset: " + pDatasetName.Name             Debug.Print                     End If     Next i End Sub

转载于:https://www.cnblogs.com/ITGIS/archive/2009/05/21/1486363.html


最新回复(0)