Showing posts with label IDRISI. Show all posts
Showing posts with label IDRISI. Show all posts

Friday, February 13, 2009

Speaking of software...

That never changes its interface.

Just received an announcement from Clark Labs. They just released the latest incarnation of IDRISI software called Taiga. If you are looking for a low cost Image processing software, or raster based GIS, this should be one that you look at.

Monday, June 9, 2008

Camel's 'R' Us

I am working on creating scripts to create weighted linear combination. Basically duplicating different features in Idrisi so that I can have two models, one in ArcGIS and Idrisi. This is for the "Camel Project." I have a script now that calculates the weights for a pairwise matrix. Once I found a little information on this topic it was fairly easy to create. It is mostly just multiplying the matrix until the differences between the weights calculated from each iteration equals zero. Unfortunately, the python script is dependent on NumPy (Numerical Python), so it isn't as self-contained as I would like. I didn't feel like writing a function to multiply matrices, although I did this in VB.NET. I also am able to calculate the consistency ratio. I would share the script, but I because I am getting paid to do it, it is up to the client.

I also have managed to use Raster Calculator to duplicate the Fuzzy tool in IDRISI. It is a duplicate of the Linear function, and there are two ways to calculate it. One for monotonically increasing, and the other for monotonically decreasing. The formula is for 0 to 255.
Con is a map algebra function that means conditional. Con(test, true, false).

Here is how it works for monotonically decreasing:

INT((Con([RasterToBeScaled] <> 900, 0,( ((900 - [RasterToBeScaled]) * 255) / 900) + 0))) + .5)

Con([RasterToBeScaled] <> 900, 0 if the cell value is greater than 900 give this cell a value of 0. If it is false then calculate the value
( ((900 - [RasterToBeScaled]) * 255) / 900) + 0)))

INT and +.5 rounds the values properly and removes the decimal places.
The range of this example is from 0 to 900, so you need to change those values depending on what your "maximum and minimum" values are going to be. You really divide 900 - [RasterToBeScaled] by the range (max - min raster values). Since my range was 0 to 900 I skipped this and put 900.

If you need this to increase then you have to change some of it around.
INT((Con([RasterToBeScaled] <> 900, 255,( (([RasterToBeScaled] - 0) * 255) / 900) + 0))) + .5)

Now, whatever is less than zero is zero and greater than 900 is 255. Everything in between is calculated using the formula:
( (([RasterToBeScaled] - 0) * 255) / 900) + 0))
So now we subtract the cell value by the lowest value in your range and everything else is the same.

This is similar, but not quite what I was looking for.

Hope that helps...

Tuesday, April 29, 2008

“Trust in Allah, but tie your camel”

I was doing some AJAX today, trying to dynamically load markers from points stored in a geodatabase. Basically, just an XML response formatted specifically for my data, and parsed using Javascript. It works, surprisingly given my programming skills :). Anyway, probably wouldn't have gotten finished if it weren't for FireBug. A handy little Javascript debugger that lets me know when I have errors in my code. I use Visual Web Developer express for ASP.NET programming, and the 2005 version doesn't really have anything like this for Javascript (I think I read version 2008 does). FireBug works with Mozilla Firefox, but I think there is an alternative version for Internet Explorer. Be sure to disable FireBug when not debugging because it will report errors on any website, and slows down Gmail...

So I've started work on another project. I am a little unsure of confidentiality, so I won't list all that are involved. I'm sure the project will be made public, or at least the publication will be. It probably wouldn't be too difficult to guess who this work is for if you are in Australia. I'll be modeling camel management plans...while it is tempting (and easier) to just turn in a set of photographs of myself shooting camels, I'm of course referring to GIS-based models. Since the turn around time on this is pretty quick (2 months!), the model is a fairly simple Multi-Criteria Evaluation. I'm planning on using IDRISI (Andes?) to do this, but in the back of my head I'm thinking of writing a plug in for MapWindow. Two months isn't long, and IDRISI has a number of built-in tools for performing a Multi-Criteria Evaluation, as well processing rasters (distance surfaces, friction surfaces, etc...). The reason I want an open source solution is to create a user interface that could be used by anybody. That way a land manager could come in, and given a set of criteria (most-likely predefined), they could spit out a map showing potential locations for different camel management plans.

As idyllic as camels look in the Australian desert, they aren't native species. They were brought in as pack animals, and in many cases the train routes and road routes actually follow the same route as the old camel trains. Now their population is approaching one million, and they can be quite destructive to infrastructure, and biodiversity (or vice versa). Probably the unique part of this model is it is trying to identify locations for management plans based on a perspective, and also including perspectives in the model. Obviously, when a question is asked it comes from a certain perspective, and to answer that question certain criteria will be relevant. On top of that, there will be a layer that explicitly shows where certain management plans cannot be implemented based on the community, land owner, etc... This will most like be a constraint factor...but also could be a distance surface I suppose...Have to think about that one.

I'll keep you up-to-date on it.