Respostas:
Clique com o botão direito do mouse no mxd no ArcCatalog, clique em Definir fontes de dados e faça alterações em massa a partir daí. No entanto, esta ferramenta alerta:
Nota: esse diálogo é destinado principalmente à preparação de documentos de mapas para publicação. As personalizações (código VBA, controles da interface do usuário e barras de ferramentas personalizadas), gráficos e propriedades de aparência da janela da tabela são removidas dos arquivos .mxd quando você atualiza suas fontes de dados usando esse diálogo. Para preservá-las, atualize as fontes de dados no ArcMap.
Você também pode usar a biblioteca python arcpy.mapping :
Se você estiver usando o ArcGIS 10 e estiver interessado em usar o Python, consulte a ajuda em Atualizando e corrigindo fontes de dados com o arcpy.mapping e os métodos do objeto Layer .
Exemplo:
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 todas as suas camadas não tiverem o mesmo arquivo de conexão original, ou o nome da classe do recurso de destino for diferente no novo SDE, talvez seja necessário usá-lo Layer.replaceDataSource
.
Isso removerá todo o ponto de exclamação vermelho que contém camadas no MXD e apontará para a nova fonte de dados criada. De uma só vez, você pode fazer isso; não é necessário ir e clicar sempre no ponto de exclamação vermelho e clicar e definir a fonte de dados.
http://arcscripts.esri.com/details.asp?dbid=14922
O link é para um antigo Arcscript chamado GDK tools, que pode ser obtido em outros sites. O Programa cria uma barra de ferramentas no arcmap, na qual você pode alterar a fonte nas camadas selecionadas (qualquer camada que desejar. Isso funciona entre conexões SDE ou SDE no geodatabase de arquivo local (que a fonte de mudança no Arccatalog não pode manipular, porque o nome no SDE começa com o usuário SDE e depois pontue.
isso é muito útil, mas talvez apenas no arcgis 9.3
Se você já tem o .mxd aberto, faça o que @ blah238 fez, mas use em 'CURRENT'
vez do caminho completo. Não esqueça que a pesquisa e substituição não precisam ser a sequência completa:
import arcpy
mxd = arcpy.mapping.MapDocument('CURRENT')
mxd.findAndReplaceWorkspacePaths(r"scratch",
r"project/draft")
Em seguida, você precisará salvar e reabrir o arquivo .mxd de qualquer maneira.
Para um mxd, as ferramentas ESRI padrão podem ser suficientes. Mas consertar vários mxds com links quebrados pode ser um pesadelo. Experimente minha ferramenta UpdateLayerRefs para corrigir MXDs ilimitados em segundos: https://github.com/jswagger/UpdateLayerRefs Basta fornecer os nomes dos MXDs de entrada como uma lista ["Name1.mxd", "Name2.mxd", "Name3.mxd "]
Parece que este post é antigo, mas não consigo fazer isso funcionar: O código é o seguinte:
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")