current_mxd = arcpy.mapping.MapDocument ("CURRENT") df = arcpy.mapping.ListDataFrames (current_mxd) for dataframes in df: print "DATAFRAME = " + dataframes.name + "\n" + "LAYERS: " lyrs = arcpy.mapping.ListLayers (dataframes) for layers in lyrs: print " " + layers.name for broken in arcpy.mapping.ListBrokenDataSources (dataframes): print broken.name + " source is missing" if broken.dataSource == r"C:\Student\MapScripting10_0\Maps\PlainsView.gdb\East_Timort": broken.replaceDataSource (r"C:\Student\MapScripting10_0\PlainsView.gdb","FILEGDB_WORKSPACE","East_Timor", False) del broken del layers del dataframes del mxd arcpy.RefreshTOC()
import arcpy, os start = r"C:\Student\MapScripting10_0\Maps" for root, dirs, files in os.walk(start): for mapDoc in files: if mapDoc.endswith(".mxd"): path = os.path.abspath(os.path.join(root,mapDoc)) mxd = arcpy.mapping.MapDocument(path) print "\n" + "Map Document = " + path df = arcpy.mapping.ListDataFrames (mxd) for dataframes in df: print " DATAFRAME = " + dataframes.name + "\n" + "LAYERS: " lyrs = arcpy.mapping.ListLayers (dataframes) for layers in lyrs: print " " + layers.name del layers for broken in arcpy.mapping.ListBrokenDataSources (dataframes): print broken.name + " source is missing" print " Original source = " + broken.dataSource if broken.dataSource == r"C:\Student\MapScripting10_0\Maps\PlainsView.gdb\East_Timort": print " Found. Attempting to fix." osource = r"C:\Student\MapScripting10_0\Maps\PlainsView.gdb" nsource = "Timor" broken.replaceDataSource (osource,"FILEGDB_WORKSPACE",nsource, False) del broken del layers del dataframes del df del mxd # mxd.saveACopy(os.getcwd() + "\\" + mapDoc[:-4] + "_new.mxd") del mapDoc del root del dirs del files arcpy.RefreshTOC() arcpy.RefreshActiveView()
Solved! Go to Solution.
import arcpy, os from arcpy import da ws = r'D:\test' workspace = arcpy.env.workspace = ws arcpy.env.overwriteOutput = True start = "D:\\test" for root, dirs, files in os.walk(start): for mapDoc in files: if mapDoc.endswith(".mxd"): path = os.path.abspath(os.path.join(root,mapDoc)) mxd = arcpy.mapping.MapDocument(path) print "\n" + "Map Document = " + path df = arcpy.mapping.ListDataFrames(mxd) for dataframes in df: print " DATAFRAME = " + dataframes.name + "\n" + "LAYERS: " # lyrs = arcpy.mapping.ListLayers(dataframes) # for layers in lyrs: # print " " + layers.name for broken in arcpy.mapping.ListBrokenDataSources(dataframes): if broken.supports("DATASOURCE"): print broken.name + " source is missing" print " Original source = " + broken.dataSource if broken.dataSource == r"D:\esri_data.gdb\WasteSites\WasteSitesLine": print " Found. Attempting to fix." broken.replaceDataSource(r'\\mcflight01\MCFlightData\HGIS\Data\WCH.gdb',"FILEGDB_WORKSPACE","WasteSitesLine", False) mxd.save() del dataframes del df del mxd # mxd.saveACopy(os.getcwd() + "\\" + mapDoc[:-4] + "_new.mxd") del mapDoc
if broken.dataSource == r"C:\Student\MapScripting10_0\Maps\PlainsView.gdb\East_Timort": print " Found. Attempting to fix." osource = r"C:\Student\MapScripting10_0\Maps\PlainsView.gdb" nsource = "Timor"
import arcpy, os from arcpy import da ws = r'D:\test' workspace = arcpy.env.workspace = ws arcpy.env.overwriteOutput = True start = "D:\\test" for root, dirs, files in os.walk(start): for mapDoc in files: if mapDoc.endswith(".mxd"): path = os.path.abspath(os.path.join(root,mapDoc)) mxd = arcpy.mapping.MapDocument(path) print "\n" + "Map Document = " + path df = arcpy.mapping.ListDataFrames(mxd) for dataframes in df: print " DATAFRAME = " + dataframes.name + "\n" + "LAYERS: " # lyrs = arcpy.mapping.ListLayers(dataframes) # for layers in lyrs: # print " " + layers.name for broken in arcpy.mapping.ListBrokenDataSources(dataframes): if broken.supports("DATASOURCE"): print broken.name + " source is missing" print " Original source = " + broken.dataSource if broken.dataSource == r"D:\esri_data.gdb\WasteSites\WasteSitesLine": print " Found. Attempting to fix." broken.replaceDataSource(r'\\mcflight01\MCFlightData\HGIS\Data\WCH.gdb',"FILEGDB_WORKSPACE","WasteSitesLine", False) mxd.save() del dataframes del df del mxd # mxd.saveACopy(os.getcwd() + "\\" + mapDoc[:-4] + "_new.mxd") del mapDoc
if broken.dataSource == r"C:\Student\MapScripting10_0\Maps\PlainsView.gdb\East_Timort": print " Found. Attempting to fix." osource = r"C:\Student\MapScripting10_0\Maps\PlainsView.gdb" nsource = "Timor"