参考资料:
使用 arcpy.mapping 更新和修复数据源—ArcMap | 文档
- 原有环境
以及mxd
- 新的sde环境
- 需求:需要批量将原有mxd中的sde路径替换为新环境sde路径
最终效果:
- 示例代码
下述代码是python2,因此需要考虑中文字符编码支持情况
# -*- coding:utf-8 -*-
import arcpy
from arcpy import env
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
arcpy.env.overwriteOutput=True
in_path = r"E:\mxd"
out_path = r"E:\output"
#name的值是旧环境sde链接的名称,如果包含中文需要考虑python2对中文字符编码支持的情况,例子中已考虑此种情况
name="连接到 192.168.0.157".decode("utf-8")
oldsde=r"C:\Users\Administrator\AppData\Roaming\Esri\Desktop10.6\ArcCatalog\{0}.sde".format(name).decode("utf-8")
#设置新的sde数据源,注意路径不要有空格、中文、特殊字符等
newsde = r"C:\Users\Administrator\AppData\Roaming\Esri\Desktop10.6\ArcCatalog\pg161.sde"
print "begin"
env.workspace= in_path
#轮询文件夹,实现批量转换
for f in arcpy.ListFiles("*.mxd"):
print(f)
mxd = arcpy.mapping.MapDocument(env.workspace + "\\" + f)
mxd.findAndReplaceWorkspacePaths(oldsde,newsde)
mxd.saveACopy(out_path + "\\" + f)
print("done")
- 上述代码中的oldsde和newsde路径获取方式
Oldsde
Newsde