Risposte:
Fare clic con il tasto destro del mouse su mxd in ArcCatalog, fare clic su Imposta origini dati e apportare modifiche in blocco da lì. Tuttavia, questo strumento avverte:
Nota: questa finestra di dialogo è destinata principalmente alla preparazione di documenti cartografici per la pubblicazione. Le personalizzazioni (codice VBA, controlli dell'interfaccia utente e barre degli strumenti personalizzate), i grafici e le proprietà dell'aspetto della finestra della tabella vengono rimosse dai file .mxd quando si aggiornano le loro origini dati utilizzando questa finestra di dialogo. Per preservarli, aggiornare invece le origini dati in ArcMap.
Puoi anche usare la libreria python arcpy.mapping :
Se si utilizza ArcGIS 10 e si è interessati all'utilizzo di Python, consultare la guida su Aggiornamento e correzione delle origini dati con arcpy.mapping e i metodi dell'oggetto Layer .
Esempio:
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
Se i layer non generano tutti lo stesso file di connessione originale o il nome della classe di caratteristiche di destinazione è diverso sul nuovo SDE, potrebbe essere necessario utilizzare Layer.replaceDataSource
invece.
Ciò rimuoverà tutti i punti esclamativi rossi contenenti i livelli nell'MXD e punterà alla nuova origine dati creata. In una sola volta puoi farlo; non c'è bisogno di andare e fare clic ogni volta sul punto esclamativo rosso e fare clic e impostare l'origine dati.
http://arcscripts.esri.com/details.asp?dbid=14922
Il link è a un vecchio arcscript chiamato strumenti GDK, che può essere ottenuto su altri siti. Il Programma crea una barra degli strumenti in arcmap in cui è possibile modificare l'origine sui livelli selezionati (qualsiasi livello desiderato. Funziona tra connessioni SDE o SDE in geodatabase di file locale (che non è in grado di gestire l'origine in Arccatalog, poiché il nome in SDE inizia con l'utente SDE e quindi punto.
questo è molto utile, ma forse solo in arcgis 9.3
Se hai già aperto il .mxd, fai quello che ha fatto @ blah238, ma usa 'CURRENT'
invece il percorso completo. Non dimenticare che la ricerca e la sostituzione non devono essere la stringa completa:
import arcpy
mxd = arcpy.mapping.MapDocument('CURRENT')
mxd.findAndReplaceWorkspacePaths(r"scratch",
r"project/draft")
Quindi dovrai salvare e riaprire il file .mxd comunque.
Per un mxd, possono essere sufficienti strumenti ESRI predefiniti. Ma riparare più mxds con collegamenti interrotti può essere un incubo. Prova il mio strumento UpdateLayerRefs per correggere un numero illimitato di MXD in pochi secondi: https://github.com/jswagger/UpdateLayerRefs Fornisci semplicemente i nomi dei tuoi MXD di input come elenco ["Name1.mxd", "Name2.mxd", "Name3.mxd "]
Sembra che questo post sia vecchio, ma non riesco a farlo funzionare: il codice è il seguente:
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")