On 23/05/13 11:04, Rainer M. Krug wrote:
Moritz Lennert<[email protected]> writes:
On 23/05/13 10:26, Rainer M Krug wrote:
Hi
I have two raster layers
,----
| dc: CELL, 1, ..., 7, NULL
| ageClass: CELL, 1,2,3,NULL
`----
And I want to create a third one, depending on the value in a lookup
table. dc corresponds to the row, ageClass to the column,
The lookup table looks as follow:
,----
| seedling young adult
| dc1 425000 87500 37500
| dc2 270000 55000 23500
| dc3 127500 26000 11250
| dc4 32500 7100 3200
| dc5 5550 1220 500
| dc6 605 132 55
| dc7 56 12 6
`----
Now I want to have something like (using r.mapcalc as an example)
,----
| r.mapcalc expression = "result = lookupTable[col=ageClass, row=dc]"
`----
and e.g. for one cell
,----
| ageClass = 3
| dc = 5
| ==>
| result = 500
`----
I haven't found anything like this in GRASS.
I could use MASKS and then r.reclass(), or generate dynamically a
complex if() construct, but both options sound a little bit
awkward to me.
I am scripting GRASS from R, so there is always the option of doing it
in R, but there is the issue of reading the data into R and writing it
back to GRASS, which takes time. As I am doing this in a simulation
which runs several times, this is not an unimportant issue.
Is there better way of achieving this?
I don't see a possibility to include the lookup table into r.mapcalc,
Me neither - that was just the easies to show what I want to do.
but anyway, IIUC, the result you are looking for is not a raster map,
but a numerical value, or ?
No - the lookup would be for each cell, therefore resulting in a CELL
raster map.
My best first guess is:
r.stats -c in=dc,ageClass
possibly combined with a little awk to do the lookup:
r.stats -c in=dc,ageClass | awk '{if($1==5&& $2==3) print $3}'
Or, if the maps are heavy, feed the data resulting from the r.stats
call into a new db table and then use sql queries to do the lookup. Or
feed the results of r.stats into an R dataframe.
Hmm - sounds interesting, but also for other purposes. But as the result
will be a raster map, I don't think this approach is usable here (unless
I can feed the numbers back into a raster map, i.e. the inverse of
r.stats -c)
r.cross + r.reclass ?
moritz
_______________________________________________
grass-user mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-user