Eu tenho um grande número de pastas de projeto em que cada pasta de projeto pode ter muitas subpastas. Essas subpastas podem conter mxds, shapefiles, gdb's pessoais e fgdbs. Em muitos casos, o usuário esqueceu de verificar "Usar caminhos relativos" antes de salvar os mxds; portanto, quando a pasta é copiada, os links da fonte de dados ficam quebrados.
Eu gostaria de escrever um script arcpy autônomo que rastreie os diretórios, abra cada mxd, defina o relatedPaths como true e salve o mxd. Existe um script que faz isso em algum lugar?
A propriedade relativePaths no objeto MapDocument é somente leitura. Existe alguma outra maneira de mudar isso?
Respostas:
Isso é possível usando o seguinte script python (com agradecimentos a Neil Clemmons no fórum da ESRI ). Você precisará da biblioteca de tipos e do módulo Snippets da Pierssen Consulting.
fonte
Não é possível na versão 10.0 , mas tive sucesso com o ArcObjects em Python para tarefas relativamente simples como essa, quando escrever um aplicativo .NET seria um exagero, mas a funcionalidade necessária não foi exposta nos módulos arcpy / arcgisscripting. Use os.walk para rastrear a parte da árvore de diretórios.
Para o bit ArcObjects, use
IMapDocument.Open()
para abrir o MXD (sem ter que abri-lo no ArcMap), converterIMxDocument
e definirRelativePaths
como true e useIMapDocument.Save()
para salvá-lo.fonte