推荐的遥感编程语言?


14

我正在开始研究,希望将有一段漫长的遥感专家生涯。我目前正在与ArcGIS合作以开发某些应用程序,并正在为其他应用程序学习ENVI。我已经意识到,学习编程语言是当务之急,必须面对IDL和Python之间的选择。我很想听听社区推荐哪种编程语言来遥感地表过程。

Answers:


28

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,因为它作为一种脚本语言可以应用于众多任务,它还提供了用于专业分析的软件包,具有大量的免费在线资源,并且易于学习。


我之所以赞扬它,不仅是因为它写得很好并且响应迅速,而且因为我有类似的经验(包括偶尔回到Fortran中:-),并且对这些语言和应用程序环境得出了类似的结论。
ub

+1关于可用工具的摘要。感谢您提及EML。从脚本的角度看,与Python(IMOP)相比,EML有点笨拙,但是如果Erdas是您的RS GUI的选择非常方便。不幸的是,没有一种统一的语言可以充分利用GIS和RS的优势。我绝对同意,每个人都需要使用最好的可用方法,并可以使用多种语言。我相信,只有一种语言的RS专家在该领域很少见。
亚伦

我同意从Python开始听起来是我最好的选择,因为它是开源的,并且有许多在线资源可用。我确实可以使用ENVI,但是对于我目前的研究,我可以在不了解IDL的情况下进行管理。我也在研究空间统计,因此R也将很重要。@Aaron似乎是正确的-RS专家必须是多语言的!再次感谢您的详细回复。对于刚开始涉足这一领域的人来说,这确实是一个巨大的帮助。
艾米丽

@Emily,有关Python中的空间统计信息,请查看PySAL软件包(geodacenter.asu.edu/pysal)。肯尼斯·鲍曼(Kenneth Bowman)有一本书,“ IDL编程入门”,是一本很好的通用入门书。我认为,仅通过阅读一本书,您将能走多远,您会感到惊讶。正如我所提到的,在提到的语言之间,许多语法和编码结构都是相似的,因此不会浪费时间。由于您正在使用ENVI,因此IDL的一些基本知识将对您的研究有所帮助。对于给定的语言,它不是全部或没有。
杰弗里·埃文斯

这篇文章是一个很好的总结-我的经验的补充:考虑到ArcGis,Envi,Matlab和其他工具的高昂价格,我更喜欢OpenSource,它是免费的。对我来说,Python / gdal和QuantumGIS的完美结合。我工作场所中的其他人使用Matlab(但也很昂贵)。在我的周围,由于某种原因,R似乎主要被生物学家使用。
2014年

15

从遥感的角度来看,IDL的主要好处是它扩展了ENVI的功能,类似于Python arcpy网站包扩展了ArcGIS的功能。如果您无权使用ENVI平台,请考虑学习另一种编程语言。另外,IDL是一种商业产品,而Python是开源的,并且具有巨大的支持基础。

从实际的角度来看,PythonR(开源)和MATLAB(商业)是我日常基于遥感的工作中最重要的语言。我将MATLAB用于大多数数字图像处理,将Python用于更多与GIS相关的任务,将R用于图形/分析目的。

最后,如果我将所有精力都集中在一种语言上,那么我会选择学习Python,主要是因为Python功能除了基于RS的功能外,更适合与GIS相关的处理。换句话说,Python是万事通,而IDL不是。此外,NASA使用Python


1
python中有很多模块,例如pyh5和numpy / scipy。还有一些较大的库,例如OSSIM,专门用于图像处理。
罗兰2014年

1
在python上+1。这是一种通用语言,如果您需要使用随GIS脚本一起“开箱即用”的工具,python可以做到。

谢谢大家,听起来像我将开始使用Python并将其扩展到其他语言之后。非常感谢您的帮助。
艾米丽

1
不要忘记Rasterio:github.com/mapbox/rasterio一个新的Python栅格库。
Alex Leith

2

我强烈建议学习基础计算机科学理论,而不要专注于一种过程语言。掌握CS理论的基础将使您可以互换使用编程语言。在日常工作中,我使用两到三种语言来编写代码(主要是Matlab,R,Python),在上个月,我还用VB,BATCH和EASE(PCI Focus)编写了代码。

这不仅对于能够轻松学习多种语言非常重要,而且对于避免犯基本错误也很重要。

一些推荐的主题是:

  • 数据类型,内存使用情况
  • 条件
  • 迭代
  • 模式匹配
  • 程序范式,模块化

另外,如果您在编写代码时遇到问题,请退后一步并编写伪代码。基本上,逐步编写代码背后的逻辑以及要实现的逻辑。

如果您是学生,我建议您参加第一和第二年的Comp Sci课程。

干杯。


2

我认为这值得一个单独的答案:这是一个学习如何使用Python进行遥感的绝对很棒的页面,讲义是一个很棒的教程:http : //www.gis.usu.edu/~chrisg/python / 2009 /

对我来说,Python和QuantumGIS的结合解决了我所有的遥感和GIS需求。


0

它实际上取决于您希望在遥感(图像分析)中使用的软件包。ArcGIS(ESRI)不是遥感软件包。如果您想使用开源软件包,我会同意Python和R是很棒的语言。我还将考虑C ++和C,因此您可以更深入地研究某些库(即GDAL)。如果您想坚持使用现成的商业(COTS)软件包,那么您将需要更多地研究C语言(C,C ++和C#)。快乐的编码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.