[GRASS-user] Time and slope: a hiking problem

Hello.

I want to estimate off-path travelling with Tobler’s hiking function. This function says that, for example, in a slope value of 10º the travelling velocity is 3Km/hr and in a slope value of -10º the velocity is 4km/hr. This generates a friction surface, in which the cost value is the cost of traversing that cell in Km/hr. Then, through r.mapcalc I divide the distance (cell resolution) by this friction surface to generate another friction surface with the corresponding time values.
The aim of all this is to generate an accumulative cost surface (using r.cost with –k flag) from a given point and then get the isochrones (of 1 hour, 2 hours, etc.).
The problem is that the function needs negative slope values if the hiker goes downhill or positive values is the hiker goes uphill. Has you might imagine, If the slope surface only have positive values is the same that hiker would always go uphill and never downhill!
How can Grass resolve this?

Miguel.

The way I'd do it is calculate the aspect (r.slope.aspect). From the manual:

--------------------
The aspect categories represent the number degrees of east and they
increase counterclockwise: 90deg is North, 180 is West, 270 is South
360 is East, and the aspect value 0 is used to indicate undefined
aspect in flat areas with slope=0.
--------------------

Then you just have to know the general orientation of the trail and
you can come up with a rule in r.mapcalc and multiply all uphill areas
of the trail by -1. Of course, if it's a circular trail or a very
curvy one, then this might not work...

Cheers
Daniel

On 2/1/07, Miguel Correia <miguellage.rc@gmail.com> wrote:

Hello.

I want to estimate off-path travelling with Tobler's hiking function. This
function says that, for example, in a slope value of 10º the travelling
velocity is 3Km/hr and in a slope value of -10º the velocity is 4km/hr. This
generates a friction surface, in which the cost value is the cost of
traversing that cell in Km/hr. Then, through r.mapcalc I divide the distance
(cell resolution) by this friction surface to generate another friction
surface with the corresponding time values.
The aim of all this is to generate an accumulative cost surface (using
r.cost with –k flag) from a given point and then get the isochrones (of 1
hour, 2 hours, etc.).
The problem is that the function needs negative slope values if the hiker
goes downhill or positive values is the hiker goes uphill. Has you might
imagine, If the slope surface only have positive values is the same that
hiker would always go uphill and never downhill!
How can Grass resolve this?

Miguel.
_______________________________________________
grassuser mailing list
grassuser@grass.itc.it
http://grass.itc.it/mailman/listinfo/grassuser

Hi Daniel.
You say

“Then you just have to know the general orientation of the trail and
you can come up with a rule in r.mapcalc and multiply all uphill areas
of the trail by -1”

It seams to me that you might be right, or at least what you say makes sense. But I have some doubts:
How can I get to know this general orientation of the trail?
Could you tell me more about that r.mapcalc rule to multiply all uphill areas of the trail by -1?

The only thing that I don’t understand is that if you multiply all uphill areas by -1, than it’s like having all hills downhill, and the problem is that when a hiker goes uphill there must be a positive slope value, and when the hiker goes downhill I must have negative slope values.

Thanks a lot!

2007/2/1, Daniel Victoria <daniel.victoria@gmail.com>:

The way I’d do it is calculate the aspect (r.slope.aspect). From the manual:


The aspect categories represent the number degrees of east and they
increase counterclockwise: 90deg is North, 180 is West, 270 is South
360 is East, and the aspect value 0 is used to indicate undefined
aspect in flat areas with slope=0.

Then you just have to know the general orientation of the trail and
you can come up with a rule in r.mapcalc and multiply all uphill areas
of the trail by -1. Of course, if it’s a circular trail or a very
curvy one, then this might not work…

Cheers
Daniel

On 2/1/07, Miguel Correia <miguellage.rc@gmail.com> wrote:

Hello.

I want to estimate off-path travelling with Tobler’s hiking function. This
function says that, for example, in a slope value of 10º the travelling
velocity is 3Km/hr and in a slope value of -10º the velocity is 4km/hr. This
generates a friction surface, in which the cost value is the cost of
traversing that cell in Km/hr. Then, through r.mapcalc I divide the distance
(cell resolution) by this friction surface to generate another friction
surface with the corresponding time values.
The aim of all this is to generate an accumulative cost surface (using
r.cost with –k flag) from a given point and then get the isochrones (of 1
hour, 2 hours, etc.).
The problem is that the function needs negative slope values if the hiker
goes downhill or positive values is the hiker goes uphill. Has you might
imagine, If the slope surface only have positive values is the same that
hiker would always go uphill and never downhill!
How can Grass resolve this?

Miguel.


grassuser mailing list
grassuser@grass.itc.it
http://grass.itc.it/mailman/listinfo/grassuser

Ok, let's say your trail goes from south to north. From the
r.slope.aspect manual we have that:
90deg is North (slope facing north) - I might be confused here,
someone shed some ligth
180 is West
270 is South
360 is East

So, for a trail going north, when you face a slope that has a 90
degree aspect, it means you will be going uphill... Or, for that
matter, any slope that is higher 0 degrees (0 is flat surface) and
equal or less then 180 degrees will be an uphill. Actually, 180 degree
aspect (W) and 360 (E) is a trail going on a "slanted" surface. A
better approach would be any aspect between 45 (NE) and 135 (NW) would
be uphill, fro this S-N trail and the rest, downhill...

            90
       ___N___
       | |
180 W E 360
       |__ S__ |
           270

Then, in r.mapcalc you would do:

new_slope = if(aspect > 45 && aspect < 135, slope, slope*-1)

the if statement is like this: if(condition, value if true, value if false)
I might have confused the positive and negative for uphill and
downhill on my previous email

This is just a general approach. There might be a way to convert your
trail to a vector path, break it down to smaller segments and
calculate the orientation for each segment. Then compare the vector
orientation to the slope aspect. But I have no idea how to do that...

Cheers
Daniel

On 2/1/07, Miguel Correia <miguellage.rc@gmail.com> wrote:

Hi Daniel.
You say

"Then you just have to know the general orientation of the trail and
you can come up with a rule in r.mapcalc and multiply all uphill areas
of the trail by -1"

It seams to me that you might be right, or at least what you say makes
sense. But I have some doubts:
How can I get to know this general orientation of the trail?
Could you tell me more about that r.mapcalc rule to multiply all uphill
areas of the trail by -1?

The only thing that I don't understand is that if you multiply all uphill
areas by -1, than it's like having all hills downhill, and the problem is
that when a hiker goes uphill there must be a positive slope value, and when
the hiker goes downhill I must have negative slope values.

Thanks a lot!

2007/2/1, Daniel Victoria <daniel.victoria@gmail.com>:
> The way I'd do it is calculate the aspect (r.slope.aspect). From the
manual:
>
> --------------------
> The aspect categories represent the number degrees of east and they
> increase counterclockwise: 90deg is North, 180 is West, 270 is South
> 360 is East, and the aspect value 0 is used to indicate undefined
> aspect in flat areas with slope=0.
> --------------------
>
> Then you just have to know the general orientation of the trail and
> you can come up with a rule in r.mapcalc and multiply all uphill areas
> of the trail by -1. Of course, if it's a circular trail or a very
> curvy one, then this might not work...
>
> Cheers
> Daniel
>
> On 2/1/07, Miguel Correia <miguellage.rc@gmail.com> wrote:
> > Hello.
> >
> > I want to estimate off-path travelling with Tobler's hiking function.
This
> > function says that, for example, in a slope value of 10º the travelling
> > velocity is 3Km/hr and in a slope value of -10º the velocity is 4km/hr.
This
> > generates a friction surface, in which the cost value is the cost of
> > traversing that cell in Km/hr. Then, through r.mapcalc I divide the
distance
> > (cell resolution) by this friction surface to generate another friction
> > surface with the corresponding time values.
> > The aim of all this is to generate an accumulative cost surface (using
> > r.cost with –k flag) from a given point and then get the isochrones (of
1
> > hour, 2 hours, etc.).
> > The problem is that the function needs negative slope values if the
hiker
> > goes downhill or positive values is the hiker goes uphill. Has you might
> > imagine, If the slope surface only have positive values is the same that
> > hiker would always go uphill and never downhill!
> > How can Grass resolve this?
> >
> > Miguel.
> > _______________________________________________
> > grassuser mailing list
> > grassuser@grass.itc.it
> > http://grass.itc.it/mailman/listinfo/grassuser
> >
>

On Thursday 01 February 2007 02:28, Miguel Correia wrote:

Hello.

I want to estimate off-path travelling with Tobler's hiking function. This
function says that, for example, in a slope value of 10º the travelling
velocity is 3Km/hr and in a slope value of -10º the velocity is 4km/hr.
This generates a friction surface, in which the cost value is the cost of
traversing that cell in Km/hr. Then, through r.mapcalc I divide the
distance (cell resolution) by this friction surface to generate another
friction surface with the corresponding time values.
The aim of all this is to generate an accumulative cost surface (using
r.cost with –k flag) from a given point and then get the isochrones (of 1
hour, 2 hours, etc.).
The problem is that the function needs negative slope values if the hiker
goes downhill or positive values is the hiker goes uphill. Has you might
imagine, If the slope surface only have positive values is the same that
hiker would always go uphill and never downhill!
How can Grass resolve this?

Miguel.

This might be a good opportunity to modifiy r.walk - with the addition of
Tobler's hiking function. Have a look at the source code, and chat with
Markus for the details.

cheers,

--
Dylan Beaudette
Soils and Biogeochemistry Graduate Group
University of California at Davis
530.754.7341