I want to analyse a lot of satellite imagery at once.
May 26, 2013 11:17 AM   Subscribe

I want to analyse a whole bunch of satellite imagery at the same time, and I'm not sure my usual tools (GDAL, R, Python) are adequate for the job.

Specifically, I would like to use a time series stack of georeferenced raster earth observation images (e.g., MODIS) to track pixel-level changes over time. I would like to track changes using all possible detections of an area from overlapping raster imagery instead of comparing only those raster scenes that overlap entirely (e.g., using overlapping MODIS tiles to track changes of the same area). I want to detect changes using several indicators including the changes between the first and last image in the time series and changes between each image in the time series. For a given area on the ground, I would like to output a time series of raster values as recorded in every available image.

I have a few months to learn some new skills (or brush up on old ones) to prepare for this. The options I'm considering are software packages (MATLAB or Mathematica) or a lower-level programming language that could perform the operation faster than the tools I've used in the past.
posted by stinker to Computers & Internet (7 answers total) 5 users marked this as a favorite
 
Hi, this sounds like excellent nerd fun! and is similar to what I was doing for my thesis research as a geography grad student back in the day. Dunno about your budget, but what about Idrisi? If you're still a student or could afford to register as a student for a semester, I think you can still get a student license of Idrisi for ~$600. Their Land Change Modeler module might be just the thing for you. http://clarklabs.org/products/Land-Change-Modeler-Overview.cfm

Another option to consider: is there a college nearby with an ENVI license? What about ENVI w/ IDL programming? I was investigating hyperspectral unmixing in ENVI for a bit and was pleased with the data I obtained using that method.

Good luck with your research. If you want to bounce some ideas around, feel free to MeMail me.
posted by cardinality at 11:34 AM on May 26, 2013 [1 favorite]


Do you have the imagery already, or is acquiring it part of your project?
posted by one_bean at 11:35 AM on May 26, 2013


You model it in MATLAB or whatever. Once you have the math and algorithms worked out, if you need to, you port it to a higher performance environment.
posted by rr at 1:15 PM on May 26, 2013


Response by poster: I have the imagery already, and I have an ENVI license, so it could be done in IDL. rr, what higher performance environment would one use if the math and algorithms were developed in MATLAB?
posted by stinker at 2:04 PM on May 26, 2013


You would port to C++ (or, depending on your algorithms, GPU).
posted by rr at 2:06 PM on May 26, 2013


I do stuff similar to this in ENVI/IDL, too. IDL an array programming language so it can handle a huge "time cube" pretty quickly, and pixel vector through time once you've made the series is practically trivial. ENVI occasionally crashes on me, but it's nearly never compared to the ArcGIS GUI, and I have yet to learn the big data libraries in R so that perhaps I need never again watch a moderately-sized image loaded in R bring my entire OS to its knees. The syntax should be easy enough to pick up for what you need and I have had many, many fewer crashes and slowdown in ENVI than ArcGIS. I usually lean on the ENVI part to view imagery, do common image processing task, keep track of the georeferencing, and read/write images with headers, but do any custom geocomputation using IDL functions. I typically move into R for stats and plots because I already know how to do them nicely there and there are way more cool libraries and support. One major pain about IDL, especially if you're about where I am with scripting, is that many fewer people use it compared to R or Python because it's proprietary and only popular in a few fields of study. So if you have a question, a quick Google search is less likely to turn up an easy answer for beginners or ready-to-go line of code, and you can lose time to some lonely slogs through the documentation. Feel free to MeMail me :). I haven't used Matlab much at all so it's tough for me to compare, though I've seen someone use the TIMESAT package for some seasonal time series and that may or may not interest you.

If I understand what you're saying correctly, I think you might need to get all your imagery for the time series in a common geographic extent in order to deal with it effectively, which might mean a lot of tangling with NoData values (I found learning to deal with these a bit of a nuisance in IDL). It's entirely possible that I'm missing something, but I've found it much harder than I would think it should be to compare or fuse two different-sized rasters with common geographic extent in ENVI.
posted by zizania at 6:44 PM on May 26, 2013 [1 favorite]


For what it is worth, this sounds like the sort of thing that parallelizes well. Do you already know how to do what you want to do for a small area? If so, look for ways to use the same tools across multiple machines.

Algorithmic and implementation improvements are all well and good, but compute time is generally cheaper than dev time, and learning how to break up an analysis to run across a grid or cluster is going to be a broadly applicable technique.
posted by Good Brain at 10:48 PM on May 27, 2013


« Older Accidental penpals   |   When to untie the social knots Newer »
This thread is closed to new comments.