পাইথনের মাধ্যমে এসডিইতে কোনও ফিচারলেয়ারে কীভাবে অ্যাক্সেস পাওয়া যায়?


12

আমি কপিরাইট ফিচারস_ম্যানেজমেন্ট স্ক্রিপ্টটি চালানোর জন্য আরকিপি ব্যবহার করার চেষ্টা করছি যাতে আমি এসডিইতে কোনও ফিচারলেয়ার অনুলিপি করতে পারি।

স্তরটি অ্যাক্সেস করতে আমি ইনপুটটির জন্য কী ব্যবহার করব (এবং আউটপুট, যেহেতু আমি স্তরটি এসডিইতে আবার অনুলিপি করব)?

উত্তর:


11

আপনি এসডিই ফাইল প্লাস বৈশিষ্ট্য বর্গের নামের পথটি ব্যবহার করবেন, এরকম কিছু

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


4
এবং পাঠ্যের সামনের 'r' পাইথনের একই জিনিসটি সি # তে '@' এর মতো করে, অর্থাত্ স্ট্রিংটিকে আক্ষরিক হিসাবে বিবেচনা করে তাই '\' নিয়ন্ত্রণের অক্ষর হিসাবে ভুল ধারণা পোষণ করে না?
মাইকেল টড

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


অন্য ভাষাগুলিতে সতর্কতা আপনি সিস্টেমে ব্যবহৃত আপনার সফ্টওয়্যার ভাষা অনুসারে শব্দ দ্বারা "ডেটাবেস সংযোগগুলি" পরিবর্তন করবেন। আমার মধ্যে, (কারণ আমি ফরাসি) সংযোগটি হ'ল: fc = r"Connexions aux bases de données\MySDEDatabaseConnection.sde\SDE.MyFeatureDataset\SDE.MyFeatureClass"
জিওস্টোনমার্টেন

ঠিক আছে, যদি আমার ডাটাবেস 1 থেকে স্তর 1 ব্যবহার করতে হয় এবং এটি 2 টি ডাটাবেসে স্তর 2 এ ক্লিপ করতে হয় তবে দুটি পৃথক ওয়ার্কস্পেস থাকলে আমি কীভাবে এনভিভি ওয়ার্কস্পেস পরিচালনা করব?
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

ফলাফল এফসি:

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.