Відповіді:
Клацніть правою кнопкою миші на mxd в ArcCatalog, клацніть на Встановити джерела даних та масово змінити звідти. Однак цей інструмент попереджає:
Примітка: це діалогове вікно призначене насамперед для підготовки картографічних документів до публікації. Налаштування (код VBA, елементи керування користувальницьким інтерфейсом та панелі інструментів), графіки та властивості зовнішнього вигляду вікна таблиці видаляються з файлів .mxd, коли ви оновлюєте їх джерела даних за допомогою цього діалогового вікна. Щоб зберегти їх, оновіть джерела даних замість ArcMap.
Ви також можете використати бібліотеку arcpy.mapping python:
Якщо ви використовуєте ArcGIS 10 і зацікавлені у використанні Python, ознайомтеся з довідкою щодо оновлення та виправлення джерел даних за допомогою arcpy.mapping та методів об’єкта шару .
Приклад:
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
Якщо ваші шари не всі джерела одного і того ж оригінального файлу з'єднання або назва нового класу функцій призначення відрізняється в новому SDE, можливо, вам доведеться використовувати Layer.replaceDataSource
замість цього.
Це видалить увесь червоний знак оклику, що містить шари в MXD, і вкаже на нове створене джерело даних. За один раз ви можете це зробити; не потрібно щоразу натискати червоний знак оклику та клацати та встановлювати джерело даних.
http://arcscripts.esri.com/details.asp?dbid=14922
Посилання на старий Arcscript під назвою інструменти GDK, які можна отримати на інших сайтах. Програма створює в arcmap панель інструментів, де ви можете змінити джерело на вибраних шарах (будь-який шар, який ви хочете. Це працює між з'єднаннями SDE або SDE на локальну базу даних геоданих (з якою джерело зміни в Arccatalog не може обробити, оскільки ім'я в SDE починається з користувач SDE, а потім крапка.
це дуже корисно, але, можливо, лише в аркг. 9.3
Якщо ви вже відкрили .mxd, зробіть те, що зробив @ blah238, але використовуйте 'CURRENT'
замість повного шляху. Не забувайте, що пошук і заміна не повинні бути повними рядками:
import arcpy
mxd = arcpy.mapping.MapDocument('CURRENT')
mxd.findAndReplaceWorkspacePaths(r"scratch",
r"project/draft")
Тоді вам доведеться зберегти і знову відкрити .mxd файл.
Для одного mxd може бути достатньо інструментів ESRI за замовчуванням. Але виправити декілька mxds з розірваними посиланнями може бути кошмаром. Спробуйте мій інструмент UpdateLayerRefs, щоб виправити необмежену кількість MXD за лічені секунди: https://github.com/jswagger/UpdateLayerRefs Просто введіть імена ваших вхідних MXD як список ["Name1.mxd", "Name2.mxd", "Name3.mxd "]
Здається, що ця публікація стара, але я не можу змусити її працювати: код наступний:
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")