रिमोट सेंसिंग के लिए अनुशंसित प्रोग्रामिंग भाषा?


14

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

जवाबों:


28

IDL एक शानदार स्टैंड-अलोन प्रोग्रामिंग भाषा है (आपको ENVI की आवश्यकता नहीं है)। मैं विशेष रूप से बड़े सरणियों पर बहुत तेजी से मैट्रिक्स प्रसंस्करण के लिए इसे पसंद करता हूं। @ एरोन आईडीएल ध्वनि को कम लचीला बनाता है तो यह वास्तव में है। आईडीएल के अधिकांश विकास भौतिकी और खगोल विज्ञान समुदायों से बाहर आए। गणितीय और सांख्यिकीय प्रोग्रामिंग के लिए मजबूत समर्थन है। यदि ENVI के साथ बंडल किया गया है, तो आपके पास ENVI में सभी लाइब्रेरी कॉल (फ़ंक्शन) उपलब्ध हैं जिनमें स्थानिक वेक्टर ऑब्जेक्ट्स के लिए समर्थन शामिल है। उपयोगकर्ता समुदाय द्वारा विकसित कार्यों और मॉडलों की एक बड़ी संख्या भी है। आईडीएल सीखने का एक फायदा यह है कि यह आपको "एनालिटिक" रिमोट सेंसिंग दुकानों में बिक्री योग्य बना देगा।

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

MATLAB मैट्रिक्स प्रसंस्करण के लिए भी बहुत अच्छा है और खुले स्रोत संस्करण हैं (उदाहरण के लिए, ऑक्टेव) जो बिल्कुल समान बेंचमार्क के साथ एक ही वाक्यविन्यास हैं। यह काफी लचीली भाषा है जिसमें काफी शक्ति है। यह लागू गणित और इंजीनियरिंग के लिए पसंदीदा भाषा में से एक है।

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

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

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

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


मैंने इसे न केवल इसलिए उत्कीर्ण किया क्योंकि यह अच्छी तरह से लिखा गया है और उत्तरदायी है, बल्कि इसलिए भी कि मुझे इसी तरह के अनुभव हुए हैं (कभी-कभी फ़ॉर्चन :-) में वापस जाएं और इन भाषाओं और एप्लिकेशन वातावरण के बारे में समान निष्कर्ष निकालते हैं।
whuber

+1 वहाँ उपलब्ध उपकरणों का एक अच्छा सारांश। EML का उल्लेख करने के लिए धन्यवाद। स्क्रिप्टिंग के नजरिए से, ईएमएल पायथन (आईएमओपी) की तुलना में थोड़ा क्लंकी है, हालांकि बहुत आसान है अगर एर्डस आपकी पसंद का आरएस जीयूआई है। दुर्भाग्य से, एक एकीकृत भाषा नहीं है जो जीआईएस और आरएस से सर्वश्रेष्ठ लाता है। मैं इस बात से पूरी तरह सहमत हूं कि प्रत्येक व्यक्ति को सबसे अच्छी उपलब्ध पद्धति का उपयोग करने की आवश्यकता होती है और उनके निपटान में विभिन्न प्रकार की भाषाएं होती हैं। एक भाषा आरएस विशेषज्ञ क्षेत्र में दुर्लभ है, मेरा मानना ​​है।
हारून

मैं इस बात से सहमत हूं कि पायथन के साथ शुरू करना मेरी सबसे अच्छी शर्त की तरह लगता है, इस तथ्य को देखते हुए कि यह खुला स्रोत है और कई ऑनलाइन संसाधन उपलब्ध हैं। मेरे पास ENVI तक पहुंच है, लेकिन अपने वर्तमान शोध के लिए, मैं IDL को जाने बिना प्रबंधित कर सकता हूं। मैं स्थानिक आँकड़ों का भी अध्ययन कर रहा हूँ, इसलिए R भी महत्वपूर्ण होगा। @ एरोन सही प्रतीत होता है - आरएस विशेषज्ञों को बहुभाषी होना चाहिए! विस्तृत प्रतिक्रिया के लिए फिर से धन्यवाद। यह वास्तव में किसी के लिए बहुत बड़ी मदद है जो अभी क्षेत्र में शुरू हो रही है।
एमिली

@Emily, पायथन में स्थानिक आँकड़ों के लिए PySAL पैकेज ( geodacenter.asu.edu/pysal ) पर एक नज़र डालें । केनेथ बोमन की एक किताब है, "एन इंट्रोडक्शन टू प्रोग्रामिंग विद आईडीएल" जो कि काफी अच्छा सामान्य परिचय है। मुझे लगता है कि आपको आश्चर्य होगा कि इस एक पुस्तक के माध्यम से काम करने से आपको कितनी दूर मिलेगी। जैसा कि मैंने उल्लेख किया है, बहुत सारी वाक्य रचना और कोडिंग संरचना समान उल्लिखित भाषाओं के बीच समान है, कोई समय बर्बाद नहीं हुआ है। चूंकि आप ईएनवीआई के साथ काम कर रहे हैं, इसलिए आईडीएल के कुछ बुनियादी ज्ञान आपके शोध में सहायक होंगे। यह दी गई भाषा के साथ सभी या कुछ भी नहीं है।
जेफरी इवांस

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

15

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

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

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


1
अजगर के भीतर कई मॉड्यूल हैं, जैसे pyh5 और numpy / scipy। OSSIM जैसे बड़े पुस्तकालय भी हैं , विशेष रूप से छवि प्रसंस्करण के लिए।
रोलैंड

1
अजगर पर +1। यह एक सामान्य प्रयोजन की भाषा है, और यदि आपको ऐसे उपकरणों का उपयोग करने की आवश्यकता है जो जीआईएस स्क्रिप्टिंग के साथ 'आउट ऑफ द बॉक्स' हो सकते हैं, तो अजगर इसे कर सकता है।

धन्यवाद दोस्तों, लगता है कि मैं पायथन पर काम करना शुरू कर दूंगा और एक बार दूसरी भाषाओं में अपना विस्तार कर लूंगा। आपकी मदद के लिए बहुत धन्यवाद।
एमिली

1
रैस्टरियो के बारे में मत भूलना: github.com/mapbox/rasterio पायथन के लिए चूहों के लिए एक नया पुस्तकालय।
एलेक्स लेथ

2

मैं एक प्रक्रियात्मक भाषा पर ध्यान केंद्रित करने के बजाय बुनियादी कंप्यूटर विज्ञान सिद्धांत सीखने का दृढ़ता से सुझाव देता हूं। सीएस सिद्धांत में एक नींव प्राप्त करने से आप प्रोग्रामिंग भाषाओं का उपयोग करने की अनुमति देंगे। एक दिन-प्रतिदिन के आधार पर मैं कोड लिखने के लिए दो से तीन भाषाओं का उपयोग करता हूं (अधिकतर मैटलैब, आर, पायथन), और पिछले महीने में मैंने VB, BATCH, और EASE (PCI फोकस) में भी कोड लिखा है।

यह न केवल कई भाषाओं को आसानी से सीखने में सक्षम होने के लिए महत्वपूर्ण है, बल्कि बुनियादी गलतियों से बचने के लिए भी महत्वपूर्ण है।

कुछ अनुशंसित विषय हैं:

  • डेटा प्रकार, मेमोरी उपयोग
  • शर्तेँ
  • यात्रा
  • पैटर्न मिलान
  • प्रक्रियात्मक प्रतिमान, प्रतिरूपकता

इसके अलावा, अगर आपको समस्या हो रही है कि कोड लिखना एक कदम पीछे ले जाए और pseudocode लिखें। मूल रूप से चरण-दर-चरण अपने कोड के पीछे के तर्क को लिखें और आप इसे पूरा करना चाहते हैं।

यदि आप एक छात्र हैं तो मैं पहले और दूसरे वर्ष में विज्ञान पाठ्यक्रम लेने की सलाह देता हूं।

चीयर्स।


2

मुझे लगता है कि यह एक अलग उत्तर के लायक है: रिमोट सेंसिंग के लिए पायथन का उपयोग करने के तरीके के बारे में जानने के लिए एक बिल्कुल अच्छा पृष्ठ यह है, व्याख्यान नोट्स एक महान ट्यूटोरियल हैं: http://www.gis.usu.edu/~chrisg/python / 2009 /

मेरे लिए, पायथन और क्वांटमजीआईएस का एक संयोजन मेरे सभी रिमोट सेंसिंग और जीआईएस जरूरतों को हल करता है।


0

यह वास्तव में उन पैकेजों पर निर्भर करता है जिन्हें आप रिमोट सेंसिंग (छवि विश्लेषण) में उपयोग करने की उम्मीद करते हैं। ArcGIS (ESRI) एक रिमोट सेंसिंग पैकेज नहीं है। यदि आप खुले स्रोत पैकेजों का उपयोग करना चाहते हैं तो मैं सहमत हूँ कि पायथन और आर महान भाषाएं हैं। मैं C ++ और C पर भी विचार करूंगा, ताकि आप कुछ पुस्तकालयों (यानी: GDAL) में गहराई से गोता लगा सकें। यदि आप शेल्फ (COTS) पैकेज से व्यावसायिक रूप से चिपके रहना चाहते हैं, तो आप C भाषाओं (C, C ++ और C #) में अधिक देखना चाहेंगे। खुश कोडिंग।

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