[GRASS-user] Area statistics for categorical maps

Recently, I "discovered" that `r.stats` and `r.report` accept multiple
raster input maps. Which is fantastic!

I am yet to find my "ideal" reporting method
for when involving 3 (or more) raster maps.

- `r.stats` reports _approximate_ percentages that
    refer to the complete extent of the computational region and
    has a CSV frinedly output than `r.report`.

- `r.report`, however, derives percentages that
    refer to the extent of the (preceding input raster map's)
    "super-category", which is useful.

Maybe "fix" `r.stats` to (also) provide
an option to get percentages relative to a "super-category"?

An example:

| 501| | 3.405000| 1362| 4.50|
| |------------------------------------------------|----------|-----|------|
| |1|Urban. . . . . . . . . . . . . . . . . . . . .| 0.820000| 328| 24.08|
| |2|Cropland . . . . . . . . . . . . . . . . . . .| 1.260000| 504| 37.00|
| |3|Woodland and forest. . . . . . . . . . . . . .| 1.325000| 530| 38.91|

and (r.stats' output piped through `column -t`)

501 1 820000.000000 328 1.08%
501 2 1260000.000000 504 1.67%
501 3 1325000.000000 530 1.75%

where:

- 501 is some map's category/pixel value, a map without labeled categories
- the second map's categories 1, 2 and 3 are labeled

- the first fragment comes from an `r.report` output
- the second fragment comes from an `r.stats` output

- km (above) and meters (below) agree
- pixel counts agree
- percentages don't agree, of course

`r.stats` will report these relative percentages by using the
"super-category" as a MASK. Using the first map and the value '501' as a
MASK, the results are:

|501| | 3.520000| 1408|100.00|
| |-------------------------------------------------|----------|-----|------|
| |1|Urban. . . . . . . . . . . . . . . . . . . . . | 0.935000| 374| 26.56|
| |2|Cropland . . . . . . . . . . . . . . . . . . . | 1.260000| 504| 35.80|
| |3|Woodland and forest. . . . . . . . . . . . . . | 1.325000| 530| 37.64|

and

501 1 935000.000000 374 26.64%
501 2 1260000.000000 504 35.90%
501 3 1325000.000000 530 37.75%

The obvious problem is: `r.stats` if CSV friendly but gives
approximations, `r.report` is not CSV friendly but the sum of relative
percentages sum up to 100%.

How do you report areal statistics?

See also: https://trac.osgeo.org/grass/ticket/507

Nikos

* Nikos Alexandris <nik@nikosalexandris.net> [2018-07-29 14:10:39 +0200]:

The obvious problem is: `r.stats` if CSV friendly but gives
approximations, `r.report` is not CSV friendly but the sum of relative
percentages sum up to 100%.

How do you report areal statistics?

See also: https://trac.osgeo.org/grass/ticket/507

If `r.report` is a wrapper around `r.stats`, why aren't percentage
outputs identical, for the same region and maps? Why does `r.report` sum
up to 100% while `r.stats` help reads

    -p Print approximate (total percent may not be 100%) percents

?

Nikos