使用arcmap arcpy批量替换mxd中sde路径为新环境下sde(pg)路径

参考资料:

使用 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值