[GRASSLIST:10638] Re: ARC FLOWDIRECTION vs GRASS

Shaun Walbridge walbridge at nceas.ucsb.edu
Tue Feb 28 21:03:53 EST 2006


An additional complicating factor in flow direction calculations is the 
processing of the DEM -- that is, in general you will perform a fill 
operation to fill local pits in the dataset.  The implementation of fill 
differs, and can cause drastically different flow direction generation.

That said, ARC uses a single-flow D8 algorithm, with direction encoded 
as a binary angle (1,2...128).  The algorithm is described  in the ESRI 
help documentation [1].  In the case of more than one steepest neighbor, 
it generates a lookup table for the most likely direction.  In flat 
areas, a sink is defined.  If sinks are left unfilled, they stop the 
flow of water, and water is not routed beyond these locations. The cited 
source for the implementation of FLOWDIRECTION is [2] [3], and also [4].

 From my uses of various flow routing algorithms, I've found the ARC 
implementation has a cardinal direction bias, and this is documented by 
others [5].  I'd guess that with some small changes to r.watershed 
following the rules set forth in the help documentation [1], you can 
probably get it to faithfully emulate the ARC flow direction.  In 
general, flow direction is an idealization which is a fairly blunt tool 
for measuring the nature of flow over a surface, and some differences 
between implementations should be expected.

1. 
http://webhelp.esri.com/arcgisdesktop/9.1/body.cfm?tocVisable=0&ID=2951&TopicName=flow%20direction
2. http://edna.usgs.gov/Edna/pubs/extractingtopographicstructure1.pdf
3. Jenson S. K. and J. O. Domingue. 1988. Extracting Topographic 
Structure from Digital Elevation Data for Geographic Information System 
Analysis, Photogrammetric Engineering and Remote Sensing. Vol. 54, No. 
11, November 1988, pp. 1593-1600.
4. Greenlee D. D. 1987. Raster and Vector Processing for Scanned 
Linework, Photogrammetric Engineering and Remote Sensing. Vol. 53, No. 
10, October 1987, pp. 1383-1387.
5. http://www.crwr.utexas.edu/reports/2000/rpt00-1.shtml (pages 35-38)

- Shaun Walbridge

Laura Toma wrote:

> It is hard to produce identical outputs for single-flow-direction  
> models, because of the cases when a choice must be made. For e.g., if  
> there is more than one steepest downslope neighbors, or there is none  
> (flat areas).  I believe these choices are not be documented  
> (proprietary?) for Arc.
>
> -Laura
>
> On Feb 27, 2006, at 9:48 PM, Dylan Beaudette wrote:
>
>> On Monday 27 February 2006 05:31 pm, Jonathan Greenberg wrote:
>>
>>> I'm trying to replicate preparation of data for the DHSVM hydro  
>>> model in
>>> GRASS following an AML script, and I'm a bit confused why every GRASS
>>> module with flow direction computation produces a different output  
>>> than the
>>> ARC one -- they even differ between themselves (e.g. r.watershed and
>>> r.terraflow). Does anyone know of a flow direction computation that
>>> produces the EXACT same outputs as ARC?  I'm not "judging" which  
>>> one is
>>> better, I'm just trying to follow as closely as possible the first  
>>> time
>>> around the "idealized" algorithm.
>>>
>>> --j
>>>
>>>
>>
>>
>> Good questions -- tough answers. I would be sceptical of suggesting  
>> that the
>> Arc-derived output is any better... but to the real subject:
>>
>> Can you provide more information on the "type" of flow model used  by 
>> the Arc
>> AML script? i.e. is it using D4,D8,Rho8,FRho8,DEMON,D-INF flow  
>> calculation?
>>
>> note that D4,D8, and Rho8 are SFD (single input flow direction -  single
>> output)
>> FD8,FRho8 are MFD (multiple input flow direction - single output)
>> DEMON and D-INF are similar in many ways, but not identical  
>> (multiple input
>> multiple output?) [1]
>>
>> Each one of these different treatments of adjacent cells will  
>> influence the
>> output flow map/
>>
>> Some examples in GRASS see man pages for each command
>>
>> 1. simplest case of the D8 flow direction, stored in new raster  
>> dir_d8 :
>> r.fill.dir in=elev_meters elev=e_filled direction=dir_d8
>>
>> note that direction can be in the form of 0-360 or 1-8
>>
>> 2. example of the D-INF algorithm (vector output stored in new  
>> vector flow)
>> r.flow elevin=e_filled aspin=aspect flout=flow
>>
>> 3. example of MFD aka FRho8 :
>> r.terraflow....
>>
>> note that the direction output will be from 0-255
>>
>> [1] Wilson and Gallant. Terrain Analysis. 2000
>>
>>
>> -- 
>> Dylan Beaudette
>> Soils and Biogeochemistry Graduate Group
>> University of California at Davis
>> 530.754.7341
>>
>>
>
>




More information about the grass-user mailing list