[GRASS-user] Re: stream network from DEM based on topographic curvature

Xiaoyan Li xlia at gmu.edu
Thu Mar 1 15:25:35 EST 2007


Hi, Michael

> > In ArcInfo, If DEM data is g, do the following:
> > /*get flow direction, gfdir is the flowdirection grid
> > gfdir = flowdirection(g)
> 
> =aspect (r.slope.aspect or r.param.scale or calculated from r.mapcalc)
> 
> > /*get curvature, gcurv is the curvature grid
> > gcurv = curvature(g)
> 
> =profile curvature (r.slope.aspect, or r.param.scale)
>  
> > /*threshold curvature, gcthresh is thresholded grid of curvature, cells with
> > curvature > 0.03 will be set 1, otherwise will be set to nodata. here using
> > 0.03 as an example
> > gcthresh = con(gcurv > 0.03, 1)
> 
> do in r.mapcalc, using curvature map from r.slope.aspect/r.param.scale
>  
> > /*the above grid is a 1 or nodata grid that should represent the streams but
> > may be broken segment, to connect them, do the following
> > gfacc = flowaccumulation(gfdir,gcthresh)
> 
> Multiple ways of getting flow accumulation (r.terraflow, r.flow,
> r.watershed). Choose your algorithm and optimization parameters 
> depending on your problem.
>  
> > /*set stream grid to 1 on nodata background
> > gstrm = con(gfacc > 10, 1)
> 
> I'm not sure what the con() function is in this statement. Probably you need
> an r.mapcalc statement here.
> 
> > Is there any other command to calculate flowaccumulation in GRASS which
> > function is the same as FLOWACCUMULATION in ArcInfo?
> > FLOWACCUMULATION(<dir_grid>, {weight_grid})
> 
> As I indicated above, there are multiple algorithms for calculating flow
> accumulation. They are well-documented (as opposed to at least some of the
> algorithms in Arc*).
> 
> r.watershed also will automatically generate a stream network for you as one
> of its output options.

So there are three algorithms(r.watershed, r.terraflow, r.flow) for calculating flow accumulation. The question is how to transfer two parameters "flow direction" and "thresholded grid of curvature" (gfdir and gcthresh) when using one of them, for example r.watershed?
Or there are other algorithms except above?
I had tried and succeeded extracting stream network from DEM using above three algorithms. However, someone ask me help derive stream network based on topographic curvature just like what he had implemented in ArcInfo.  

thanks!

> >> ------------------------------
> >> Date: Mon, 26 Feb 2007 19:59:05 -0800
> >> From: Dylan Beaudette <dylan.beaudette at gmail.com>
> >> Subject: [GRASS-user] Re: stream network from DEM
> >> To: Xiaoyan Li <xlia at gmu.edu>, grassuser at grass.itc.it
> >> Message-ID: <200702261959.05473.dylan.beaudette at gmail.com>
> >> Content-Type: text/plain;  charset="iso-8859-1"
> >> 
> >> On Sunday 25 February 2007 07:38, Xiaoyan Li wrote:
> >>> hi,Dylan,
> >>> 
> >>> I searched the following discusses about flow accumulation calculations on
> >>> Internet. http://grass.itc.it/pipermail/grassuser/2006-May/034150.html
> >>> http://grass.itc.it/pipermail/grassuser/2006-February/032744.html
> >> 
> >> Hi!
> >> Apologies for the late reply. Those messages should have some good
> >> hints on calculating flow accumulation.
> >> 
> >>> Do you think it is possible to do the same thing in GRASS asextracting stream network
> >>> via detection of curvatures from DEM?
> >> 
> >> It might be, but I am not the one to tell you how to do it. You
> >> might have to contact some of the developers like Helena for the specifics.
> >> 
> >>> I tried to do the same using following commands:
> >>> Filling DEM:      r.fill.dir
> >>> Calculating tangential curvature:      r.slope.aspect
> >>> Thresholding tangential curvature surface:   r.mapcalc (?guess)
> >>> Thinning the result grid to get network segments: r.thin
> >>> Run flowaccumulation function with network segments as weight to
> >>> connect stream segments:    r.watershed or r.flow or r.terraflow
> >>> Weight to connect stream segments?     r.mapcalc (?guess)
> >> 
> >> Seems like you are on the right track, but again I am not a
> >> hydrologist and do not have a lot of time to investigate further.
> >> 
> >>> I don't know about hydrology. Someone ask me help to implement this in
> >>> GRASS. I am in a bit of quandary here:
> >>> How to threshold tangential curvature surface?
> >>> How to weight to connect stream segments?
> >>> 
> >> 
> >> Try asking again, but with a more concise description of a part of
> >> the problem. Simple questions -- easier for more to answer.
> >> 
> >> Cheers,
> >> 
> >> -- 
> >> Dylan Beaudette
> >> Soils and Biogeochemistry Graduate Group
> >> University of California at Davis
> >> 530.754.7341




More information about the grass-user mailing list