पायथन के माध्यम से एसडीई में एक सुविधा की पहुंच कैसे होती है?


12

मैं CopyFeatures_management स्क्रिप्ट को चलाने के लिए Arcpy का उपयोग करने का प्रयास कर रहा हूं ताकि मैं SDE में एक फीचरलेयर की प्रतिलिपि बना सकूं।

मैं इनपुट (और आउटपुट के लिए, उस बात के लिए) का उपयोग क्या करूं, क्योंकि मैं परत तक पहुंचने के लिए परत को एसडीई पर कॉपी कर रहा हूं)?

जवाबों:


11

आप SDE फ़ाइल और फीचर वर्ग नाम के साथ पथ का उपयोग करेंगे, इसलिए कुछ इस तरह

CopyFeatures_management(r'c:\connections\my.sde\fc1', r'c:\connections\my.sde\newfc')


4
और पाठ के सामने 'r' पायथन में '@' को C # के समान करता है, अर्थात स्ट्रिंग को शाब्दिक मानता है इसलिए '\' को नियंत्रण वर्णों के रूप में गलत नहीं माना जाता है?
माइकल टॉड

2
सही बात। नियंत्रण पात्रों के बिना शाब्दिक के रूप में निशान स्ट्रिंग।
जेसन शहीर

16

दो तरीके, जिनके बारे में मैं सोच सकता हूं, दोनों में आर्ककॉस्टिक्स में पहले से ही एक डेटाबेस कनेक्शन शामिल है। यदि डेटाबेस कनेक्शन फ़ाइल पहले से मौजूद नहीं है, तो आप इसे बनाने के लिए अपनी स्क्रिप्ट में 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"
जियोस्टोनमार्टन

ठीक है, क्या होगा अगर मुझे डेटाबेस 1 से परत 1 का उपयोग करने की आवश्यकता है और इसे 2 डेटाबेस में 2 परतें करने के लिए क्लिप करें। अगर दो अलग-अलग कार्यस्थान हैं तो मैं env.workspace को कैसे संभालूं?
NULL.Dude

1

मेरी पिछली टिप्पणी के अनुसार मेरे पास डेटासेट और फीचरक्लास को सुरक्षित करने के लिए एक अन्य प्रस्ताव है

# 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.