উত্তর:
আপনি এসডিই ফাইল প্লাস বৈশিষ্ট্য বর্গের নামের পথটি ব্যবহার করবেন, এরকম কিছু
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 এর জন্য) একটি শর্টকাট । আপনি ঠিক সেই ফোল্ডারে বা অন্যান্য ফোল্ডারে সঞ্চিত .sde ফাইলগুলিতে পুরো পথ সরবরাহ করতে পারেন।
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
ফলাফল এফসি:
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