डेस्कटॉप के लिए ArcGIS के लिए। ऐड-इन्स बनाम .NET ऐड-इन्स के पेशेवरों और विपक्ष क्या हैं?


11

मुझे ESRI .NET सहायता मिली:

अजगर

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

और ArcGIS डेस्कटॉप मदद में:

ArcGIS 10.1 डेस्कटॉप ऐड-इन्स को संलेखन के लिए भाषाओं की सूची में पायथन का परिचय देता है, आपको डेस्कटॉप कार्यक्षमता का विस्तार करने के लिए एक आसान समाधान प्रदान करता है। पायथन ऐड-इन्स के विकास को सरल बनाने के लिए, आपको अनुकूलन के प्रकार को घोषित करने के लिए पायथन ऐड-इन विज़ार्ड का उपयोग करना होगा। विज़ार्ड ऐड-इन कार्य के लिए आवश्यक सभी आवश्यक फ़ाइलों को उत्पन्न करेगा।

यदि पायथन और .NET ऐड-इन्स में समान कार्यक्षमता है? क्या इसका मतलब यह है कि मैं पायथन में .NET की तरह ही काम कर सकता हूं ??


यह कहाँ कहता है कि "पायथन और .NET में ऐड-इन बनाने के लिए समान विशेषताएं हैं"?
PolyGeo

क्षमा करें, मेरा मतलब है कि मैं बुरा व्यक्त करता हूं। (मैं पोस्ट अपडेट करता हूं)
user7172

1
implement a COM interface, or plug into ESRI’s many COM extensibility points using Pythonयह अजीब है। COM के साथ पायथन ठीक काम कर सकता है।
नाथन डब्ल्यू

वास्तव में, मैंने पायथन ऐड-इन्स बनाया है, जो कॉकटेल के माध्यम से आर्कोबजेक्ट्स का उपयोग करता है। हालाँकि मैंने पायथन में COM इंटरफेस को लागू करने की कोशिश नहीं की है। मुझे यकीन नहीं है कि यह संभव है या .NET के साथ तुलना में यह कितना मुश्किल होगा। इसके अलावा COM के साथ स्वत: पंजीकरण के लिए किसी भी प्रकार का ऐड-इन अनुमति नहीं देता है, इसलिए अधिक उन्नत सामानों में से कुछ को पारंपरिक COM घटक के साथ बेहतर ढंग से परोसा जाता है जिसे इसके इंस्टॉलर या (ESRI) RegAsm द्वारा पंजीकृत किया जा सकता है।
blah238

1
यह आर्कगिस नहीं है, लेकिन यह है कि मैंने MapInfo nathanw.net/2011/04/use-python-and-mapinfo-with-callbacks के लिए पायथन का उपयोग करके एक COM इंटरफ़ेस लागू किया है, मैं कहूंगा कि यह आसान है। .NET: )
नाथन डब्ल्यू '

जवाबों:


24

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

विशुद्ध रूप से तकनीकी दृष्टिकोण से, आर्कगिस डेस्कटॉप ऐड-इन फ्रेमवर्क निम्नलिखित कार्यक्षमता प्रदान करता है:

  • सामान्य डेस्कटॉप एकीकरण बिंदुओं और घटकों की एक श्रृंखला का वर्णन करने के लिए एक अच्छी तरह से परिभाषित, XML- आधारित स्कीमा: बटन, टूलबार, मेनू, उपकरण, बहु-आइटम मेनू और एक्सटेंशन, साथ ही साथ इनसे एक घोषित तरीके से आसानी से जुड़ने का एक तरीका आर्कगिस डेस्कटॉप के लिए आपका कोड
  • .esriaddinडेस्कटॉप अनुकूलन कोड वितरित करने के लिए एक फ़ाइल प्रारूप और फ़ाइल संरचना ( )।
  • स्थापित करने, सत्यापन और कैशिंग के लिए एक तंत्र .esriaddins, इसलिए यदि घायल ऐड-इन स्रोत फ़ाइल बदल गई है, तो यह परिवर्तित फ़ाइल को स्थानीय डेस्कटॉप ऐड-इन कैश में पुनः लोड करेगा।
  • ऐड-इन में कोड के लिए सुरक्षा और प्रमाणीकरण तंत्र का एक सेट: .esriaddinफाइलों का डिजिटल हस्ताक्षर , ऐड-इन की स्थापना की अनुमति देने के लिए प्रमाणीकरण के किस स्तर पर प्रशासनिक नियंत्रण आवश्यक है।

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

दूसरी ओर, अजगर है लेने वाली / COM इंटरफ़ेस लागू करने में सक्षम है, लेकिन अजगर से COM उपयोग कर किसी भी ArcGIS एसडीके के साथ बंडल या ArcGIS सहायता प्रणाली में दर्ज नहीं है। यदि आप आर्कगिस में विकसित करने के लिए नए हैं, तो आपको प्रवेश करने के लिए प्रवेश के लिए एक अवरोध पर्याप्त होना चाहिए जब तक कि आप वास्तव में नहीं जानते कि आप क्या कर रहे हैं। आप यहाँ Python में COM कर सकते हैं, लेकिन यह एक Turing Tarpit के काफी करीब है कि जब तक आप विशेषज्ञ-स्तरीय उपयोगकर्ता पहले से ही COM और ArcObjects के ins और बहिष्कार से परिचित नहीं हो जाते, तब तक समय व्यतीत करना कठिन होगा।

मैं आपको आर्कपी के साथ क्या कर सकता हूं, यह देखने की सलाह दूंगा । आप बहुत से कार्यों को स्वचालित कर सकते हैं जैसे कि जियोप्रोसेसिंग टूल को कॉल करना और मैप दस्तावेजों के बैच हेरफेर करना , और पायथन एड-इन आपको आर्कपी की आधार क्षमताओं के अलावा कुछ निश्चित परिभाषित घटना सिंक और कुछ संवाद नियंत्रण का उपयोग करने देता है। यदि आप Python में अपने कार्य को पूरा करने के तरीके के बारे में नहीं सोच सकते हैं तो प्रलेखन क्या कहता है (Python Add-In Wizard में उजागर नहीं होने वाली घटनाओं में आपको कुछ जटिल यूजर इंटरफेस इंटरैक्शन या हुक की जरूरत है या केवल ArcObjects में उपलब्ध कुछ का उपयोग करें) , तब अपना विकास एक .Net ऐड-इन में करें।

क्षमा करें यह कठिन और तेज़ हाँ या कोई उत्तर की तुलना में अधिक बारीक है, लेकिन इससे आपको कुछ असर होना चाहिए कि क्या आपको अपने ऐड-इन में पायथन या .Net मार्ग जाना चाहिए।

मुझे लगता है कि मुझे इस प्रकटीकरण को जोड़ना चाहिए: मैंने आर्कगिस में ऐड-इन के लिए पायथन की विशिष्ट कार्यक्षमता को बहुत डिजाइन और विकसित किया है।


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

2

.NET में ऐड-इन को विकसित करने के नुकसानों में से एक यह है कि आर्कजीआईएस के प्रत्येक नए संस्करण में आर्कओबजेक्ट्स के एक अलग असंगत संस्करण और विज़ुअल स्टूडियो के एक अलग असंगत संस्करण का उपयोग किया जाता है। .NET ऐड-इन्स द्वारा उत्पन्न बायनेरिज़ आमतौर पर आर्कजीआईएस के बाद के संस्करणों के साथ संगत होते हैं, लेकिन केवल अगर आप अपने ऐड-इन में आर्कगिस के एक संस्करण में बाद में हुए बदलाव की तुलना में कोई बदलाव नहीं करना चाहते हैं, तो यह मूल रूप से था। विकसित की है।

मैंने आर्कजीआईएस 10.0 में एक नक्शे में जनगणना ब्यूरो टाइगर / लाइन डेटा परतों को लोड करने के लिए एक .NET ऐड-इन विकसित किया है, और बाइनरी एड-इन अभी भी आर्कजीएस 10.4 में काम करता है। दुर्भाग्य से, जब मैं ऐड-इन में संशोधन करना चाहता था, तो मैंने ArcGIS 10.4 के साथ संगत विज़ुअल स्टूडियो के संस्करण में समाधान लाने की कोशिश की, और मुझे ArcObjects और सुविधाओं की असंगत कॉल के कारण भारी संख्या में त्रुटि संदेशों से बाढ़ आ गई थी। दृश्य स्टूडियो।

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

.NET के बजाय Python का उपयोग करने का मुख्य नुकसान यह है कि Python में GUI इंटरफ़ेस बनाना अधिक कठिन है। WxPython जैसे पैकेज का उपयोग किया जा सकता है, लेकिन आर्कजीआईएस में उन्हें काम करने में काफी मुश्किलें आती हैं। टूलबॉक्स यूजर इंटरफेस .NET में बनाए जा सकने वाले डायलॉग बॉक्स की तुलना में बहुत अधिक सीमित है।


1

आप डेस्कटॉप वातावरण को देख रहे हैं। इसलिए निश्चय ही .NET एक विकल्प है। हालाँकि, आप इस बात पर सीमित रहेंगे कि आप .NET के साथ अब क्या कर सकते हैं कि आर्कगिस सर्वर का अधिकांश भाग कई प्लेटफार्मों पर चलाने के लिए उपलब्ध है।

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

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