Maybe r.cross can be of help. It creates a cross product of the category
 variables of a layer, i.e., a map with separate categories for each 
unique combination of the two CLC maps (the category labels gives you 
the combination of input maps for each new category). <br>
<br>
You can use this new map to create a reclass map with the new values 
from your decision matrix. To do this, you could for example follow the 
following steps:<br>
<br>
1) Run r.category to get a list with the categories and category labels 
of the cross product map you just created. You can output this as a text
 file<br>
2) Use a spreadsheet or something like awk to create a textfile with 
three columns, one with the new category, and two with the clc2000 and 
clc2006 categories<br>
3)  Find a way to link the CLC combinations in your text file to the new
 classes given in your decision matrix (use e.g., spreadsheet or 
database)<br>
4) Use this new table to create the reclassification rules you need in 
the next step (again, if you know awk this will probably be very easy, 
but also in R or in a spreadsheet this is easy to do).<br>
5) Create a text file with reclassification rules (see r.reclass how 
these should look like) and use r.reclass to reclassify the map you just
 created with r.cross.<br>
<br>
I guess there must be easier ways. But in any case, these steps are not 
very difficult to implement. And in case you have to repeat this type of
 analysis more often, once you have set up a workflow, it will be easy 
to repeat (especially if you manage to implement all steps as a script).
 <br>
<br><br><br><div class="gmail_quote">On Fri, Jul 22, 2011 at 12:41 PM, Hermann Peifer <span dir="ltr">&lt;<a href="mailto:peifer@gmx.eu" target="_blank">peifer@gmx.eu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hi,<br>
<br>
I have 2 Corine Land Cover (CLC) raster maps, from 2000 and 2006. Both maps have the same extent, the same resolution (100m) and use the same 44 CLC categories. The maps are pretty large: 67 000 cols x 58 000 rows = 3 886 000 000 cells.<br>


<br>
I&#39;d like to categorise the changes between the 2 layers, according to a decision matrix which I pasted below [1]. Row headers indicate the clc2000 category, column headers represent the clc2006 category. I only pasted the &quot;left half&quot; of the table in order to avoid ugly line breaks.<br>


<br>
<br>
Question:<br>
Is there a better (and faster) way than doing this comparison by using r.mapcalc with a (nearly) endless if/else chain [2] ?<br>
<br>
I also noted that in 99+ % of the cases, both maps are NULL or have an identical CLC category, so I wouldn&#39;t need the if/else chain at all. I guess I can use this fact to shortcut the comparison?<br>
<br>
<br>
Thanks in advance, Hermann<br>
(using GRASS 6.4 on 64-bit Debian Linux)<br>
<br>
[1]<br>
<br>
##  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 ..<br>
 1 NA 12 31 32 33 34 35 36 37 13 38 56 56 56 56 56 56 56 56 56 56 56 ..<br>
 2 11 NA 31 32 33 34 35 36 37 13 38 56 56 56 56 56 56 56 56 56 56 56 ..<br>
 3 12 12 NA 32 33 34 35 36 37 13 38 56 56 56 56 56 56 56 56 56 56 56 ..<br>
 4 12 12 31 NA 33 34 35 36 37 13 38 56 56 56 56 56 56 56 56 56 56 56 ..<br>
 5 12 12 31 32 NA 34 35 36 37 13 38 56 56 56 56 56 56 56 56 56 56 56 ..<br>
 6 12 12 31 32 33 NA 35 36 37 13 38 56 56 56 56 56 56 56 56 56 56 56 ..<br>
 7 12 12 31 32 33 34 NA 36 37 13 38 56 56 56 56 56 56 56 56 56 56 56 ..<br>
 8 12 12 31 32 33 34 35 NA 37 13 38 56 56 56 56 56 56 56 56 56 56 56 ..<br>
 9 12 12 31 32 33 34 35 36 NA 13 38 56 56 56 56 56 56 56 56 56 56 56 ..<br>
10 11 11 31 32 33 34 35 36 37 NA 38 56 56 56 56 56 56 56 56 56 56 56 ..<br>
11 11 11 31 32 33 34 35 36 37 13 NA 56 56 56 56 56 56 56 56 56 56 56 ..<br>
12 21 22 31 32 33 34 35 36 37 13 38 NA 45 43 42 42 42 41 42 41 83 61 ..<br>
13 21 22 31 32 33 34 35 36 37 13 38 43 NA 43 42 42 42 41 42 41 83 61 ..<br>
14 21 22 31 32 33 34 35 36 37 13 38 43 43 NA 42 42 42 41 42 41 83 61 ..<br>
15 21 22 31 32 33 34 35 36 37 13 38 45 45 45 NA 44 44 41 45 45 83 61 ..<br>
16 21 22 31 32 33 34 35 36 37 13 38 45 45 45 44 NA 44 <a href="tel:41%2045%2045%2083%2061" value="+14145458361" target="_blank">41 45 45 83 61</a> ..<br>
17 21 22 31 32 33 34 35 36 37 13 38 45 45 45 44 44 NA <a href="tel:41%2045%2045%2083%2061" value="+14145458361" target="_blank">41 45 45 83 61</a> ..<br>
18 21 22 31 32 33 34 35 36 37 13 38 45 45 45 42 42 42 NA 45 45 83 61 ..<br>
19 21 22 31 32 33 34 35 36 37 13 38 45 45 45 42 42 42 41 NA 41 83 61 ..<br>
20 21 22 31 32 33 34 35 36 37 13 38 45 45 45 42 42 42 41 45 NA 83 61 ..<br>
21 21 22 31 32 33 34 35 36 37 13 38 52 52 52 52 52 52 41 52 54 NA 54 ..<br>
22 21 22 31 32 33 34 35 36 37 13 38 45 45 45 42 42 42 41 45 45 83 NA ..<br>
23 21 22 31 32 33 34 35 36 37 13 38 51 51 51 51 51 51 53 51 53 53 53 ..<br>
24 21 22 31 32 33 34 35 36 37 13 38 51 51 51 51 51 51 53 51 53 53 53 ..<br>
25 21 22 31 32 33 34 35 36 37 13 38 51 51 51 51 51 51 53 51 53 53 53 ..<br>
26 21 22 31 32 33 34 35 36 37 13 38 52 52 52 52 52 52 54 52 54 54 54 ..<br>
27 21 22 31 32 33 34 35 36 37 13 38 52 52 52 52 52 52 54 52 54 54 54 ..<br>
28 21 22 31 32 33 34 35 36 37 13 38 52 52 52 52 52 52 54 52 54 54 54 ..<br>
29 21 22 31 32 33 34 35 36 37 13 38 52 52 52 52 52 52 54 52 54 54 54 ..<br>
30 21 22 31 32 33 34 35 36 37 13 38 52 52 52 52 52 52 54 52 54 54 53 ..<br>
31 21 22 31 32 33 34 35 36 37 13 38 52 52 52 52 52 52 54 52 54 54 53 ..<br>
32 21 22 31 32 33 34 35 36 37 13 38 52 52 52 52 52 52 54 52 54 54 53 ..<br>
33 21 22 31 32 33 34 35 36 37 13 38 52 52 52 52 52 52 54 52 54 54 53 ..<br>
34 NA NA NA NA NA NA NA NA NA NA 38 NA NA NA NA NA NA NA NA NA NA NA ..<br>
35 21 22 31 32 33 34 35 36 37 13 38 55 55 55 55 55 55 55 55 55 55 55 ..<br>
36 21 22 31 32 33 34 35 36 37 13 38 55 55 55 55 55 55 55 55 55 55 55 ..<br>
37 21 22 31 32 33 34 35 36 37 13 38 55 55 55 55 55 55 55 55 55 55 55 ..<br>
38 21 22 31 32 33 34 35 36 37 13 38 55 55 55 55 55 55 55 55 55 55 55 ..<br>
39 21 22 31 32 33 34 35 36 37 13 38 55 55 55 55 55 55 55 55 55 55 55 ..<br>
40 21 22 31 32 33 34 35 36 37 13 38 55 55 55 55 55 55 55 55 55 55 55 ..<br>
41 21 22 31 32 33 34 35 36 37 13 38 55 55 55 55 55 55 55 55 55 55 55 ..<br>
42 21 22 31 32 33 34 35 36 37 13 38 55 55 55 55 55 55 55 55 55 55 55 ..<br>
43 21 22 31 32 33 34 35 36 37 13 38 55 55 55 55 55 55 55 55 55 55 55 ..<br>
44 21 22 31 32 33 34 35 36 37 13 38 55 55 55 55 55 55 55 55 55 55 55 ..<br>
<br>
<br>
[2]<br>
<br>
change = \<br>
clc2000 == 1 &amp;&amp; clc2006 == 2 ? 12 : \<br>
clc2000 == 1 &amp;&amp; clc2006 == 3 ? 31 : \<br>
clc2000 == 1 &amp;&amp; clc2006 == 4 ? 32 : \<br>
clc2000 == 1 &amp;&amp; clc2006 == 5 ? 33 : \<br>
clc2000 == 1 &amp;&amp; clc2006 == 6 ? 34 : \<br>
clc2000 == 1 &amp;&amp; clc2006 == 7 ? 35 : \<br>
clc2000 == 1 &amp;&amp; clc2006 == 8 ? 36 : \<br>
clc2000 == 1 &amp;&amp; clc2006 == 9 ? 37 : \<br>
clc2000 == 1 &amp;&amp; clc2006 == 10 ? 13 : \<br>
<br>
... (snip away some 1700 if/else rules)<br>
<br>
clc2000 == 44 &amp;&amp; clc2006 == 30 ? 89 : \<br>
clc2000 == 44 &amp;&amp; clc2006 == 31 ? 89 : \<br>
clc2000 == 44 &amp;&amp; clc2006 == 32 ? 89 : \<br>
clc2000 == 44 &amp;&amp; clc2006 == 35 ? 82 : \<br>
clc2000 == 44 &amp;&amp; clc2006 == 36 ? 82 : \<br>
clc2000 == 44 &amp;&amp; clc2006 == 37 ? 82 : \<br>
clc2000 == 44 &amp;&amp; clc2006 == 38 ? 89 : \<br>
clc2000 == 44 &amp;&amp; clc2006 == 39 ? 89 : \<br>
clc2000 == 44 &amp;&amp; clc2006 == 42 ? 82 : \<br>
clc2000 == 44 &amp;&amp; clc2006 == 43 ? 82 : 0<br>
______________________________<u></u>_________________<br>
grass-user mailing list<br>
<a href="mailto:grass-user@lists.osgeo.org" target="_blank">grass-user@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/grass-user" target="_blank">http://lists.osgeo.org/<u></u>mailman/listinfo/grass-user</a><br>
</blockquote></div><br>