Answers:
IDL是一种出色的独立编程语言(您不需要ENVI)。我特别喜欢它,可以在大型阵列上进行非常快速的矩阵处理。@Aaron使IDL听起来不像实际那样灵活。IDL的大部分发展都来自物理和天文学界。对数学和统计编程提供了强大的支持。如果与ENVI捆绑在一起,则您将拥有ENVI中所有可用的库调用(函数),包括对空间矢量对象的支持。用户社区还开发了许多功能和模型。学习IDL的优点之一是,它将使您在“分析型”遥感商店中有销路。
同样,不要忘记ERDAS的脚本语言(EML)很好而且很容易学习。EML是图形建模器的基础,而gmd只是打包在图形建模器界面下的打包的EML脚本。直接使用EML的优点是您可以使用for / while循环,并可以使用脚本语言访问更多的ERDAS功能。
MATLAB也非常适合矩阵处理,并且有开源版本(例如Octave),它们的语法完全相同,基准相似。这是一种高度灵活的语言,具有强大的功能。它是应用数学和工程学的首选语言之一。
Python的NumPy和SciPy替代方案很灵活,但没有IDL和MATLAB优化。因此,使用大型阵列时,您需要处理寻址空间和速度。Python的一大优势是用于执行各种分析任务的附加库。有用于遥感, 非参数统计,绑定到空间类(例如GDAL,LibLAS)的软件包,仅列举了一些可通过软件包获得的附加功能。
这使我们成为R。我主要是空间统计学家,所以这是我的日常语言。可用软件包的数量惊人,这反过来又提供了最前沿的跨学科统计方法。但是,我不得不说在处理大数据问题时非常麻烦。空间类正在变得越来越好,并且由于光栅包提供了将大数据保存到内存之外的能力,我现在能够利用大光栅阵列实现一些相当复杂的统计模型。但是,R在处理大内存问题时速度很慢。BigMatrix包允许从磁盘写入和处理巨大的数组,但是编码开销并不小。还有与GDAL和GIS软件(例如GRASS,SAGA)允许在GIS专用软件中的R之外进行空间对象处理,这就是我最近与GIS软件进行交互的方式。这使我无需离开R就可以跨多个软件利用功能。
因此,既然软件啦啦队比赛已经结束,我的建议是“对以上所有选项都可以”。编程是一种技能,一旦学习,便可以轻松地应用于其他语言。C ++,R,IDL和Python之间有惊人的相似之处。除了某些编码特有的中心性之外,必须学习的是实现给定模型/任务的可用功能。一旦完成,实现通用编码结构的语法只是一个问题。
有时候有些事情在另一种软件或语言下效果更好。我偶尔用FORTRAN或C ++编写代码,因为它只是给定任务的最佳选择。这是适应性的问题。您可能要开始使用Python,因为它作为一种脚本语言可以应用于众多任务,它还提供了用于专业分析的软件包,具有大量的免费在线资源,并且易于学习。
从遥感的角度来看,IDL的主要好处是它扩展了ENVI的功能,类似于Python arcpy网站包扩展了ArcGIS的功能。如果您无权使用ENVI平台,请考虑学习另一种编程语言。另外,IDL是一种商业产品,而Python是开源的,并且具有巨大的支持基础。
从实际的角度来看,Python,R(开源)和MATLAB(商业)是我日常基于遥感的工作中最重要的语言。我将MATLAB用于大多数数字图像处理,将Python用于更多与GIS相关的任务,将R用于图形/分析目的。
最后,如果我将所有精力都集中在一种语言上,那么我会选择学习Python,主要是因为Python功能除了基于RS的功能外,更适合与GIS相关的处理。换句话说,Python是万事通,而IDL不是。此外,NASA使用Python!
我强烈建议学习基础计算机科学理论,而不要专注于一种过程语言。掌握CS理论的基础将使您可以互换使用编程语言。在日常工作中,我使用两到三种语言来编写代码(主要是Matlab,R,Python),在上个月,我还用VB,BATCH和EASE(PCI Focus)编写了代码。
这不仅对于能够轻松学习多种语言非常重要,而且对于避免犯基本错误也很重要。
一些推荐的主题是:
另外,如果您在编写代码时遇到问题,请退后一步并编写伪代码。基本上,逐步编写代码背后的逻辑以及要实现的逻辑。
如果您是学生,我建议您参加第一和第二年的Comp Sci课程。
干杯。
我认为这值得一个单独的答案:这是一个学习如何使用Python进行遥感的绝对很棒的页面,讲义是一个很棒的教程:http : //www.gis.usu.edu/~chrisg/python / 2009 /
对我来说,Python和QuantumGIS的结合解决了我所有的遥感和GIS需求。
它实际上取决于您希望在遥感(图像分析)中使用的软件包。ArcGIS(ESRI)不是遥感软件包。如果您想使用开源软件包,我会同意Python和R是很棒的语言。我还将考虑C ++和C,因此您可以更深入地研究某些库(即GDAL)。如果您想坚持使用现成的商业(COTS)软件包,那么您将需要更多地研究C语言(C,C ++和C#)。快乐的编码。