ArcGIS में प्रोग्रामेटिक रूप से मेटाडेटा संपादित / अपडेट करें?


10

क्या आर्कगिस 10 में कोई प्रोग्राम मेटाडेटा अपडेट करने में सफल रहा है? Python / arcpy लेकिन ArcObjects (C # या Python / comtypes) का उपयोग करना भी एक संभावना है।

मुझे FGDC और ArcGIS-ISO प्रारूप मेटाडेटा दोनों को अपडेट करने की आवश्यकता है, और जो भी समाधान का उपयोग किया जाता है, उन्हें मौजूदा (गैर-रिक्त) तत्वों को जोड़े गए तत्वों के साथ बनाए रखने में सक्षम होना चाहिए, सिवाय इसके कि वे किस मामले में संघर्ष में हैं जोड़े गए तत्व मौजूदा तत्वों को अधिलेखित करते हैं।

जवाबों:


9

आर्कपी से ऐसा करने का सबसे आसान तरीका पायथन का उपयोग करके XML फ़ाइल बनाना और फिर आयात मेटाडेटा (रूपांतरण) लागू करना है । हालाँकि, यह सब कुछ अधिलेखित कर देगा।

एक विकल्प आर्किओबजेक्ट्स का उपयोग डेटासेट को एक आईएनएम प्राप्त करने के लिए, आईएमटैडाटा के लिए किया जाता है, और IPropertyset को संपादित करने के लिए है।


11

हमें इसी तरह की क्षमता की बड़ी जरूरत थी और उद्देश्य के लिए एक सामान्य, मुक्त, मुक्त स्रोत पायथन लाइब्रेरी का निर्माण किया। आप इसे https://github.com/ucd-cws/arcpy_metadata पर या "पाइप इंस्टॉल आर्कपी_मेटडाटा" चलाकर पा सकते हैं । विश्व संसाधन संस्थान के कुछ अतिरिक्त योगदान के साथ, सुविधाओं के कुछ प्रलेखन और इसका उपयोग कैसे करना है। हमने चीजों को अपेक्षाकृत पाइथोनिक रखने की कोशिश की ताकि यह अच्छी तरह से एकीकृत हो और जल्दी से सीखा जा सके। यहाँ एक उदाहरण है:

import arcpy_metadata as md
import datetime

metadata = md.MetadataEditor(path_to_some_feature_class)  # also has a feature_layer parameter if you're working with one, but edits get saved back to the source feature class
metadata.title = "The metadata title!"

generated_time = "This layer was generated on {0:s}".format(datetime.datetime.now().strftime("%m/%d/%Y %I:%M %p"))

metadata.purpose = "Layer represents locations of the rare Snipe."

metadata.abstract.append("generated by ___ software")
metadata.abstract.append(generated_time)  # .prepend also exists
metadata.tags.add(["foo", "bar", "baz"])  # tags.extend is equivalent to maintain list semantics

metadata.finish()  # save the metadata back to the original source feature class and cleanup. Without calling finish(), your edits are NOT saved!

यह अभी भी बहुत कुछ है जो जोड़ा जा सकता है, लेकिन यदि आप पहले से ही मौजूद हैं, या उन्हें सही तरीके से कॉन्फ़िगर करते हैं, तो यह बहुत ही एक्स्टेंसिबल है। यह अभी भी अल्फा गुणवत्ता सॉफ्टवेयर के बारे में है, लेकिन यह काम करता है और हम इससे खुश हैं।


संस्करण 2.5 के रूप में आर्कजीआईएस प्रो के भीतर इस क्षमता की तलाश में किसी के लिए, वे अब पायथन से मेटाडेटा एपीआई को शामिल करते हैं। मेटाडेटा वर्ग के प्रलेखन में अधिक विवरण हैं ।


9

हम इसके साथ संघर्ष कर रहे हैं और इसे एक साधारण अजगर पुस्तकालय में रखा गया है जिसे आर्कोबोजेक्ट्स मेटाडेटा फ़ंक्शन के आसपास बनाया गया है। यह एक xml- फ़ाइल पर आधारित है जहाँ मेटाडेटा मान को कीवर्ड से बदल दिया गया है। मेटाडेटा फ़ील्ड का मान प्राप्त करने या सेट करने के लिए आप इन कीवर्ड का उपयोग अपने अजगर कोड में कर सकते हैं। कोड कुछ इस तरह दिखता है:

import dataprocessing
DP = dataprocessing.create()

md = DP.OpenMetadata("C:/MyShapefile.shp") # Works also on geodatabases
myKeyword = "%FGDC.abstract" # Keywords have to start with '%' but the rest is up to you

if md.GetValue(myKeyword) == "Not what I want":
    md.SetValue(myKeyword, "New value that suits me better")

उपकरण यहां पाया जा सकता है: http://www.aris.nl/dataprocessing_arcgis और स्वतंत्र रूप से उपलब्ध है। वेबसाइट पर संस्करण आर्कगिस 9.3 के लिए है। एक आर्कगिस 10 संस्करण उपलब्ध होगा लेकिन यह अब मुफ्त नहीं होगा।

(पूर्ण प्रकटीकरण: मैं एक डच संत एजेंसी के लिए काम करता हूं, जहां हमारे पास करदाताओं के पैसे से आंशिक रूप से निर्मित और आंशिक रूप से प्रोग्रामर द्वारा दान किए गए समय से निर्मित इस उपकरण का वर्तमान संस्करण था। यही कारण है कि यह मुफ्त में उपलब्ध है, लेकिन खुला स्रोत नहीं है। 2013 के अनुसार। किसी भी नए संस्करण का वित्तपोषण न करें। मैं इसमें से किसी भी तरह से कोई पैसा नहीं कमा रहा हूं। मुझे आशा है कि यह अधिक उपयोग में लाया जाएगा।)


1

एक तीसरा विकल्प जो मैं अभी देख रहा हूं, वह XSLT रूपांतरण (रूपांतरण) टूल के साथ एक XSLT फ़ाइल का उपयोग करना है । मैं भाषा सीखने के लिए बहुत उत्सुक हूं क्योंकि मैं जाता हूं, और वे .NET कार्यान्वयन का उपयोग करके आप पर यह आसान नहीं बनाते हैं जो पुराने XSLT / XPath 1.0 मानकों का उपयोग करता है।


1

मेरे पास कुछ कोड हैं जो मौजूदा एमडी के रूपांतरण के लिए आर्कपी और डोम का उपयोग करते हैं, खरोंच से निर्माण (यदि कोई भी मौजूद नहीं है) और डोम का उपयोग करते हुए कुछ तत्वों का अपडेट। यह थोड़ा क्लिंक है, जिसमें काफी हार्डकॉन्ड पाथनेम्स वगैरह हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.