Ich habe ungefähr 50 mxd mit allen defekten Schichten, die ich durchgemacht und manuell zurückgesetzt habe.
Die Daten wurden von einem anderen Computer verschoben und die Ordnerstruktur wurde geändert, sodass es sich nicht nur um einen einfachen Änderungsvorgang handelt (Beispiel):
"F: \ Data \ Rivers.shp" bis "C: \ Data \ Rivers.shp"
es ist eher wie:
"F: \ Data \ Rivers.shp" bis C: \ Data \ Park \ Water \ Rivers.shp
und so weiter für alle Arten von Daten (Grenzen, Gemüsebeet, Straßen usw.), jeweils in einem eigenen Unterordner.
Ich möchte ein Skript erstellen, das ich wiederholt ausführen kann, wenn ich eine dieser MxDs öffne, mit dem zumindest einige der häufigeren Ebenen repariert werden, die in den meisten meiner MxDs zu finden sind. Den Rest kann ich dann manuell reparieren. So kann ich mir wenigstens etwas Zeit sparen .
Ich benutze etwas in der Art von:
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")
Die Idee wäre dann, auf irgendeine Weise mehrere "Ersetzen" -Skripte für andere allgemeine Ebenen hinzuzufügen, die sich in meinen MXDs befinden.
Das obige Skript repariert jedoch nicht einmal die Rivers-Ebene.
Wie kann ich es zum Laufen bringen und auch andere zu reparierende Ebenen hinzufügen, die andere Dateipfade haben?
quelle