Yanıtlar:
ArcCatalog'da mxd'ye sağ tıklayın, Veri kaynaklarını ayarla'ya tıklayın ve oradan toplu değişiklik yapın. Ancak, bu araç uyarır:
Not: Bu iletişim kutusu öncelikle yayın için harita belgeleri hazırlamak içindir. Bu iletişim kutusunu kullanarak veri kaynaklarını güncellediğinizde özelleştirmeler (VBA kodu, UI Denetimleri ve özel araç çubukları), grafikler ve tablo penceresi görünüm özellikleri .mxd dosyalarından kaldırılır. Bunları korumak için, bunun yerine ArcMap’teki veri kaynaklarını güncelleyin.
Arcpy.mapping python kütüphanesini de kullanabilirsiniz :
ArcGIS 10 kullanıyorsanız ve Python kullanmak ilginizi çekiyorsa, arcpy.mapping ve Layer nesnesinin yöntemleri ile veri kaynaklarını güncelleme ve düzeltme konusundaki yardımı inceleyin .
Örnek:
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
Katmanlarınızın tümü aynı orijinal bağlantı dosyasını sağlamazsa veya hedef özellik sınıfı adı yeni SDE'de farklıysa, Layer.replaceDataSource
bunun yerine kullanmanız gerekebilir .
Bu, MXD'deki katmanları içeren tüm kırmızı ünlem işaretini kaldıracak ve yeni oluşturulan veri kaynağını gösterecektir. Bir defasında bunu yapabilirsiniz; Kırmızı ünlem işareti üzerine her defasında gidip tıklayıp veri kaynağını tıklayıp ayarlamaya gerek yoktur.
http://arcscripts.esri.com/details.asp?dbid=14922
Bu bağlantı, GDK araçları adı verilen eski bir Arcscript'e aittir, diğer sitelerden elde edilebilir. Program arcmap'ta seçilen katmanlardaki kaynağı (istediğiniz herhangi bir katmanı değiştirebileceğiniz bir araç çubuğu oluşturur. İstediğiniz herhangi bir katman. SDE bağlantıları veya SDE arasında yerel dosya coğrafi veritabanına çalışır (Arccatalog'daki değişiklik kaynağı ile başlayamaz, SDE'deki ad ile başlar) SDE kullanıcısı ve sonra nokta.
Bu çok yararlı, ama belki sadece 9.3 arcgis
.Mxd'yi zaten açtıysanız, @ blah238'in yaptığını yapın, ancak 'CURRENT'
tam yol yerine kullanın . Arama ve değiştirme işleminin tam dize olması gerekmediğini unutmayın:
import arcpy
mxd = arcpy.mapping.MapDocument('CURRENT')
mxd.findAndReplaceWorkspacePaths(r"scratch",
r"project/draft")
O zaman yine de .mxd dosyasını kaydetmeniz ve yeniden açmanız gerekir.
Bir mxd için, varsayılan ESRI araçları yeterli olabilir. Ancak çoklu bağlantıların kopuk linklerle sabitlenmesi bir kabus olabilir. Saniyede sınırsız MXD'leri düzeltmek için UpdateLayerRefs aracımı deneyin: https://github.com/jswagger/UpdateLayerRefs Girdiğiniz MXD'lerin adlarını bir liste olarak verin ["Name1.mxd", "Name2.mxd", "Name3.mxd" "]
Görünüşe göre bu yazı eski, ancak çalışmasını alamıyorum: Kod şu şekilde:
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")