У меня есть около 50 mxd со всеми сломанными слоями, которые я проходил и сбрасывал вручную.
Данные были перенесены с другого компьютера, а структура папок была изменена, поэтому это не просто процесс изменения (пример):
«F: \ Data \ Rivers.shp» в «C: \ Data \ Rivers.shp»
это больше похоже на:
«F: \ Data \ Rivers.shp» в C: \ Data \ Park \ Water \ Rivers.shp
и так далее для всех видов данных (границы, растительный покров, дороги и т. д.), каждый из которых находится в отдельной подпапке.
Я хочу создать сценарий, который я могу запускать несколько раз всякий раз, когда открываю один из этих mxd, который, по крайней мере, восстанавливает некоторые из наиболее распространенных слоев, которые есть в большинстве моих mxd, и затем я могу вручную восстановить остальные. Таким образом , я могу по крайней мере сохранить себя некоторое время.
Я использовал что-то вроде:
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")
Тогда идея заключается в том, чтобы как-то добавить несколько сценариев «замены» в приведенном выше описании для других общих слоев, которые есть в моем mxd.
Однако приведенный выше скрипт даже не исправляет слой Rivers.
Как я могу заставить его работать, а также добавить в другие слои для ремонта, которые имеют разные пути к файлам?
источник