जवाबों:
आप SDE फ़ाइल और फीचर वर्ग नाम के साथ पथ का उपयोग करेंगे, इसलिए कुछ इस तरह
CopyFeatures_management(r'c:\connections\my.sde\fc1', r'c:\connections\my.sde\newfc')
दो तरीके, जिनके बारे में मैं सोच सकता हूं, दोनों में आर्ककॉस्टिक्स में पहले से ही एक डेटाबेस कनेक्शन शामिल है। यदि डेटाबेस कनेक्शन फ़ाइल पहले से मौजूद नहीं है, तो आप इसे बनाने के लिए अपनी स्क्रिप्ट में CreateArcSDEConnectionFile_management का उपयोग कर सकते हैं ।
1) डेटाबेस कनेक्शन के लिए वर्तमान कार्यक्षेत्र सेट करें, और फिर नाम से सुविधा वर्ग देखें।
arcpy.env.workspace = r"Database Connections\MySDEDatabaseConnection.sde"
fc = "SDE.myFeatureClass"
यदि फ़ीचर वर्ग एक फ़ीचर डेटासेट में है, तो फ़ीचर डेटासेट नाम पर कार्यक्षेत्र में इस तरह से व्यवहार करें:
arcpy.env.workspace = r"Database Connections\MySDEDatabaseConnection.sde\SDE.MyFeatureDataset"
2) डेटाबेस कनेक्शन सहित सुविधा वर्ग के लिए पूर्ण पथ की आपूर्ति:
fc = r"Database Connections\MySDEDatabaseConnection.sde\SDE.MyFeatureDataset\SDE.MyFeatureClass"
कुछ उपकरणों को पहली विधि की आवश्यकता होती है, अन्य को दूसरे की आवश्यकता होती है।
इसके अलावा "डेटाबेस कनेक्शंस" वास्तव में %APPDATA%\ESRI\Desktop10.0\ArcCatalog
विंडोज एक्सपी पर आर्कगिस 10 के लिए एक शॉर्टकट है । आप बस के रूप में आसानी से उस फ़ोल्डर या अन्य फ़ोल्डरों में संग्रहीत फ़ाइलों के लिए पूरा पथ की आपूर्ति कर सकते हैं।
fc = r"Connexions aux bases de données\MySDEDatabaseConnection.sde\SDE.MyFeatureDataset\SDE.MyFeatureClass"
मेरी पिछली टिप्पणी के अनुसार मेरे पास डेटासेट और फीचरक्लास को सुरक्षित करने के लिए एक अन्य प्रस्ताव है
# catalog local and arcgis version
arcgis_version = arcpy.GetInstallInfo()['Version'].split(
".") # liste v_majeur,v_mineur
catalog_path = "{}\\ESRI\\Desktop{}\\ArcCatalog".format(
os.getenv('APPDATA'), ".".join(
arcpy.GetInstallInfo()['Version'].split(".")[:2])) # Work with Arcgis >= 10.3
conn = {}
conn["out_folder_path"] = catalog_path
conn["out_name"] = "server_x_db_user.sde"
conn["database_platform"] = "SQL_SERVER"
conn["instance"] = "server_x"
conn["account_authentication"] = "DATABASE_AUTH"
conn["database"] = "bdd"
conn["username"] = "db_user"
conn["password"] = "MydbPasS@"
conn["save_user_pass"] = "SAVE_USERNAME"
arcpy.CreateDatabaseConnection_management(**conn)
#result
# >>> <Result 'C:\\Users\\me\\AppData\\Roaming\\ESRI\\Desktop10.4\\ArcCatalog\\server_x_db_user.sde'>
desc = arcpy.Describe(os.path.join(conn["out_folder_path"],conn["out_name"])
# you can also pass by arcpy.Result object
arcpy.env.workspace = os.path.join(desc.path, desc.name)
#safe env for arcCatalog sde folder
print arcpy.env.workspace
# >>> u'Connexions aux bases de donn\xe9es\\server_x_db_user.sde'
for ds in arcpy.ListDatasets(feature_type='feature') + ['']:
for fc in arcpy.ListFeatureClasses(feature_dataset=ds):
print fc
# Remove empty dataset to get valid path
path = os.path.join(
*[v for v in [arcpy.env.workspace, ds, fc] if v])
print path
परिणाम FC:
bdd.user_db.bndy_lv_municipal_sector
bdd.user_db.bndy_admin_lv_municipal
bdd.user_db.water_pg
bdd.user_db.water_pl
पथ के साथ परिणाम का उपयोग:
Connexions aux bases de données\server_x_db_user.sde\bdd.user_db.bndy_lv_municipal_sector
Connexions aux bases de données\server_x_db_user.sde\bdd.user_db.bndy_admin_lv_municipal
Connexions aux bases de données\server_x_db_user.sde\bdd.user_db.water_pg
Connexions aux bases de données\server_x_db_user.sde\bdd.user_db.water_pl