NAME
r.walk - Creates a raster map showing the anisotropic cumulative cost of moving between different geographic locations on an input raster map whose cell category values represent cost.
KEYWORDS
raster,
cost surface,
cumulative costs,
cost allocation
SYNOPSIS
r.walk
r.walk --help
r.walk [-knri] elevation=name friction=name output=name [outdir=name] [start_points=name] [stop_points=name] [start_raster=name] [start_coordinates=east,north[,east,north,...]] [stop_coordinates=east,north[,east,north,...]] [max_cost=value] [null_cost=value] [memory=value] [walk_coeff=a,b,c,d] [lambda=float] [slope_factor=float] [--overwrite] [--help] [--verbose] [--quiet] [--ui]
Flags:
- -k
- Use the 'Knight's move'; slower, but more accurate
- -n
- Keep null values in output raster map
- -r
- Start with values in raster map
- -i
- Print info about disk space and memory requirements and exit
- --overwrite
- Allow output files to overwrite existing files
- --help
- Print usage summary
- --verbose
- Verbose module output
- --quiet
- Quiet module output
- --ui
- Force launching GUI dialog
Parameters:
- elevation=name [required]
- Name of input elevation raster map
- friction=name [required]
- Name of input raster map containing friction costs
- output=name [required]
- Name for output raster map to contain walking costs
- outdir=name
- Name for output raster map to contain movement directions
- start_points=name
- Name of starting vector points map
- Or data source for direct OGR access
- stop_points=name
- Name of stopping vector points map
- Or data source for direct OGR access
- start_raster=name
- Name of starting raster points map
- start_coordinates=east,north[,east,north,...]
- Coordinates of starting point(s) (E,N)
- stop_coordinates=east,north[,east,north,...]
- Coordinates of stopping point(s) (E,N)
- max_cost=value
- Maximum cumulative cost
- Default: 0
- null_cost=value
- Cost assigned to null cells. By default, null cells are excluded
- memory=value
- Maximum memory to be used in MB
- Default: 300
- walk_coeff=a,b,c,d
- Coefficients for walking energy formula parameters a,b,c,d
- Default: 0.72,6.0,1.9998,-1.9998
- lambda=float
- Lambda coefficients for combining walking energy and friction cost
- Default: 1.0
- slope_factor=float
- Slope factor determines travel energy cost per height step
- Default: -0.2125
r.walk computes anisotropic cumulative cost of moving between
different geographic locations on an input elevation raster map whose
cell category values represent elevation combined with an input raster
map layer whose cell values represent friction cost.
r.walk outputs 1) a raster map showing the lowest
cumulative cost of moving between each cell and the user-specified
starting points and 2) a second raster map showing the movement
direction to the next cell on the path back to the start point (see
Movement Direction). It uses an input elevation
raster map whose cell category values represent elevation,
combined with a second input raster map whose cell values
represent friction costs.
This function is similar to r.cost,
but in addiction to a friction map, it considers an anisotropic travel
time due to the different walking speed associated with downhill and
uphill movements.
The formula from Aitken 1977/Langmuir 1984 (based on Naismith's rule
for walking times) has been used to estimate the cost parameters of
specific slope intervals:
T= [(a)*(Delta S)] + [(b)*(Delta H uphill)] + [(c)*(Delta H moderate downhill)] + [(d)*(Delta H steep downhill)]
where:
- T is time of movement in seconds,
- Delta S is the distance covered in meters,
- Delta H is the altitude difference in meter.
The a, b, c, d walk_coeff parameters take in account
movement speed in the different conditions and are linked to:
- a: underfoot condition (a=1/walking_speed)
- b: underfoot condition and cost associated to movement uphill
- c: underfoot condition and cost associated to movement moderate downhill
- d: underfoot condition and cost associated to movement steep downhill
It has been proved that moving downhill is favourable up to a specific
slope value threshold, after that it becomes unfavourable. The default
slope value threshold (
slope_factor) is -0.2125, corresponding
to tan(-12), calibrated on human behaviour (>5 and <12 degrees:
moderate downhill; >12 degrees: steep downhill). The default values
for a, b, c, d
walk_coeff parameters are those proposed by
Langmuir (0.72, 6.0, 1.9998, -1.9998), based on man walking effort in
standard conditions.
The lambda parameter of the linear equation
combining movement and friction costs:
total cost = movement time cost + (lambda) * friction costs
must be set in the option section of
r.walk.
For a more accurate result, the "knight's move" option can be used
(although it is more time consuming). In the diagram below, the center
location (O) represents a grid cell from which cumulative distances
are calculated. Those neighbours marked with an x are always
considered for cumulative cost updates. With the "knight's move"
option, the neighbours marked with a K are also considered.
K K
K x x x K
x O x
K x x x K
K K
The minimum cumulative costs are computed using Dijkstra's
algorithm, that find an optimum solution (for more details see
r.cost, that uses the same algorithm).
The movement direction surface is created to record the sequence of
movements that created the cost accumulation surface. Without it
r.drain would not correctly create a path from an end point
back to the start point. The direction of each cell points towards
the next cell. The directions are recorded as degrees CCW from East:
112.5 67.5 i.e. a cell with the value 135
157.5 135 90 45 22.5 means the next cell is to the north-west
180 x 360
202.5 225 270 315 337.5
247.5 292.5
Once r.walk computes the cumulative cost map as a linear
combination of friction cost (from friction map) and the altitude and
distance covered (from the digital elevation
model), r.drain can be used to
find the minimum cost path. Make sure to use the -d flag and
the movement direction raster map when
running r.drain to ensure the path
is computed according to the proper movement directions.
r.walk, like most all GRASS raster programs, is also made to
be run on maps larger that can fit in available computer memory. As the
algorithm works through the dynamic list of cells it can move almost
randomly around the entire area. r.walk divides the entire
area into a number of pieces and swaps these pieces in and out of
memory (to and from disk) as needed. This provides a virtual memory
approach optimally designed for 2-D raster maps. The amount of memory
to be used by r.walk can be controlled with the memory
option, default is 300 MB. For systems with less memory this value will
have to be set to a lower value.
- Aitken, R. 1977. Wilderness areas in Scotland. Unpublished Ph.D. thesis.
University of Aberdeen.
- Steno Fontanari, University of Trento, Italy, Ingegneria per l'Ambiente e
il Territorio, 2000-2001.
Svilluppo di metodologie GIS per la determinazione dell'accessibilità
territoriale come supporto alle decisioni nella gestione ambientale.
- Langmuir, E. 1984. Mountaincraft and leadership. The Scottish
Sports Council/MLTB. Cordee, Leicester.
r.cost,
r.drain,
r.in.ascii,
r.mapcalc,
r.out.ascii
Based on r.cost written by :
Antony Awaida, Intelligent Engineering, Systems Laboratory, M.I.T.
James Westervelt, U.S.Army Construction Engineering Research Laboratory
Updated for Grass 5 by Pierre de Mouveaux (pmx@audiovu.com)
Initial version of r.walk:
Steno Fontanari, 2002
Current version of r.walk:
Franceschetti Simone, Sorrentino Diego, Mussi Fabiano and Pasolli Mattia
Correction by: Fontanari Steno, Napolitano Maurizio and Flor Roberto
In collaboration with: Franchi Matteo, Vaglia Beatrice, Bartucca Luisa, Fava Valentina and Tolotti Mathias, 2004
Updated for GRASS 6.1:
Roberto Flor and Markus Neteler
Updated for GRASS GIS 7:
Markus Metz
Last changed: $Date: 2015-01-23 20:39:26 +0100 (Fri, 23 Jan 2015) $
Main index | Raster index | Topics index | Keywords index | Full index
© 2003-2015 GRASS Development Team, GRASS GIS 7.0.0 Reference Manual