Hi Helena, I have come to the same problem and solved it with ugly and very specific shell scripts. There is most certainly a better way within GRASS and no doubt you can code it much better in Shell, but anyway, this may get you going somehow.
Code snippet: MAP=$1 g.region rast=$MAP max_cats=9 file=true_percentages.txt rm $file tot=$(r.univar $MAP | grep "^n: " | awk '{print $2}') r.stats -cn $MAP > stats.txt cats=1 while [ $cats -le $max_cats ]; do ncat="`head -$cats stats.txt | tail -1 | awk '{print $2}'`" cat="`head -$cats stats.txt | tail -1 | awk '{print $1}'`" perc="`echo $tot $ncat | awk '{printf("%.5f", $2 / $1 * 100);}'`" echo $cat $perc >> $file cats="$(expr $cats + 1)" done I wanted everything in text files, so I generated these stats.txt and true_percentages.txt. The idea of the script is to use the actual cell count given by r.stats -cn and divide it by the total count given by r.univar. Note that this script is very specific and only work for categories that are incremented by 1. In my case, they go from 1 to 9. How brave I am to publicize such an ugly script, huh? :) The result sums up to 1 at least. Just give the name of the categorical map as input. Hope it helps somehow. Marcello. On Tue, Nov 15, 2011 at 9:36 AM, Helena Herrera <helenaherrera1...@gmail.com > wrote: > Greetings > > I want to calculte % of surface in a raster map for each Integer class > value. The thing is that I'm, using r.stats but the sum % values is always > much more (104 or 102 or 105). Is there any other (more precised) method to > calculate this ? > THanks > Helena > > _______________________________________________ > grass-user mailing list > grass-user@lists.osgeo.org > http://lists.osgeo.org/mailman/listinfo/grass-user > >
_______________________________________________ grass-user mailing list grass-user@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-user