जवाबों:
ArcCatalog में mxd पर राइट क्लिक करें, सेट डेटा स्रोतों पर क्लिक करें, और वहां से थोक परिवर्तन करें। हालाँकि, यह उपकरण चेतावनी देता है:
नोट: यह संवाद मुख्य रूप से प्रकाशन के लिए मानचित्र दस्तावेज तैयार करने के लिए है। अनुकूलन (VBA कोड, UI नियंत्रण और कस्टम टूलबार), ग्राफ़, और टेबल विंडो उपस्थिति गुण .mxd फ़ाइलों से हटा दिए जाते हैं जब आप इस संवाद का उपयोग करके अपने डेटा स्रोतों को अपडेट करते हैं। इन्हें संरक्षित करने के लिए, इसके बजाय आर्कपॉइंट में डेटा स्रोतों को अपडेट करें।
तुम भी python पुस्तकालय arcpy.mapping उपयोग कर सकते हैं :
यदि आप आर्कगिस 10 का उपयोग कर रहे हैं और पाइथन का उपयोग करने में रुचि रखते हैं, तो आर्कियोलॉपरिंग और लेयर ऑब्जेक्ट के तरीकों के साथ डेटा स्रोतों को अपडेट करने और ठीक करने में मदद देखें ।
उदाहरण:
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
यदि आपकी परतें एक ही मूल कनेक्शन फ़ाइल का स्रोत नहीं बनाती हैं, या नए एसडीई पर गंतव्य सुविधा वर्ग का नाम अलग है, तो आपको Layer.replaceDataSource
इसके बजाय उपयोग करने की आवश्यकता हो सकती है ।
यह MXD में परतों वाले सभी लाल विस्मयादिबोधक चिह्न को हटा देगा और नए बनाए गए डेटा स्रोत को इंगित करेगा। एक बार में आप ऐसा कर सकते हैं; लाल विस्मयादिबोधक चिह्न पर हर बार जाने और क्लिक करने और डेटा स्रोत को क्लिक करने और सेट करने की आवश्यकता नहीं है।
http://arcscripts.esri.com/details.asp?dbid=14922
लिंक जीडीके टूल्स नामक एक पुराने आर्कस्क्रिप्ट के लिए है, जो अन्य साइटों पर प्राप्त किया जा सकता है। कार्यक्रम arcmap में एक टूलबार बनाता है जहाँ आप चयनित परतों पर स्रोत को बदल सकते हैं (किसी भी परत को आप चाहें। यह SDE कनेक्शन या SDE के बीच स्थानीय फ़ाइल जियोडेटाबेस के बीच काम करता है (Arccatalog में wich परिवर्तन स्रोत संभाल नहीं सकता है, क्योंकि SDE में नाम के साथ शुरू होता है) एसडीई उपयोगकर्ता और फिर डॉट।
यह बहुत मददगार है, लेकिन शायद केवल आर्कगिस 9.3 में
यदि आपको .mxd पहले से खुला मिला है, तो वही करें जो @ blah238 ने किया था, लेकिन 'CURRENT'
पूर्ण पथ के बजाय उपयोग करें । यह मत भूलो कि खोज और प्रतिस्थापित करने के लिए पूर्ण स्ट्रिंग नहीं है:
import arcpy
mxd = arcpy.mapping.MapDocument('CURRENT')
mxd.findAndReplaceWorkspacePaths(r"scratch",
r"project/draft")
फिर आपको वैसे भी .mxd फ़ाइल को सहेजना और फिर से खोलना होगा।
एक mxd के लिए, डिफ़ॉल्ट ESRI उपकरण पर्याप्त हो सकते हैं। लेकिन टूटे हुए लिंक के साथ कई mxds को ठीक करना एक बुरा सपना हो सकता है। सेकंड में असीमित MXDs को ठीक करने के लिए मेरा UpdateLayerRefs टूल आज़माएं: https://github.com/jswagger/UpdateLayerRefs अपने इनपुट MXD के नाम सूची के रूप में प्रदान करें ["Name1.mxd," Name2.mxd "," Name3.mxdx "]
लगता है कि यह पोस्ट पुरानी है, लेकिन मुझे यह काम करने के लिए नहीं मिल सकता है: कोड इस प्रकार है:
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")