Tengo una gran cantidad de carpetas de proyectos donde cada carpeta de proyecto puede tener muchas subcarpetas. Estas subcarpetas pueden contener mxds, shapefiles, gdb's y fgdb's personales. En muchos casos, el usuario se olvidó de verificar "Usar rutas relativas" antes de guardar los mxds, por lo que cuando se copia la carpeta, los enlaces de origen de datos se rompen.
Me gustaría escribir una secuencia de comandos arcpy independiente que rastree los directorios, abra cada mxd, establezca las rutas relativas en verdadero y luego guarde el mxd. ¿Hay algún script que haga esto en alguna parte?
La propiedad relativePaths en el objeto MapDocument es de solo lectura. ¿Hay alguna otra forma de cambiar esto?
Respuestas:
Esto es posible utilizando el siguiente script de Python (gracias a Neil Clemmons en el foro de ESRI ). Necesitará la biblioteca de tipos y el módulo Snippets de Pierssen Consulting.
fuente
No es posible en 10.0 , pero he tenido cierto éxito al usar ArcObjects en Python para tareas relativamente simples como esta en las que escribir una aplicación .NET sería excesivo, pero la funcionalidad necesaria no se expuso en los módulos arcpy / arcgisscripting. Use os.walk para rastrear la parte del árbol de directorios.
Para el bit ArcObjects, úselo
IMapDocument.Open()
para abrir el MXD (sin tener que abrirlo en ArcMap), convertirloIMxDocument
y establecerloRelativePaths
en verdadero, y úseloIMapDocument.Save()
para guardarlo.fuente