Odpowiedzi:
Kliknij prawym przyciskiem myszy mxd w ArcCatalog, kliknij Ustaw źródła danych i stamtąd zmień zbiorczo. To narzędzie ostrzega jednak:
Uwaga: to okno dialogowe jest przeznaczone przede wszystkim do przygotowania dokumentów map do publikacji. Dostosowania (kod VBA, elementy sterujące interfejsu użytkownika i niestandardowe paski narzędzi), wykresy i właściwości wyglądu okna tabeli są usuwane z plików .mxd podczas aktualizacji ich źródeł danych za pomocą tego okna dialogowego. Aby je zachować, zaktualizuj źródła danych w ArcMap.
Możesz także użyć biblioteki python arcpy.mapping :
Jeśli korzystasz z ArcGIS 10 i interesuje Cię korzystanie z Pythona, zapoznaj się z pomocą dotyczącą aktualizacji i naprawy źródeł danych za pomocą arcpy.mapping oraz metod obiektu Layer .
Przykład:
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
Jeśli wszystkie warstwy nie pochodzą z tego samego oryginalnego pliku połączenia lub nazwa docelowej klasy obiektów jest inna w nowym SDE, może być konieczne użycie Layer.replaceDataSource
zamiast tego.
Spowoduje to usunięcie wszystkich czerwonych wykrzykników zawierających warstwy z MXD i wskaże nowo utworzone źródło danych. Za jednym razem możesz to zrobić; nie trzeba za każdym razem klikać czerwonego wykrzyknika oraz klikania i ustawiania źródła danych.
http://arcscripts.esri.com/details.asp?dbid=14922
Link prowadzi do starego narzędzia Arcscript o nazwie GDK, które można uzyskać na innych stronach. Program tworzy pasek narzędzi w arcmap, w którym możesz zmienić źródło na wybranych warstwach (dowolna warstwa, którą chcesz. Działa to między połączeniami SDE lub SDE na lokalną geobazę pliku (której zmiana źródła w Arccatalogu nie jest możliwa, ponieważ nazwa w SDE zaczyna się od użytkownik SDE, a następnie kropka.
jest to bardzo pomocne, ale może tylko w Arcgis 9.3
Jeśli masz już plik .mxd, zrób to, co zrobił @ blah238, ale użyj 'CURRENT'
zamiast pełnej ścieżki. Nie zapominaj, że wyszukiwanie i zamienianie nie musi być pełnym ciągiem znaków:
import arcpy
mxd = arcpy.mapping.MapDocument('CURRENT')
mxd.findAndReplaceWorkspacePaths(r"scratch",
r"project/draft")
Następnie musisz zapisać i ponownie otworzyć plik .mxd.
W przypadku jednego MXD wystarczą domyślne narzędzia ESRI. Ale naprawianie wielu plików MDX z uszkodzonymi linkami może być koszmarem. Wypróbuj moje narzędzie UpdateLayerRefs, aby naprawić nieograniczoną liczbę MXD w kilka sekund: https://github.com/jswagger/UpdateLayerRefs Wystarczy podać nazwy wejściowych MXD jako listę [„Name1.mxd”, „Name2.mxd”, „Name3.mxd „]
Wygląda na to, że ten post jest stary, ale nie mogę go uruchomić: kod wygląda następująco:
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")