कब पायथन स्क्रिप्टिंग और इसके विपरीत पर ModelBuilder का उपयोग करें?


71

मैं आर्कगिस में पायथन स्क्रिप्टिंग के लिए नया हूं लेकिन मॉडलबुर्टल के लिए नया नहीं हूं।

मैं Python vs ModelBuilder के फायदे जानना चाहूंगा।

जब हमें ModelBuilder के बजाय GIS स्वचालन के लिए पायथन स्क्रिप्ट लिखनी चाहिए?

पायथन की स्वचालन क्षमता क्या है जो हम मॉडलबुर्टल में नहीं पा सकते हैं?

जवाबों:


82

मेरा मानना ​​है कि उपयोगकर्ता को उपकरण के किस सेट का उपयोग करने से पहले अपने उद्देश्यों को स्पष्ट रूप से परिभाषित करना चाहिए। ModelBuilder और पायथन स्क्रिप्टिंग विभिन्न कार्यों में उत्कृष्ट प्रदर्शन करते हैं। कुछ विचार:

  1. ModelBuilder में मानचित्रण की कोई क्षमता नहीं है, जबकि चापलूसी करते समय।
  2. पायथन का उपयोग वर्कफ़्लो को अनुकूलित करने के लिए किया जा सकता है, जैसे कि मल्टीप्रोसेसिंग पैकेज के साथ या समानांतर प्रसंस्करण के साथ ।
  3. पायथन नेस्टेड लूप और अन्य आसान पुनरावृत्ति तर्क उपकरण के लिए अनुमति देता है । ModelBuilder में एक समान परिणाम प्राप्त करने के लिए, आपको जटिल, और जटिल, नेस्टेड मॉडल का निर्माण करना होगा।
  4. सरल पाठ हेरफेर पायथन के साथ बहुत आसान है और या तो बहुत मुश्किल या ModelBuilder के साथ संभव नहीं है।

    उदाहरण के लिए फ़ाइल नामों की एक सूची का नाम बदलना, उदाहरण के लिए "m_2010_naip_2310345_nw.img" से "2310345nw.img" आसानी से os.pathमॉड्यूल का उपयोग करके पायथन के साथ पूरा किया जा सकता है ।

दूसरी ओर:

  1. ModelBuilder आम उपकरणों को जल्दी से एक साथ रखने और डीबगिंग स्क्रिप्ट की आवश्यकता को समाप्त करने के लिए बहुत उपयोगी है।

  2. ModelBuilder में एक बहुत ही उपयोगी पुनरावर्ती पुनरावृत्ति है जो फ़ोल्डरों और सबफ़ोल्डर्स के माध्यम से लूप करने के लिए लागू करना आसान है।

  3. ModelBuilder जटिल कार्यों के लिए वर्कफ़्लो का नेत्रहीन और सहज ज्ञान युक्त चित्रण करता है

  4. ModelBuilder पायथन स्क्रिप्ट उपकरण शामिल कर सकते हैं ।


5
ArcGIS में पायथन और मॉडल बिल्डर के बीच स्पष्ट अंतर। धन्यवाद
BBG_GIS

24
मैं यह भी जोड़ूंगा: 1. आप आर्केस्टा के बाहर अपनी पायथन स्क्रिप्ट को चला सकते हैं। आप पायथन में आर्कओब्जेक्ट्स का उपयोग कर सकते हैं, 3. कुछ गति अंतर हो सकते हैं।
टोमेक


3
+1 नेस्टेड लूप्स और चापलूस! मुझे एक स्क्रिप्ट के भीतर गणना करने की क्षमता पसंद है और उन्हें मैप लेआउट (अभी तक उदाहरण के लिए प्रत्येक वेटलैंड प्रकार का क्षेत्र) के लिए तालिकाओं या बेहतर से जोड़ना है।
रॉय

2
मैंने आर्कगिस पुस्तक के लिए अजगर स्क्रिप्टिंग पढ़ी। मैं कुछ और क्षमताओं को भी जोड़ता हूं: 1- स्क्रिप्ट कर्सर आपको एक तालिका में रिकॉर्ड के माध्यम से लूप करने देता है, मौजूदा पंक्तियों को पढ़ता है और नई पंक्तियाँ सम्मिलित करता है। 2- स्क्रिप्टिंग का उपयोग अन्य सॉफ्टवेयर को लपेटने के लिए किया जा सकता है- यानी एक साथ एप्लिकेशन को गोंद करना। उदाहरण के लिए अजगर माइक्रोसॉफ्ट एक्सेल में या फंक्शनल पैकेज आर। 3-ए लिपि में फंक्शंस को एक्सेस करने के लिए इस्तेमाल किया जा सकता है। आर्कगिस के बाहर डिस्क पर स्टैंड-अलोन स्क्रिप्ट के रूप में चलाया जा सकता है। स्क्रिप्ट के लिए आर्कपैक या आर्ककॉस्टिक्स चलाने की जरूरत नहीं है। काम। (
आर्किटिस के

24

यदि आप पूरी तरह से आर्कजीआईएस के दायरे में काम कर रहे हैं, तो कुछ दृष्टिकोण हैं जिन्हें मैं लेने के लिए दृष्टिकोण निर्धारित करने का प्रयास करते समय विचार करूंगा।

  • आप क्या खत्म करने की कोशिश कर रहे हैं,
  • आपके वर्तमान कौशल सेट क्या हैं,
  • क्या आप अपने काम को दूसरों के साथ साझा करने, सीखने, या हेरफेर करने और सीखने के लिए साझा करेंगे
  • आपके इच्छित दर्शक कौन हैं

उन विचारों को देखते हुए:

  1. जब तक आपकी प्रक्रिया का कुछ हिस्सा मॉडलबेल्ट में दोहराया नहीं जा सकता, तब तक अक्सर मॉडलब्यूरी में एक प्रक्रिया का निर्माण करना आसान होता है।
  2. यदि आप पायथन को नहीं जानते हैं और इसे सीखने का इरादा नहीं है, तो ModelBuilder एक बेहतरीन विकल्प है।
  3. यदि आप पायथन को नहीं जानते हैं और इसे अपने कौशल सेट में शामिल करना सीखना चाहते हैं, तो ModelBuilder सरल मॉडल बनाकर शुरू करने का एक शानदार तरीका है, फिर उन्हें पायथन को निर्यात करना ताकि आपके पास आपकी अंतिम प्रक्रिया का कंकाल आपके लिए पूर्व-निर्मित हो । यह विधि लागत पर आती है, क्योंकि इसमें बहुत सारी विस्तृत जानकारी और चर हैं जो आमतौर पर रूपांतरण प्रक्रिया के दौरान बनाई जाती हैं, लेकिन यह अभी भी सीखने का एक शानदार तरीका है।
  4. यदि आप व्यक्तिगत उपयोग के लिए उपकरण बना रहे हैं, तो जिस भी विधि से आप सबसे अधिक सहज महसूस करते हैं, वह आमतौर पर जाने का मार्ग है। मैं व्यक्तिगत रूप से अपनी आवश्यकताओं के आधार पर दोनों का उपयोग करता हूं।
  5. यदि आप दूसरों के साथ अपने विश्लेषण को साझा करने की योजना बना रहे हैं, और अपने मॉडल / स्क्रिप्ट को दूसरों के साथ साझा करना चाहते हैं, तो यह आपके प्रक्रिया प्रलेखन का हिस्सा है, एक मॉडल आमतौर पर गैर-तकनीकी लोगों के लिए अनुसरण करना और समझना बहुत आसान है।

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


20

मॉडल बिल्डर दृश्य प्रोग्रामिंग भाषा सीखने और सामान्य रूप से जीआईएस-प्रोग्रामिंग के लिए एक अच्छा प्रवेश द्वार है। लेकिन कुछ चीजों में अजगर ज्यादा कर सकता है।

एक उदाहरण गैर-ईएसआरआई जीआईएस पुस्तकालयों का एकीकरण है। लगभग सभी ओपन सोर्स जीआईएस को अजगर के माध्यम से भी स्वीकार किया जा सकता है (जैसे GRASS , Sextante , QGIS , SAGA )। इससे मुझे बहुत मदद मिली, क्योंकि मेरे पास केवल एक ArcView लाइसेंस है। इसलिए हर बार जब मैं आर्कगिस में एक निश्चित जियोप्रोसेसिंग टूल का उपयोग नहीं कर सकता, तो मुझे लगता है कि ओपन सोर्स जीआईएस में अन्य विकल्प क्या उपलब्ध हैं। मैं फिर इन OpenSource-tools को लेता हूं और इन्हें ArcGIS टूल के साथ या तो बड़ी अजगर स्क्रिप्ट में संयोजित करता हूं या एक छोटे अजगर स्क्रिप्ट के माध्यम से ModelBuilder में एकीकृत करता हूं।

मुझे यकीन है कि अन्य सदस्य अधिक फायदे बता सकते हैं।


9

पायथन और आर्कजीआईएस का उपयोग करते समय, आपको पहले से ही आर्कगिस में क्या था, इसके अलावा अजगर की पूरी कार्यक्षमता मिलती है। यदि आपको इस तरह की शक्ति की आवश्यकता है और लचीलापन आपकी इच्छाओं पर निर्भर करता है। इसके अलावा, पाइथन जैसे प्रोग्रामिंग भाषा को जानने और वास्तव में लाभ उठाने में समय लगता है। यदि यह निवेश आपके लिए लायक है तो आप पर निर्भर है। हालांकि, गंभीर डेटा प्रोसेसिंग के लिए एक वास्तविक स्क्रिप्टिंग भाषा आपके शस्त्रागार में एक बहुत अच्छा जोड़ है।

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


7

मैं पायथन स्क्रिप्ट बनाने के लिए आंशिक हूं। कम से कम मेरे लिए कोड को बॉक्स से जोड़ने के लिए गड़बड़ करने की तुलना में कोड लिखना अधिक मजेदार है।

पायथन स्क्रिप्टिंग के बारे में वास्तव में बहुत अच्छा है क्या आप अपनी स्क्रिप्ट को एक समय पर चलाने के लिए शेड्यूल कर सकते हैं जो आपके लिए सुविधाजनक है। यदि आपके पास एक स्क्रिप्ट है जिसे पूरा करने में थोड़ा समय लगता है, या नियमित व्यावसायिक घंटों के बाहर चलाने की आवश्यकता होती है, तो यह वास्तव में सुविधाजनक है। आप यहां एक स्क्रिप्ट को शेड्यूल करने का एक उदाहरण देख सकते हैं ।

और @Aaron का उल्लेख है, आप आसानी से पायथन स्क्रिप्ट में लूपिंग सेट कर सकते हैं।

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


5

मैंने पाया है कि मुझे लगता है कि पायथन स्क्रिप्टिंग की तुलना में मॉडल बिल्डर के साथ कोई समाधान नहीं है। मॉडल बिल्डर के लिए कुछ हद तक 'ब्लैक बॉक्स' की प्रकृति मुझे यह पता लगाने में कठिन बनाती है कि समस्या कहां है।

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

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