如何批量修复mxd文档中多个layer的数据源?

mxd中有多个图层,由于原始数据所在的FileGDB更换了位置,导致打开该mxd时找不到数据源了,如何批量更新数据源?
已邀请:

朱新颖

赞同来自:

【解决办法】:
1,使用IMapDocument接口打开该mxd;
2,批量修复mxd的数据源,可以使用IDataSourceHelperMapDocument.ReplaceWorkspaceName方法;
3,使用IMapDocument.Save()保存该mxd即可,具体参考下面代码:


IDataSourceHelperMapDocument repairment = new DataSourceHelperClass();
IMapDocument mapDocument = new MapDocumentClass();
mapDocument.Open(@C:\Users\Xinying\Desktop\Untitled.mxd);
IWorkspaceName oldWorkspaceName = new WorkspaceNameClass();
oldWorkspaceName.WorkspaceFactoryProgID = esriDataSourcesGDB.FileGDBWorkspaceFactory;
oldWorkspaceName.PathName = @C:\Users\Xinying\Documents\ArcGIS\Default.gdb;
IWorkspaceName newWorkspaceName = new WorkspaceNameClass();
newWorkspaceName.WorkspaceFactoryProgID = esriDataSourcesGDB.FileGDBWorkspaceFactory;
newWorkspaceName.PathName = @E:\ZhuXinying\testData\Data.gdb;
repairment.ReplaceWorkspaceName(mapDocument, oldWorkspaceName, newWorkspaceName, true);
mapDocument.Save();

turtle

赞同来自: 我是大号

有一个方法可以尝试:
在ArcCatalog中,右键有问题的mxd工程文件,选择设置数据源(Set Data Source...),打开对话框后可以批量替换数据源。。。
 
当然还可以选择使用python脚本文件来批量处理

要回复问题请先登录注册