Answers:
右键单击ArcCatalog中的mxd,单击“设置数据源”,然后从此处批量更改。但是,此工具警告:
注意:此对话框主要用于准备要发布的地图文档。使用此对话框更新其数据源时,将从.mxd文件中删除自定义项(VBA代码,UI控件和自定义工具栏),图形和表格窗口外观属性。要保留这些,请改为更新ArcMap中的数据源。
您还可以使用arcpy.mapping python库:
如果您正在使用ArcGIS 10并且对使用Python感兴趣,请查看有关使用arcpy.mapping更新和修复数据源以及Layer对象的方法的帮助。
例:
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project_SDE1.mxd")
mxd.findAndReplaceWorkspacePaths(r"Database Connections\Connection to GISSDE1.sde",
r"Database Connections\Connection to GISSDE2.sde")
mxd.saveACopy(r"C:\Project\Project_SDE2.mxd")
del mxd
如果您的图层并非都源同一个原始连接文件,或者新SDE上的目标要素类名称不同,则可能需要使用Layer.replaceDataSource
。
http://arcscripts.esri.com/details.asp?dbid=14922
该链接指向一个旧的名为GDK工具的Arcscript,可以在其他站点上获得。本程序在arcmap中创建一个工具栏,您可以在其中更改选定图层(所需的任何图层。在SDE连接或SDE与本地文件地理数据库之间都可以工作)(Arccatalog中的夹着更改源无法处理,因为SDE中的名称以SDE用户,然后点。
这非常有帮助,但也许仅在arcgis 9.3中
如果您已经打开.mxd,请执行@ blah238的操作,但使用'CURRENT'
而不是完整路径。不要忘记搜索和替换不必是完整的字符串:
import arcpy
mxd = arcpy.mapping.MapDocument('CURRENT')
mxd.findAndReplaceWorkspacePaths(r"scratch",
r"project/draft")
然后,您仍然必须保存并重新打开.mxd文件。
对于一个mxd,默认的ESRI工具就足够了。但是用断开的链接修复多个mxds可能是一场噩梦。尝试使用我的UpdateLayerRefs工具在几秒钟内修复无限的MXD:https : //github.com/jswagger/UpdateLayerRefs 只需提供输入MXD的名称作为列表[“ Name1.mxd”,“ Name2.mxd”,“ Name3.mxd” “]
似乎这篇文章很旧,但是我无法使它正常工作:代码如下:
import arcpy, glob
#specify MXD location to change source data
mxd = arcpy.mapping.MapDocument(r"C:\\Users\\jrender\\Documents\\LandbaseEditing PreProd Pub Check.mxd")
workspaceCurrent = r"Database Connections\Connection to PP_GISLand_Landbase.sde"
workspaceTarget = r"Database Connections\Connection to PP_Publication_GISLand.sde"
mxd.findAndReplaceWorkspacePaths(workspaceCurrent, workspaceTarget)
#save a new copy of MXD
mxd.saveACopy(r"C:\Users\jrender\Documents\LandbaseEditing PreProd Pub Check Repathed.mxd")