PYTHON GIS - Cómo reparar rutas de varios archivos MXD masivamente

0

 

Aprende como usar Python (ArcPy) para reestablecer las bases de datos no encontradas dentro de un archivo MXD utilizando Python.


En este articulo aprenderás como reestablecer las bases de datos no encontradas dentro de varios archivos MXD utilizando Python. 


La pérdida de enlace entre los archivos de ArcMap y las bases de datos espaciales se da por alguno de estos motivos: 


a) Eliminación de la información.
b) Daño en la información espacial propiamente.
c) Cambio de ubicación en la carpeta que contiene la información espacial (GDB, Shapefile, entre otros).
d) Cambio en el nombre en la carpeta que contiene la información espacial.
e) Se movió la carpeta del proyecto completo a otra ubicación (Si es que no se especificó que el archivo guardara las rutas relativas).


El proceso aquí indicado te ayudará en caso de que te ocurran los escenarios c, d y e, y como bonus te enseñaré a que no te vuelva a pasar lo descrito en el caso e (Cabe aclarar que no se pierde en enlace en caso de que se renombre la carpeta de los archivos MXD); Para recuperar el enlace de la información espacial en archivos MXD el procedimiento normal es el siguiente:

¿Cómo reparar rutas de un archivo .MXD de ArcGIS?


1) Abrir el archivo MXD.


2) Ir a la capa con el enlace roto, darle doble clic derecho, presionar el ítem Data y pulsar el botón "Repair Data Source...".



Imagen que muestra la forma en la que se puede reparar la ruta de una capa en un archivo de ArcGIS


4) Buscar el Shapefile / Feature Class que corresponde a la capa en la nueva ubicación.


5) Dar clic en aceptar.


6) Guardar archivo MXD.


7) Paso opcional: Si la información estaba almacenadas en bases de datos o carpetas diferentes, será necesario repetir el procedimiento en cada capa o capas con fuentes de datos distintas.


Si este procedimiento ha de repetirse con cada una de las capas dentro del archivo MXD que han perdido su fuente de datos, lo cual puede ser bastante demorado; si además de varias capas, hay varios MXD con este problema, esto pasaría a ser un gasto de tiempo colosal. Para ahorrarte todo ese tiempo, te enseñare como puede ser mucho más eficiente utilizando código Python (No te preocupes no necesitaras saber programar para lograrlo).


¿Cómo reparar fuentes de datos de Archivos MXD (ArcMap) automáticamente?


Paso 1: abrir un archivo de ArcGIS en blanco.


Paso 2: Abrir la ventana Python en la barra de herramientas Standard.


Muestra la ubicación de la ventana Python dentro de la barra de herramientas Standard (estándar)


Paso 3: Respaldar los archivos MXD originales.


Paso 4: Identificar las rutas perdidas y las rutas actuales de la información. Para verificar las rutas perdidas, da clic derecho sobre la capa (a), presiona el boton "Properties..." (b) y ve a la pestaña "Source" (c), en el item "Location:" (d) encontraras la ruta donde se almacenaban anteriormente los datos espaciales.


Muestra donde encontrar la ruta de una capa que perdió el enlace a su fuente de datos para un archivo de ArcGIS / ArcMap


Paso 5: Copiar en un blog de notas el siguiente código y reemplazar el texto C:\EXAMPLE\MXD en la línea #02 por la ruta de la carpeta donde tienes almacenados los archivos MXD que presentan el problema. 




import arcpy, os                                                                        #01
arcpy.env.workspace = ws = r"C:\EXAMPLE\MXD"                                            #02
mxd_list = arcpy.ListFiles("*.mxd")                                                     #03
for mxd in mxd_list:                                                                    #04
    mxd = arcpy.mapping.MapDocument(os.path.join(ws, mxd))                              #05
    mxd.findAndReplaceWorkspacePaths(r"C:\EXAMPLE\OLD_FOLDER", r"C:\EXAMPLE\NEW_FOLDER")#06
    mxd.save()                                                                          #07
                                                                                        #08
del mxd_list                                                                            #09
                                                                     


Paso 6: En la línea #06 del código remplazar la ruta C:\EXAMPLE\OLD_FOLDER con la ruta anterior y/o perdida identificada en el paso 4.


Paso 7: En la misma línea #06 del código remplazar la ruta C:\EXAMPLE\NEW_FOLDER con la ruta nueva en donde se almacena la información espacial.


Paso 8: Copiar el código modificado en la ventana Python y presionar la tecla Enter o Intro dos veces.


Al cabo de unos segundos veras como comienza a actualizarse la fecha de modificación de los archivos de ArcMap, y al abrirlo notaras la recuperación del enlace en las capas que presentaban este problema.


Notas:


  • Puedes repetir la línea #06 tantas veces como quieras en caso de que necesites modificar y/o reparar mas de una ruta perdida a la vez. Esta copia debe hacerse exactamente debajo de la línea #06 y pasaría a ser la línea #07 de modo que el código contaría con diez líneas, así sucesivamente con cada ruta a reparar.


Espero hayas disfrutado este artículo, próximamente subiré un video explicativo del procedimiento que podrás consultar en este blog. Guarda mi blog entre tus enlaces favoritos, estaré subiendo muchos más trucos de este estilo, recuerda que puedes hacer llegarme tus inquietudes en la página de contacto o deja tu comentario, estaré atento a responder.


BONUS


En futuras ocasiones cuando un nuevo proyecto con sistemas de información geográfica usando ArcMap procura hacer lo siguiente con todos tus archivos MXD para evitar que al mover la carpeta completa del proyecto pierdas las fuentes de información en tus mapas y/o salidas gráficas (Caso D).


1) Abre el archivo MXD

2) Ve a File (a), en el menú desplegable presiona "Map Document Properties..." (b), en la nueva ventana marca la opción "Store relative pathnames to data sources" (c) y presiona aceptar.

Descripción gráfica de como establecer que un documento de ArcGIS guarde las rutas relativas (Ver paso 2)







Entradas que pueden interesarte

Sin comentarios