У меня есть большое количество папок проекта, где каждая папка проекта может иметь много подпапок. Эти подпапки могут содержать MXDS, шейп-файлы, личные GDB и FGDB. Во многих случаях пользователь забывал проверить «Использовать относительные пути» перед сохранением mxds, поэтому, когда папка копируется, ссылки на источники данных нарушаются.
Я хотел бы написать автономный скрипт arcpy, который сканирует каталоги, открывает каждый mxd, устанавливает относительные пути в true, а затем сохраняет mxd. Есть сценарий, который делает это где-нибудь?
СвойствоlativePaths объекта MapDocument доступно только для чтения . Есть ли другой способ изменить это?
Ответы:
Это возможно, используя следующий скрипт на python (благодаря Нилу Клеммонсу на форуме ESRI ). Вы будете нуждаться в comtypes библиотеке и Snippets модуле из Pierssen Consulting.
источник
Невозможно в 10.0 , но я имел некоторый успех, используя ArcObjects в Python для относительно простых задач, подобных этой, где написание приложения .NET было бы излишним, но необходимые функции не были представлены в модулях arcpy / arcgisscripting. Используйте os.walk для сканирования части дерева каталогов.
Для бита ArcObjects используйте,
IMapDocument.Open()
чтобы открыть MXD (без необходимости открывать его в ArcMap), привести к значению trueIMxDocument
и установитьRelativePaths
его и использоватьIMapDocument.Save()
для его сохранения.источник