Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am beginning studies that hopefully will lead to a long career as a remote sensing specialist. I am currently working with ArcGIS for some applications and learning ENVI for others. I have realized that it is imperative that I learn a programming language, and am stuck facing a choice between IDL and Python. I would love to hear which programming language the community recommends for the remote sensing of land surface processes.

Thanks!

Emily

share|improve this question
add comment

5 Answers 5

up vote 16 down vote accepted

IDL is a fantastic stand-alone programming language (you do not need ENVI). I particularity like it for very fast matrix processing on large arrays. @Aaron makes IDL sound much less flexible then it really is. The majority of IDL development came out of the Physics and Astronomy communities. There is robust support for mathematical and statistical programming. If bundled with ENVI, you have all the library calls (functions) available in ENVI including support for spatial vector objects. There are also a large number of functions and models developed by the user community. One advantage to learning IDL is that it will make you marketable in "analytic" remote sensing shops.

Also, do not forget that ERDAS has a scripting language (EML) that is quite good and easy to learn. EML is the backbone of the graphic modeler and gmd's are just packaged EML scripts that sit under the graphic modeler interface. The advantage of using EML directly is that you can use for/while loops and have access to more ERDAS functionality in a scripting language.

MATLAB is also very good for matrix processing and there are open source versions (e.g., Octave) that have exactly the same syntax with similar benchmarks. This is a highly flexible language with considerable power. It is one of the preferred language for applied mathematics and engineering.

The Python alternatives NumPy and SciPy are flexible but not as optimized as IDL and MATLAB. As such, you need to deal with addressing space and speed when working with large arrays. One huge advantage of Python are the additional libraries for performing a variety of analytical tasks. There are packages for remote sensing, nonparametric statistics, bindings to spatial classes (e.g. GDAL, LibLAS) to name just some of the added functionality available through packages.

This brings us to R. I am primarily a spatial statistician so, this is my everyday language. The number of available packages is staggering which, in turn, provides access to cutting edge cross-discipline statistical methodologies. However, I have to say that it is very cumbersome when dealing with large data problems. The spatial classes are getting much better and because of the raster package providing the ability to hold large data out of memory I am now able to implement some fairly complex statistical models utilizing large raster arrays. But still, R is slow when dealing with large memory problems. The BigMatrix package allows for writing and processing huge arrays from disk but the coding overhead is not insignificant There are also bindings to GDAL and GIS software (e.g., GRASS, SAGA) that allow spatial object processing to occur outside of R in a GIS specific software, which is how I interact with GIS software these days. This allows me to leverage functionality across multiple software without leaving R.

So, now that the software cheerleading is out of the way, my recommendation is "yes to all of the above options". Programming is a skill that, once learned, is easily applied to other languages. There are striking similarities between C++, R, IDL and Python. Aside from some coding idiocentricities, what one must learn are the available functions to implement a given model/task. Once this is done it is just a matter of syntax that implements common coding structures.

Sometimes there are things that just work better in a different software or language. I occasionally write code in FORTRAN or C++ because it is just the best choice for a given task. It is a matter of adaptability. You may want to start with Python because, as a scripting language, it can be applied to numerous tasks it also provides availability of packages for specialized analysis, has a number of free online resources and is somewhat easy to learn.

share|improve this answer
    
I upvoted this not only because it's well written and responsive but also because I have had similar experiences (including the occasional foray back into Fortran :-) and draw similar conclusions about these languages and application environments. –  whuber Feb 4 at 23:06
    
+1 A good summary of the available tools out there. Thanks for mentioning EML. From a scripting perspective, EML is a bit clunky compared to Python (IMOP), although very handy if Erdas is your RS GUI of choice. Unfortunately, there is not a unified language that brings the best from GIS and RS. I absolutely agree that each person need to use the best available method and have a variety of languages at their disposal. A one-language RS specialist is rare in the field, I believe. –  Aaron Feb 5 at 0:57
    
I agree that starting with Python sounds like my best bet, given the fact that it is open source and that there are many online resources available. I do have access to ENVI, but for my current research, I can manage without knowing IDL. I am also studying spatial statistics, so R will also be important. @Aaron seems to be right - RS specialists must be multilingual! Thanks again for the detailed response. This is really a huge help for someone just starting out in the field. –  Emily Feb 5 at 15:39
    
@Emily, for spatial statistics in Python take a look at the PySAL package (geodacenter.asu.edu/pysal). There is a book by Kenneth Bowman, "An Introduction to Programming with IDL" that is a quite good general introduction. I think that you would be surprised how far you would get by just working through this one book. As I mentioned, much of the syntax and coding structure are similar between the languages mentioned so, no wasted time. Since you are working with ENVI some basic knowledge of IDL would be helpful in your research. It is not all or nothing with a given language. –  Jeffrey Evans Feb 5 at 15:54
    
this post is a good summary -- an addition from my experience: Considering the high price of ArcGis, Envi, Matlab and other tools, I prefer OpenSource, which is free. For me a combination of Python / gdal and QuantumGIS works perfectly. Others at my workplace use Matlab (but also very expensive). In my surroundings, R seems to be mostly used by biologists for some reason. –  Max Mar 5 at 7:10
add comment

From a remote sensing perspective, the main benefit of IDL is that it extends the capability of ENVI similar to how the Python arcpy site-package extends the functionality of ArcGIS. If you will not have access to the ENVI platform, consider learning a different programming language. Additionally IDL is a commercial product whereas Python is open-source and has a huge support base.

From a practical perspective, Python, R (open-source) and MATLAB (commercial) are the most important languages for my day-to-day remote sensing based work. I use MATLAB for much of the digital image processing, Python for more GIS related tasks and R for graphics/analytical purposes.

Finally, if I had to focus all of my efforts on one language, I would choose to learn Python mainly because Python functionality is much more suited to GIS-related processing in addition to RS based functionality. In other words, Python is a jack-of-all-trades whereas IDL is not. Besides, NASA uses Python!

share|improve this answer
1  
There are many modules within python, like pyh5 and numpy/scipy. There are also larger libraries like OSSIM, specifically for image processing. –  Roland Feb 4 at 22:24
1  
+1 on python. It's a general purpose language, and if you need to use tools that may fall 'out of the box' withing GIS scripting, python can do it. –  kyle Feb 5 at 5:14
    
Thanks guys, sounds like I'll start working on Python and expand to other languages once I have that one down. Many thanks for your help. –  Emily Feb 5 at 15:41
    
Don't forget about Rasterio: github.com/mapbox/rasterio a new library for rasters for Python. –  alexgleith Feb 17 at 21:43
add comment

it really depends on packages you hope to use in remote sensing (image analysis). ArcGIS (ESRI) is not a remote sensing package. If you want to use open source packages I would agree that Python and R are great languages. I would also consider C++ and C, so you can dive deeper into some of the libraries (ie: GDAL). If you want to stick with commercial off the shelf (COTS) packages, then you will want to look more into the C languages (C, C++, and C#). Happy coding.

share|improve this answer
add comment

I strongly suggest learning basic computer science theory instead of focusing on one procedural language. Acquiring a foundation in CS theory would allow you to use programming languages interchangeably. On a day-to-day basis I use two to three languages to write code (Mostly Matlab, R, Python), and in the last month I've also written code in VB, BATCH, and EASE (PCI Focus).

This is not only important to be able to easily learn multiple languages, but to avoid making basic mistakes.

A few recommended topics are:

  • data types, memory usage
  • conditions
  • iteration
  • pattern matching
  • procedural paradigm, modularity

Also, if you're having issues writing code take a step back and write pseudocode. Basically write step-by-step the logic behind your code and what you want it to accomplish.

If you're a student I recommend taking first and second years comp sci courses.

Cheers.

share|improve this answer
add comment

I think this is worth a separate answer: An absolutely great page for learning on how to use Python for Remote Sensing is this one, lecture notes being a great tutorial: http://www.gis.usu.edu/~chrisg/python/2009/

For me, a combination of Python and QuantumGIS solves all my Remote Sensing and GIS needs.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.