¿Cambiar el origen de datos para todas las capas en MXD?

25

Tengo un MXD. Se conecta a unas 30 capas en una de nuestras bases de datos SDE. Quiero cambiar la base de datos SDE a la que se conectan.

¿Hay alguna manera de hacer esto sin tener que hacer clic con el botón derecho en cada capa y cambiarla individualmente?

    
pregunta brenth 10.01.2012 - 21:48

7 respuestas

33

Haga clic con el botón derecho en el mxd en ArcCatalog, haga clic en Establecer fuentes de datos y realice un cambio masivo desde allí. Sin embargo, esta herramienta advierte:

  

Nota: este cuadro de diálogo está pensado principalmente para preparar documentos de mapas para su publicación. Las propiedades de personalización (código VBA, controles UI y barras de herramientas personalizadas), gráficos y apariencia de la ventana de la tabla se eliminan de los archivos .mxd cuando actualiza sus fuentes de datos mediante este cuadro de diálogo. Para preservarlos, actualice las fuentes de datos en ArcMap en su lugar.

También puede usar la arcpy.mapping biblioteca de python:

    
respondido por el MapMan 10.01.2012 - 21:57
15

Si está utilizando ArcGIS 10 y está interesado en usar Python, consulte la ayuda en Actualizando y arreglando las fuentes de datos con arcpy.mapping y los métodos de Layer object.

Ejemplo:

import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project_SDE1.mxd")
mxd.findAndReplaceWorkspacePaths(r"Database Connections\Connection to GISSDE1.sde", 
                                r"Database Connections\Connection to GISSDE2.sde")
mxd.saveACopy(r"C:\Project\Project_SDE2.mxd")
del mxd

Si sus capas no generan el mismo archivo de conexión original, o el nombre de la clase de entidad de destino es diferente en el nuevo SDE, es posible que deba usar Layer.replaceDataSource en su lugar.

    
respondido por el blah238 10.01.2012 - 22:06
3
  1. Haga una conexión de origen de datos en ArcCatalog.
  2. Abra el MXD y expanda la capa y haga clic en el signo de exclamación rojo en cualquier capa. Esto abrirá una ventana emergente que contiene el origen de datos con conexión a la base de datos.
  3. Seleccione la conexión de la base de datos que ha realizado, haga doble clic en ella e ingrese a la capa en la que ha hecho clic, seleccione esa capa y presione Aceptar, Abrir o Agregar.

Esto eliminará todos los signos de exclamación rojos que contienen capas en el MXD y apuntará al nuevo origen de datos creado. De una vez puedes hacer esto; no hay necesidad de ir y hacer clic cada vez en el signo de exclamación rojo y hacer clic y configurar la fuente de datos.

    
respondido por el Inderjeet singh bhambra 20.12.2012 - 07:12
1

enlace

El enlace es a un antiguo Arcscript llamado GDK tools, que puede obtenerse en otros sitios. El Programa crea una barra de herramientas en arcmap donde puede cambiar la fuente en las capas seleccionadas (cualquier capa que desee. Esto funciona entre las conexiones SDE o SDE a la geodatabase de archivos local (que la fuente de cambios en Arccatalog no puede manejar, debido a que el nombre en SDE comienza con el usuario SDE y luego el punto.

esto es muy útil, pero tal vez solo en arcgis 9.3

    
respondido por el jonaktiv 14.02.2014 - 10:05
1

Para un mxd, las herramientas ESRI predeterminadas pueden ser suficientes. Pero arreglar múltiples mxds con enlaces rotos puede ser una pesadilla. Pruebe mi herramienta UpdateLayerRefs para arreglar MXD ilimitados en segundos: enlace Simplemente proporcione los nombres de su entrada MXD como una lista ["Name1.mxd", "Name2.mxd", "Name3.mxd"]

    
respondido por el Jeremy Swagger 28.08.2017 - 19:08
0

Si ya tienes el .mxd abierto, haz lo que @ blah238 hizo, pero usa 'CURRENT' en lugar de la ruta completa. No olvide que la búsqueda y el reemplazo no tienen que ser la cadena completa:

import arcpy
mxd = arcpy.mapping.MapDocument('CURRENT')
mxd.findAndReplaceWorkspacePaths(r"scratch", 
                                r"project/draft")

Luego, tendrás que guardar y volver a abrir el archivo .mxd de todos modos.

    
respondido por el jazzabeanie 30.05.2016 - 08:50
0

Parece que esta publicación es antigua, pero no puedo hacer que esto funcione: el código es el siguiente:

import arcpy, glob

#specify MXD location to change source data
mxd = arcpy.mapping.MapDocument(r"C:\Users\jrender\Documents\LandbaseEditing PreProd Pub Check.mxd")
workspaceCurrent = r"Database Connections\Connection to PP_GISLand_Landbase.sde"
workspaceTarget = r"Database Connections\Connection to PP_Publication_GISLand.sde" 

mxd.findAndReplaceWorkspacePaths(workspaceCurrent, workspaceTarget)

#save a new copy of MXD
mxd.saveACopy(r"C:\Users\jrender\Documents\LandbaseEditing PreProd Pub Check Repathed.mxd")
    
respondido por el EgmontDeVos 11.10.2018 - 18:47

Lea otras preguntas en las etiquetas