জিওডাটাবেস থেকে সমস্ত কোডেড মান ডোমেনগুলি রফতানি করুন


11

আজ সকালে ইএসআরআই-এল মেলিং তালিকায় জিওডাটাবেস-এর জন্য সমস্ত কোডেড মান ডোমেনগুলি কীভাবে দেখতে বা রফতানি করা যায় সে সম্পর্কে একটি প্রশ্ন ছিল। লক্ষ্যটি হ'ল ডোমেনগুলির সামগ্রীটি একটি সারণী আকারে উপস্থাপন করা, যাতে সেগুলি পড়া সহজ।

DomainToTable টুল একটি ডোমেন জন্য সহজে এই আছে, কিন্তু এটা দ্রুত ক্লান্তিকর বৃদ্ধি যখন অনেক ডোমেইন আছে। আমি সেরা পরামর্শটি ব্যাচ প্রসেসিং বৈশিষ্ট্যটিতে দিতে পারি , তবে এটির জন্য স্বতন্ত্রভাবে ডোমেনগুলির নাম জানা বা সন্ধান করা প্রয়োজন।

অবশ্যই আরও ভাল উপায় আছে?


1
আপনি যা চান তা পেতে সম্ভবত এই কোডটি (ক্রিস স্নাইডারের পোস্ট দেখুন) মানিয়ে নিতে পারেন: forums.arcgis.com/threads/…
blah238

সমস্ত ডোমেন জিডিবি_ডমিনস সারণীর "ডোমেননাম" ক্ষেত্রে তালিকাভুক্ত রয়েছে। আপনি সহজে নামগুলি লুপ করতে পারেন এবং এটিকে সাধারণ কোডের মাধ্যমে ডোমেনটোবেল জিওপ্রোসেসিং সরঞ্জামে ফিড করতে পারেন। আপনার সাবটাইপগুলি সম্পর্কেও সাবধান হওয়া দরকার কারণ প্রতিটি উপ-টাইপ এর নিজস্ব ডোমেন থাকতে পারে।
ব্রেন্ট এডওয়ার্ডস

@ ব্রেন্টএডওয়ার্ডস, আপনি কোথায় একটি GDB_Domainsটেবিল দেখতে পাচ্ছেন ? আমি অ্যাক্সেসে ডোমেনগুলি সহ একটি ব্যক্তিগত-জিডিবি খুলেছি এবং এটি সেখানে নেই। আমি এমন GDB_Itemsএকটি Definitionক্ষেত্র খুঁজে পেয়েছি যাতে এটি ডোমেনগুলি ধারণ করে তবে তারা এক্সএমএলে সমাধিস্থ হয়।
ম্যাট উইলকি

আপনি আরকিজিআইএস 10 ব্যবহার করছেন? জিডিবি_ডমিনগুলি কেবল 9.3 এবং তার আগেও বিদ্যমান ছিল। দেখুন: ব্লগস.এসরি.com
esri

এই পৃষ্ঠাটির জন্য ধন্যবাদ @ ব্লাহ 238। আমি সে সম্পর্কে জানতাম না (এবং হ্যাঁ আমি
ভি 10

উত্তর:


12

এখানে আমি একসাথে রেখেছি যা আমার হাতে থাকা সহজ জিডিবিতে কাজ করে। আমি জানি না এটি কীভাবে একাধিক ডোমেন সহ উপ-প্রকারগুলি পরিচালনা করতে পারে বা নাও করতে পারে (ব্রেন্টের মন্তব্য দেখুন)।

ব্যবহার:

python export_gdb_domains.py [input geodatabase]

এটি টেবিলগুলি একই জিডিবিতে রফতানি করে যা সেগুলি থেকে ডোমেনগুলি পাচ্ছে। টেবিল (গুলি) ইতিমধ্যে উপস্থিত থাকলে এটি ব্যর্থ হবে।

''' Export all coded value domains in a geodatabase to tables in that gdb '''
import os, sys
import arcpy

gdb = sys.argv[0]

desc = arcpy.Describe(gdb)
domains = desc.domains

for domain in domains:
    print 'Exporting %s CV to table in %s' % (domain, gdb)
    table = os.path.join(gdb, domain)
    arcpy.DomainToTable_management(gdb, domain, table,
        'field','descript', '#')

Https://github.com/envygeo/arcplus/blob/master/ArcToolbox/Scriptts/export_gdb_domains.py এ গিথুব এ আপডেট হওয়া সংস্করণ । Lচ্ছিকভাবে এক্সএলএসে লিখুন এবং বিদ্যমান টেবিলগুলিকে ওভাররাইট করে।

সম্পদ:


ইতিহাস

আমি প্রথমে একটি আউটপুট ডিরেক্টরি ও পরিবর্তে ফলাফলের জন্য .csv ফাইল ব্যবহার চেষ্টা করেছি, কিন্তু পেয়ে রাখা "ত্রুটি 000142: dBASE সারণির ক্ষেত্রের নাম 10 অক্ষরের বেশি হতে পারে না" । এটি সর্বদা সারণীর নাম (সিএফ table = লাইন) rug শ্রাগ part এর অংশ হিসাবে পথটিকে ব্যাখ্যা করে বলে মনে হয় }

[পরে]: @ dgj32784 কারণ খুঁজে পেয়েছে , 'description'11 টি অক্ষর খুব দীর্ঘ।


আমি খুঁজে পেয়েছি যে জিওপ্রসেসিংয়ে সিএসভি রফতানি মূলত অস্তিত্বহীন, যদিও আপনি এটি আর্কম্যাপে এক্সপোর্ট ডেটা ডায়ালগের মাধ্যমে ইন্টারেক্টিভভাবে করতে পারেন। আমি সাধারণত পাইথন csvমডিউলটি ব্যবহার করি ।
blah238

1
সিএসভি রফতানিতে, সম্পর্কিত প্রশ্নটি দেখুন: gis.stackexchange.com
blah238

4

এখানে এমন কিছু কোড যা এক্সেল ফাইলে সমস্ত ডোমেন রফতানি করে। এছাড়াও, আপনি ডিবিএফ রফতানি করার চেষ্টা করার সময় ত্রুটি পেয়ে যাচ্ছেন কারণ "বিবরণ" শব্দটি 11 টি অক্ষর দীর্ঘ।

''' Export all coded value domains in a geodatabase to Excel files in the same directory '''
import os, sys
import arcpy

## Ideal when testing so you don't keep getting errors
arcpy.env.overwriteOutput = True

## Specify the File Geodatabase workspace
gdb = sys.argv[0]

## Get a list of domains
desc = arcpy.Describe(gdb)
domains = desc.domains

## Loop over the list of domains
for domain in domains:
    ## Create an object that represents the name of the Excel file to be created
    table_name = domain + '.xls'
    ## Let the user know what is happening
    print('Exporting {0} domain to table {1}'.format(domain, table_name))
    ## Create an object that represents the full path of the Excel file to be created
    table_full_path = os.path.join(os.path.dirname(gdb), table_name)
    ## Create an in memory object for the DBF to temporarily store the domains (since this is the default file type)
    in_memory_dbf = "in_memory" + "\\" + domain + ".dbf"
    ## Export the domain to the temporary in memory table
    ## NOTE: Cannot use "description," that is longer than 10 characters
    arcpy.DomainToTable_management(gdb, domain, in_memory_dbf, 'field', 'desc', '#')
    ## Convert the in memory table to an Excel stored on disc
    arcpy.TableToExcel_conversion(in_memory_dbf, table_full_path)
    ## Clear the memory so ArcGIS doesn't pitch a fit
    arcpy.Delete_management("in_memory")

সম্পাদনা: স্থির মুদ্রণ ফর্ম্যাট (লাইন 20)


'বিবরণ' বাগ ঠিক করার জন্য ধন্যবাদ! আমি এটিকে আমার স্ক্রিপ্টে যুক্ত করেছি
matt wilkie
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.