arcpy查找失效数据并替修复为gdb中的feature class
)
本demo演示了利用arcpy.mapping.ListBrokenDataSources()读取失效数据,然后替换成gdb数据库下的要素类,只是简单的测试下,如果想实现特定批量转换,可以自己查找gsb要素类名称,然后写循环实现即可。
// An highlighted block
#coding=utf-8
import arcpy.mapping as mapping # 导入arcpy.mapping模块
import os
import time
start = time.time()
print(start)
mxd = arcpy.mapping.MapDocument(r"C:\Users\admin\Desktop\Screenshots\test123344.mxd") # 引用KeLaMaYi.mxd地图文档文件
wspath=r"C:\Users\admin\Desktop\Screenshots"
gdbfile=os.path.join(wspath, "New File Geodatabase.gdb")
listBrokenDS = arcpy.mapping.ListBrokenDataSources(mxd) # 获取丢失了数据源的图层列表
""" 迭代列表,输出图层名称"""
for layer in listBrokenDS:
print(layer.name)
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0] # 引用对应数据框
lyr = arcpy.mapping.ListLayers(mxd, "qw.liuheng1.test", df)[0] # 引用需要改变数据源的图层
lyr.replaceDataSource(gdbfile, "FILEGDB_WORKSPACE", "rrrtest")
print("qw.liuheng1.test替换完成")
lyr = arcpy.mapping.ListLayers(mxd, "qw.liuheng1.polygon", df)[0] # 引用需要改变数据源的图层
lyr.replaceDataSource(gdbfile, "FILEGDB_WORKSPACE", "pee")
print("qw.liuheng1.polygon替换完成")
mxd.save()
end = time.time()
print(end)
print("It took"+ str(end - start)+ "seconds to complete the scripts")
替换完成后,打开mxd数据失效已经修复完成,可以看到起存放的路径以及文件名称。