27 votos

¿Cambiar la fuente de datos para todas las capas en MXD?

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 forma de hacerlo sin tener que hacer clic con el botón derecho en cada capa y cambiarla individualmente?

38voto

Karl Voigtland Puntos 326

Haga clic con el botón derecho en el mxd en ArcCatalog, haga clic en Establecer fuentes de datos y cambie en bloque 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 personalizaciones (código VBA, controles de interfaz de usuario y barras de herramientas personalizadas), los gráficos y las propiedades de apariencia de las ventanas de las tablas se eliminan de los archivos .mxd cuando se actualizan sus fuentes de datos mediante este cuadro de diálogo. Para conservarlas, actualice las fuentes de datos en ArcMap.

También puede utilizar el arcpy.mapping biblioteca python:

0 votos

Esto parece no funcionar en 10.1. La fuente de datos se cambia, pero (al menos en el caso de una conexión SDE) el enlace se cambia a una "conexión de base de datos", es decir, la capa ya no está siendo señalada, lo que rompe el enlace.

18voto

auramo Puntos 161

Si utiliza ArcGIS 10 y está interesado en utilizar Python, consulte la ayuda en Actualización y fijación de fuentes de datos con arcpy.mapping y los métodos del Capa objeto.

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 proceden todas del mismo archivo de conexión original, o el nombre de la clase de características de destino es diferente en el nuevo SDE, es posible que tenga que utilizar Layer.replaceDataSource en su lugar.

0 votos

Esto funciona perfectamente, gracias. Una cosa a añadir es "Conexiones de la base de datos \Connection a GISSDE1.sde" puede sustituirse por una ubicación .gdb también.

0 votos

¿Cómo podría usar esto de cambiar la fuente de datos del MISMO SDE pero de la versión 1 a la 2?

3voto

  1. Realice una conexión de fuente de datos en ArcCatalog.
  2. Abra el MXD y expanda la capa y haga clic en el signo de exclamación rojo de cualquier capa. Esto abrirá una ventana emergente que contiene la fuente de datos con conexión a la base de datos.
  3. Selecciona la conexión a la base de datos que habías hecho, haz doble clic sobre ella y ve dentro de ella a la capa que has pulsado y selecciona esa capa y pulsa OK, Abrir o Añadir.

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 sola vez puede hacer esto; no es necesario ir y hacer clic cada vez en el signo de exclamación rojo y hacer clic y establecer la fuente de datos.

0 votos

Es muy útil. Por favor, vaya throug esto una vez

5 votos

Esto sólo funcionará si las conexiones están rotas, de lo contrario una de las otras respuestas son más apropiadas.

1voto

Love Puntos 170

http://arcscripts.esri.com/details.asp?dbid=14922

El enlace es a un viejo Arcscript llamado GDK tools, que se puede obtener en otros sitios. El programa crea una barra de herramientas en arcmap donde se puede cambiar la fuente en las capas seleccionadas (cualquier capa que desee. esto funciona entre las conexiones de SDE o SDE a la base de datos geográfica de archivos locales (wich cambiar la fuente 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 sólo en arcgis 9.3

1 votos

Aunque este enlace puede responder a la pregunta, es mejor incluir aquí las partes esenciales de la respuesta y proporcionar el enlace como referencia. Las respuestas con enlace pueden dejar de ser válidas si la página enlazada cambia.

0 votos

¡He modificado!

1voto

user28973 Puntos 1

Si ya tienes el .mxd abierto, haz lo que hizo @blah238, pero utiliza 'CURRENT' en lugar de la ruta completa. No olvides 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")

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X