Ho circa 50 mxd con tutti i livelli rotti che ho attraversato e che ho ripristinato manualmente.
I dati sono stati spostati da un altro computer e la struttura delle cartelle è stata modificata, quindi non è solo un semplice processo di modifica (esempio):
"F: \ Data \ Rivers.shp" a "C: \ Data \ Rivers.shp"
è più simile a:
"F: \ Data \ Rivers.shp" in C: \ Data \ Park \ Water \ Rivers.shp
e così via per tutti i tipi di dati (confini, copertura vegetale, strade, ecc.) ciascuno nella propria sottocartella.
Voglio creare uno script che posso eseguire ripetutamente ogni volta che apro uno di questi mxd che riparerebbe almeno alcuni dei livelli più comuni che si trovano nella maggior parte dei miei mxd e quindi posso riparare manualmente il resto. In questo modo posso almeno risparmiare un po 'di tempo.
Ho usato qualcosa sulla falsariga di:
import arcpy
mxd = arcpy.mapping.MapDocument("CURRENT")
for lyr in arcpy.mapping.ListLayers(mxd):
if lyr == "Rivers": #Should this be the layner name in TOC or FC name?
lyr.replaceDataSource(r"C:\Data\Park\Water", "SHAPEFILE_WORKSPACE", "Rivers")
L'idea sarebbe quindi di aggiungere in qualche modo più script "sostituisci" in precedenza per altri layer comuni che si trovano nei miei mxd.
Tuttavia, lo script sopra non risolve nemmeno il livello Rivers.
Come posso farlo funzionare e anche aggiungere altri livelli da riparare con percorsi di file diversi?