আরআকপি ব্যবহার করে ফোল্ডারে একাধিক জিওডাটাবেজে ফিচার ক্লাস তালিকাভুক্ত করছেন?


11

আমার এতে একটি জিওডাটাবেস সহ একটি ফোল্ডার রয়েছে। জিওডাটাবেসগুলির মধ্যে বৈশিষ্ট্যযুক্ত ক্লাস রয়েছে। আমি পাইথন স্ক্রিপ্ট ব্যবহার করে এই জিওডাটাবেজে ফিচার ক্লাসগুলির একটি তালিকা পেতে চাই। আমি কেবলমাত্র জিওডাটাবেসগুলির তালিকা তৈরি করতে পেরেছি। জিওডাটাবেসগুলিতে ফিচার ক্লাস তালিকাভুক্ত করার বিষয়ে কারও কি পরামর্শ আছে?

আমার স্ক্রিপ্টের মুদ্রণ আইটেম লাইনটি আমাকে নিম্নলিখিত ফলাফল দেয়:

C:\output\data.gdb 
C:\output\otherdata.gdb
C:\output\somethingelse.gdb

আমি উপরের জিওডাটাবেসগুলিতে ফিচার ক্লাসগুলির একটি তালিকা তৈরি করতে চাই। নীচে এখনও পর্যন্ত আমার স্ক্রিপ্ট আছে।

    import arcpy, os, sys
    from arcpy import env

    arcpy.env.workspace = "D:\\output"
    inWorkspace = arcpy.env.workspace

    workspaces = arcpy.ListWorkspaces("*", "FileGDB")
    for item in workspaces:
         print item #This part gives me the print statements I shared above
    # fcList = arcpy.ListFeatureClasses() #I haven't figured this part out
    #I want to list the feature classes in the geodatabases

1
জিওডাটাবেসগুলির মধ্যে কি ডেটাসেটগুলি রয়েছে?
blah238

নাহ, কোনও বৈশিষ্ট্য ডেটাসেট নেই।
প্যাটি জুলা

উত্তর:


14

আপনি যে কৌশলটি মিস করছেন তা প্রতিটি জিডিবিকে বিষয়বস্তু তালিকাভুক্ত করার আগে সক্রিয় কর্মক্ষেত্র তৈরি করছে:

for item in workspaces:
    print item
    env.workspace = item
    fcs = arcpy.ListFeatureClasses()
    for fc in fcs:
        print '\t', fc

এছাড়াও নোট করুন যে এটি বৈশিষ্ট্য ডেটাসেটের অভ্যন্তরে কোনও বৈশিষ্ট্য শ্রেণি মিস করবে, বৈশিষ্ট্যটি ডেটাসেটের মধ্যে ফাইল জিওডাটাবেসে সমস্ত বৈশিষ্ট্য বর্গ তালিকাভুক্ত করবেন? যে সমাধান করতে।

আরও সাধারণভাবে, আপনি যদি ব্যবহার করেন তবে আপনাকে rসবকিছু দ্বিগুণ করতে হবে না (উইন্ডোজ এক্সপ্লোরার অ্যাড্রেস বার থেকে সহজ অনুলিপি এবং পেস্ট করা যায়): যেমনr'D:\output'


1
শীতল, যে কাজ! আপনি যা ভাগ করেছেন তা থেকে আমি কয়েকটি অন্যান্য সরঞ্জাম নিয়েছি - আমি জানি না যে আমি এনভ.ও. ওয়ার্কস্পেসের মতো ব্যবহার করতে পারি। ধন্যবাদ!
প্যাটি জুলা

1
@ প্যাটিজুলা আপনাকে প্যাটি স্বাগতম! 'আইটেম' এর মতো জেনেরিক শব্দগুলি এড়িয়ে চলা আরও ভাল কারণ এটি যে কোনও কিছুর ক্ষেত্রে প্রযোজ্য হতে পারে এবং বৃহত্তর স্ক্রিপ্টগুলিতে বিভ্রান্ত হয় gets এটা মন singular-> বহুবচন পার্থক্য রাখা সহজ - যদিও আপনি চিহ্ন জন্য ঘড়ি নিজেকে প্রশিক্ষিত দরকার গুলি । আমি পরবর্তীগুলির সাহায্যে সংক্ষিপ্ত বিবরণ ব্যবহার করি। উদাহরণস্বরূপ for wspace in workspaces:এবং for fc in featureclasses:
ম্যাট উইলকি

8

এই স্ক্রিপ্টটি কোনও বিদ্যমান বৈশিষ্ট্যযুক্ত ডেটাসেটগুলি মোকাবেলা করবে (কমপক্ষে তত্ত্বে - আমি এটি পরীক্ষা করে দেখিনি)। একই সাধারণ ধারণা, যদিও বৈশিষ্ট্যযুক্ত ডেটাসেটগুলি রয়েছে, আপনাকে বৈশিষ্ট্যগুলির মধ্যে তালিকাভুক্ত করার আগে আপনাকে সেই ডেটাসেটে আপনার কার্যকারী ডিরেক্টরিটি সেট করতে হবে।

import arcpy

dir = r'D:\output'
arcpy.env.workspace = dir

gdbList = arcpy.ListWorkspaces('*','FileGDB')

for gdb in gdbList:
    arcpy.env.workspace = gdb               #--change working directory to each GDB in list
    datasetList = arcpy.ListDatasets('*','Feature')     #--make a list of all (if any) feature datasets that exist in current GDB
    fcList = arcpy.ListFeatureClasses()         #--make a list of all feature in current GDB (root)
    for fc in fcList:
        print arcpy.env.workspace,fc            #--print directory,fc name
    for dataset in datasetList:
        arcpy.env.workspace = dataset   #--change working directory to each dataset (if any) in list
        fcList = arcpy.ListFeatureClasses()     #--make a list of all feature in current GDB (current dataset)
        for fc in fcList:
            print arcpy.env.workspace,fc        #--print directory,fc name
        arcpy.env.workspace = gdb

1
মন্তব্য এবং সমন্বিত এফডি জন্য +1। আমি ব্যক্তিগতভাবে 'টেম্প' পরিবর্তনশীল নাম হিসাবে ব্যবহার করব না কারণ এটি "ফেলে দেওয়া" এবং "মুছতে মুক্ত" এর সংযুক্ত অর্থ। পরিবর্তনশীলটি বাতিলযোগ্য, তবে এটির বিষয়বস্তু, ডাটাবেসগুলি সম্ভবত না। যে কোনও ইভেন্টে, এই ক্ষেত্রে এটি অপ্রয়োজনীয়, কেবলমাত্র arcpy.env.workspace = gdbলিস্ট ওয়ার্কস্পেসগুলি পুরো পথ ফেরায় হিসাবে ব্যবহার করুন । ;-)
ম্যাট উইলকি

আপনি পুরোপুরি ঠিক বলেছেন, ম্যাট। ভবিষ্যতের রেফারেন্সের জন্য উদাহরণটি আপডেট করব। এছাড়াও, আমি শেষে একটি লাইন ভুলে গিয়েছি যা পরবর্তী বৈশিষ্ট্যটি ডেটাসেটে যাওয়ার চেষ্টা করার পূর্বে প্যারেন্ট জিডিবিতে কর্মক্ষেত্রটি পুনরায় সেট করে (যদিও এই ক্ষেত্রে এটি প্রয়োজনীয় নয়)।
জেসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.