J'ai environ 50 mxd avec toutes les couches cassées que j'ai parcourues et réinitialisées manuellement.
Les données ont été déplacées d'un autre ordinateur et la structure des dossiers a été modifiée de sorte qu'il ne s'agit pas simplement d'un simple processus de modification (exemple):
"F: \ Data \ Rivers.shp" à "C: \ Data \ Rivers.shp"
c'est plus comme:
"F: \ Data \ Rivers.shp" à C: \ Data \ Park \ Water \ Rivers.shp
et ainsi de suite pour toutes sortes de données (limites, couverture végétale, routes, etc.) chacune dans son propre sous-dossier.
Je veux créer un script que je peux exécuter à plusieurs reprises chaque fois que j'ouvre l'un de ces mxd qui réparerait au moins certaines des couches les plus courantes que l'on trouve dans la plupart de mes mxd, puis je peux réparer manuellement le reste. De cette façon, je peux au moins me faire gagner du temps.
J'utilise quelque chose comme:
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'idée serait alors d'ajouter en quelque sorte plusieurs scripts de «remplacement» dans ce qui précède pour d'autres couches communes qui sont dans mes mxd.
Cependant, le script ci-dessus ne corrige même pas la couche Rivers.
Comment puis-je le faire fonctionner et ajouter d'autres couches à réparer qui ont des chemins de fichiers différents?
la source