On 16/02/09 15:31, [email protected] wrote:
Hi,

I stumbled over this "funny" behavior of the col() function of
r.mapcalc (GRASS6.2 and GRASS6.4, both on Linux).

According to The Book, col() "returns current col of moving window".

I assume that for each row of a given raster layer col() should
provide the values 1,2,3,4,5, etc. as it travels through the row.

To produce a map of repeating value sequences (for example the
numbers 1 2 3 4 ) the module operator can be used on the
col()-function:

col()  operator result 1      mod 4     = 1 2      mod 4     = 2 3
mod 4     = 3 4      mod 4     = 0 5      mod 4     = 1 6      mod 4
= 2 etc

this approach was put into mapcalc. The "1 + " makes sure that the
sequence  runs from 1-4 not 0 - 3:

r.mapcalc modulo="(1 + ( col() % 4 ) )"

A map was produced in a Spearfish location (col() should operate
independently from the projection).

Here it comes: For some (strange ?)reason, there are "ripples" in the
"1 - 4" sequence.

Instead of going 1234 1234 1234 ad infinitum once in a while a number
is omitted: 1234 1234 234  1234 134 etc.

Has anybody come across this behavior before ? Is this a
feature/good-thing ?

After a little testing I come to the (preliminary) conclusion that this depends on whether the number of cols is divisable by 4, i.e. cols % 4 = 0. If this is not the case, then you don't get the complete sequence. So, it depends on your region setting.

Moritz
_______________________________________________
grass-user mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-user

Reply via email to