Respuestas:
Haga clic derecho en el mxd en ArcCatalog, haga clic en Establecer orígenes de datos y haga un cambio masivo desde allí. Sin embargo, esta herramienta advierte:
Nota: este diálogo está destinado principalmente a preparar documentos de mapa para su publicación. Las personalizaciones (código VBA, controles de IU y barras de herramientas personalizadas), gráficos y propiedades de 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.
También puede usar la biblioteca de python arcpy.mapping :
Si está utilizando ArcGIS 10 y está interesado en utilizar Python, consulte la ayuda sobre Actualización y reparación de orígenes de datos con arcpy.mapping y los métodos del objeto Layer .
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 todas sus capas no obtienen 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 usarlo Layer.replaceDataSource
.
Esto eliminará todos los signos de exclamación rojos que contienen capas en el MXD y apuntará a la nueva fuente de datos creada. De una vez puedes hacer esto; no es necesario ir y hacer clic cada vez en el signo de exclamación rojo y hacer clic y configurar la fuente de datos.
http://arcscripts.esri.com/details.asp?dbid=14922
El enlace es a un antiguo Arcscript llamado herramientas GDK, que se puede obtener 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 conexiones SDE o SDE a la geodatabase de archivos local (que la fuente de cambio en Arccatalog no puede manejar, debido a que el nombre en SDE comienza con el usuario SDE y luego punto.
esto es muy útil, pero tal vez solo en arcgis 9.3
Si ya tiene el .mxd abierto, haga lo que hizo @ blah238, pero use en 'CURRENT'
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á que guardar y volver a abrir el archivo .mxd de todos modos.
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 reparar MXD ilimitados en segundos: https://github.com/jswagger/UpdateLayerRefs Solo proporcione los nombres de sus MXD de entrada como una lista ["Name1.mxd", "Name2.mxd", "Name3.mxd "]
Parece que esta publicación es antigua, pero no puedo hacer que 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")