एक आर्कगिस टूल वर्स स्टैंड-अलोन के रूप में पायथन स्क्रिप्ट प्रदर्शन


11

क्या किसी ने आर्कटूलबॉक्स बनाम पायथन स्क्रिप्ट को स्टैंड-अलोन स्क्रिप्ट के रूप में चलाने के अंतर का अध्ययन किया है? मुझे आरजीबी छवियों के एक सेट को बैंड द्वारा एकल बैंड में बदलने के लिए एक त्वरित-गंदी स्क्रिप्ट लिखना था। 1. मेरे पीसी में एक स्टैंड-अलोन स्क्रिप्ट पढ़ने और लिखने के रूप में यह लगभग 350 सेकंड में 1000 पहचान-आकार की छवियों को संसाधित करता है। ArcToolbox से एक ही स्क्रिप्ट चलाने में लगभग 1250 सेकंड लगते हैं।

import arcpy
import csv
from os import path

arcpy.env.workspace = in_folder
image_list = arcpy.ListRasters()

#Create a CSV file for timing output
    with open(outfile, 'wb') as c:
        cw = csv.writer(c)
        cw.writerow(['tile_name', 'finish_time'])

        #Start the timer at 0
        start_time = time.clock()

        for image in image_list:
            #Extract band 1 to create a new single-band raster
            arcpy.CopyRaster_management(path.join(image, 'Band_1'), path.join(out_folder, image))
            cw.writerow([image, time.clock()])

जब प्रत्येक टाइल प्रसंस्करण समाप्त कर लेती है, और CSV के रूप में परिणामों को निर्यात करने के लिए मैंने कुछ कोड जोड़े हैं। एक्सेल में प्रसंस्करण समय को समाप्त करने के समय परिवर्तित करना। परिणामों को रेखांकन करते हुए, प्रसंस्करण समय प्रत्येक टाइल के लिए एक स्क्रिप्ट के रूप में लगभग समान होता है, लेकिन आर्कजीआईएस टूल के रूप में चलने पर प्रसंस्करण समय रैखिक रूप से बढ़ जाता है।

यहाँ छवि विवरण दर्ज करें

यदि डेटा पढ़ता है और लिखता है एक नेटवर्क डिवाइस के लिए, वृद्धि घातीय प्रतीत होती है।

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


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

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

1
32 बिट में x64 बैकग्राउंड जियोप्रोसेसिंग और इन-प्रोसेस के बीच कितना अंतर है?
कर्क कुक्केंडल

जब आप कहते हैं कि आप "आर्कटूलबॉक्स में पायथन स्क्रिप्ट चला रहे हैं" तो क्या आपका मतलब यह है कि आप पायथन स्क्रिप्ट टूल चला रहे हैं? यदि हां, तो क्या आप इसे अपने परीक्षण के लिए कोई मापदंडों के साथ चला रहे हैं?
PolyGeo

@PolyGeo हाँ, मैंने एक आर्कजीआईएस टूलबॉक्स में एक स्क्रिप्ट टूल बनाया। इसने 1 पैरामीटर लिया, जिसमें से in_folder और out_folder व्युत्पन्न हैं। यह सब समय मापन शुरू होने से पहले किया जाता है।
ब्योर्न

जवाबों:


1

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

तो एक लूप को 1000 बार चलाने का मतलब है कि एमएक्सडी 1000 लॉग को स्टोर कर रहा है। जैसा कि ArcMap बंद मालिकाना सॉफ़्टवेयर है हमें पता नहीं है कि रिकॉर्डिंग प्रसंस्करण लॉग के मैकेनिक्स वास्तव में कैसे चल रहे हैं और दर सीमित हो सकती है डेटा संरचना वे कार्यरत हैं जो बड़े पुनरावृत्ति से निपटने में सक्षम नहीं हैं?

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

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

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