r.watershed mods

James,

For each cell in an accumulation map, my client wants to know how much
came from each landuse in the watershed. Say we have 3 landuses: A,
B, C. Then in r.mapcalc parlance,
   accumulation_map=A+B+C
Has anyone done something like this? It would require adding
an additional command line option (landuse=) and would create more
(potentially a large number of) output files (depending upon
how many landuses are present).

A simple shell script could do the job.
Assuming the landuse map has categories from 1 to 10, the script would be:
***********cut here******************
#!/bin/csh -f

set i = 1
while ( $i < 11 )
  r.mapcalc "Category$i = if( landuse == $i)"
  r.watershed elev=dem.name flow=Category$i accumulation=Accum$i
  @ i++
end

END:
***********cut here******************
You will end up with 10 maps: Accum1, Accum2,...,Accum10 where each cell
contains the number of cells upstream and including that cell for that
category. Add a few bells and whisles, you got yourself a program.

BTW, the 3.1+ interactive version of r.watershed can collect basin statistics
based on the threshold size for any number of categorical or continuous
maps, but the output is ASCII text. I'm not sure that version still exists.
_________________________________________________________________________
Charles Ehlschlaeger e-mail : chuck@geog.ucsb.edu
Nat. Centr for Geographic Information and Analysis
3510 Phelps Hall Phone : 805-893-8652
University of California Fax : 805-893-8617
Santa Barbara, CA 93106

The Information Superhighway is really an acronym for:

"Interactive Network For Organizing, Retrieving, Manipulating, Accessing,
And Transferring Information On National Systems, Unleasing Practically
Every Rebellious Human Intelligence, Gratifying Hackers, Wiseacres, And
Yahoos."
_________________________________________________________________________