सभी कोडित मूल्य डोमेन को जियोडेटाबेस से निर्यात करें


11

ईएसआरआई-एल मेलिंग सूची पर आज सुबह एक सवाल था कि जियोडेराबेस के लिए सभी कोडित मूल्य डोमेन कैसे देखें या निर्यात करें। लक्ष्य एक सारणीबद्ध रूप में डोमेन की सामग्री को प्रस्तुत करना है, इसलिए उन्हें पढ़ना आसान है।

DomainToTable उपकरण एक ही डोमेन के लिए आसानी से इस करता है, लेकिन यह जल्दी से थकाऊ बढ़ता है जब वहाँ कई डोमेन हैं। सबसे अच्छी सलाह जो मैं दे सकता था, वह थी बैच प्रोसेसिंग फीचर, लेकिन यहां तक ​​कि व्यक्तिगत रूप से डोमेन के नाम जानने या देखने की भी आवश्यकता है।

निश्चित रूप से एक बेहतर तरीका है?


1
शायद इस कोड अनुकूलित कर सकते हैं (क्रिस स्नाइडर की पोस्ट देखें) आप क्या चाहते हैं पर प्राप्त करने के लिए: forums.arcgis.com/threads/...
blah238

सभी डोमेन GDB_Domains तालिका के "DomainName" फ़ील्ड में सूचीबद्ध हैं। आप आसानी से नामों पर लूप कर सकते हैं और उन्हें सरल कोड के माध्यम से DomainToTable जियोप्रोसेसिंग टूल में फ़ीड कर सकते हैं। आपको SubTypes से भी सावधान रहने की आवश्यकता है क्योंकि प्रत्येक SubType संभावित रूप से इसका अपना डोमेन हो सकता है।
ब्रेंट एडवर्ड्स

@BentEdwards, आपको एक GDB_Domainsतालिका कहां दिखाई देती है ? मैंने एक्सेस में डोमेन के साथ एक व्यक्तिगत-जीडीबी खोला और यह वहां नहीं है। मैंने GDB_Itemsएक Definitionक्षेत्र के साथ पाया, जिसमें डोमेन सम्‍मिलित हैं, लेकिन वे XML में दबे हुए हैं।
मैट विल्की

क्या आप आर्कगिस 10 का उपयोग कर रहे हैं? GDB_Domains केवल 9.3 और पूर्व में मौजूद थे। देखें: blogs.esri.com/esri/arcgis/2010/03/15/…
blah238

उस पृष्ठ @ blah238 के लिए धन्यवाद। मैं उस बारे में नहीं जानता था (और हाँ मैं v10 का उपयोग कर रहा हूँ)
मैट विल्की

जवाबों:


12

यहाँ कुछ ऐसा है जो मैंने एक साथ रखा है जो साधारण gdb के हाथ पर काम करता है। मुझे नहीं पता कि यह कई डोमेन के साथ उप-प्रकारों को कैसे संभाल सकता है या नहीं देख सकता है (ब्रेंट की टिप्पणी देखें)।

उपयोग:

python export_gdb_domains.py [input geodatabase]

यह उसी gdb को तालिकाएँ निर्यात करता है जो इसे डोमेन से मिल रही है। यदि तालिका पहले से मौजूद है तो यह विफल हो जाएगी।

''' 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/Scripts/export_gdb_domains.py पर github पर अपडेट किया गया संस्करण । वैकल्पिक रूप से एक्सएलएस को लिखता है और मौजूदा तालिकाओं को अधिलेखित करता है।

संसाधन:


इतिहास

मैंने शुरू में परिणामों के लिए आउटपुट निर्देशिका और .csv फ़ाइलों का उपयोग करने की कोशिश की, लेकिन "ERROR 000142: DBASE तालिका में फ़ील्ड का नाम 10 वर्णों से अधिक लंबा नहीं हो सकता" रहा । यह हमेशा तालिका नाम (सीएफ table = लाइन) {श्रग} के हिस्से के रूप में पथ की व्याख्या करता है ।

[बाद में]: @ dgj32784 को कारण मिला , 'description'११ अक्षर बहुत लंबे हैं।


मैंने पाया है कि जियोप्रोसेसिंग में सीएसवी निर्यात अनिवार्य रूप से कोई भी नहीं है, हालांकि आप आर्कपार्ट में एक्सपोर्ट डेटा संवाद के माध्यम से इसे अंतःक्रियात्मक रूप से कर सकते हैं। मैं आमतौर पर केवल पायथन csvमॉड्यूल का उपयोग करता हूं ।
blah238

1
CSV निर्यात पर, संबंधित प्रश्न देखें: gis.stackexchange.com/questions/26227/…
blah238

4

यहाँ कुछ कोड है जो सभी डोमेन को एक्सेल फाइल में एक्सपोर्ट करता है। इसके अलावा, आपको DBF को निर्यात करने की कोशिश करते समय त्रुटि हो रही है क्योंकि शब्द "विवरण" 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)


'विवरण' बग फिक्स के लिए धन्यवाद! मैंने इसे अपनी स्क्रिप्ट में जोड़ा है
22:48 पर मैट विल्की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.