123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- <h2>DESCRIPTION</h2>
- <em>r.walk</em> 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.
- <p>
- <em>r.walk</em> outputs 1) a raster map showing the lowest
- cumulative cost (time) 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
- <a href="#move">Movement Direction</a>). 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.
- <p>
- This function is similar to <em><a href="r.cost.html">r.cost</a></em>,
- 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.
- <h2>NOTES</h2>
- <p>
- 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:
- <div class="code"><pre>
- T = a*delta_S + b*delta_H_uphill + c*delta_H_moderate_downhill + d*delta_H_steep_downhill
- </pre></div>
- where:
- <ul>
- <li><tt>T</tt> is time of movement in seconds,</li>
- <li><tt>delta S</tt> is the horizontal distance covered in meters,</li>
- <li><tt>delta H</tt> is the altitude difference in meters.</li>
- </ul>
- <p>
- The a, b, c, d <b>walk_coeff</b> parameters take in account
- movement speed in the different conditions and are linked to:
- <ul>
- <li>a: time in seconds it takes to walk for 1 meter a flat surface (1/walking speed)</li>
- <li>b: additional walking time in seconds, per meter of elevation gain
- on uphill slopes</li>
- <li>c: additional walking time in seconds, per meter of elevation loss
- on moderate downhill slopes (use positive value for decreasing cost)</li>
- <li>d: additional walking time in seconds, per meter of elevation loss
- on steep downhill slopes (use negative value for increasing cost)</li>
- </ul>
- 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 (<b>slope_factor</b>) 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 <b>walk_coeff</b> parameters are those proposed by
- Langmuir (0.72, 6.0, 1.9998, -1.9998), based on man walking effort in
- standard conditions.
- <p>The <b>friction</b> cost parameter represents a time penalty in seconds
- of additional walking time to cross 1 meter distance.
- <p>The <b>lambda</b> parameter is a dimensionless scaling factor of the friction cost:
- <div class="code"><pre>
- total cost = movement time cost + lambda * friction costs * delta_S
- </pre></div>
- <p>
- 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.
- <div class="code"><pre>
- K K
- K x x x K
- x O x
- K x x x K
- K K
- </pre></div>
- <p>The minimum cumulative costs are computed using Dijkstra's
- algorithm, that find an optimum solution (for more details see
- <em>r.cost</em>, that uses the same algorithm).
- <a name="move"></a>
- <h2>Movement Direction</h2>
- <p>The movement direction surface is created to record the sequence of
- movements that created the cost accumulation surface. Without it
- <em><a href="r.drain.html">r.drain</a></em> 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:
- <div class="code"><pre>
- 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
- </pre></div>
- <p>
- Once <em>r.walk</em> 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), <em><a href="r.drain.html">r.drain</a></em> can be used to
- find the minimum cost path. Make sure to use the <b>-d</b> flag and
- the movement direction raster map when
- running <em><a href="r.drain.html">r.drain</a></em> to ensure the path
- is computed according to the proper movement directions.
- <p>
- <em>r.walk</em>, 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. <em>r.walk</em> 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 <em>r.walk</em> can be controlled with the <b>memory</b>
- option, default is 300 MB. For systems with less memory this value will
- have to be set to a lower value.
- <h2>EXAMPLES</h2>
- We compute a map showing how far a lost person could get from the
- point where he or she was last seen
- while taking into account the topography and landcover.
- <div class="code"><pre>
- g.region swwake_30m -p
- # create friction map based on land cover
- r.recode landclass96 out=friction << EOF
- 1:3:0.1:0.1
- 4:5:10.:10.
- 6:6:1000.0:1000.0
- 7:7:0.3:0.3
- EOF
- r.walk -k elevation=elev_ned_30m friction=friction output=walkcost \
- start_coordinates=635576,216485 lambda=0.5 max=10000
- # compute contours on the cost surface to better understand
- # how far the person can get in certain time (1000 is in seconds)
- r.contour walkcost output=walkcost step=1000
- </pre></div>
- <h2>REFERENCES</h2>
- <ul>
- <li>Aitken, R. 1977. Wilderness areas in Scotland. Unpublished Ph.D. thesis.
- University of Aberdeen.
- <li> 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.
- <li>Langmuir, E. 1984. Mountaincraft and leadership. The Scottish
- Sports Council/MLTB. Cordee, Leicester.
- </ul>
- <h2>SEE ALSO</h2>
- <em>
- <a href="r.cost.html">r.cost</a>,
- <a href="r.drain.html">r.drain</a>,
- <a href="r.in.ascii.html">r.in.ascii</a>,
- <a href="r.mapcalc.html">r.mapcalc</a>,
- <a href="r.out.ascii.html">r.out.ascii</a>
- </em>
- <h2>AUTHORS</h2>
- <b>Based on r.cost written by :</b><br>
- Antony Awaida, Intelligent Engineering, Systems Laboratory, M.I.T.<br>
- James Westervelt, U.S.Army Construction Engineering Research Laboratory<br>
- Updated for Grass 5 by Pierre de Mouveaux (pmx@audiovu.com)
- <p><b>Initial version of r.walk:</b><br>
- Steno Fontanari, 2002
- <p><b>Current version of r.walk:</b><br>
- Franceschetti Simone, Sorrentino Diego, Mussi Fabiano and Pasolli Mattia<br>
- Correction by: Fontanari Steno, Napolitano Maurizio and Flor Roberto<br>
- In collaboration with: Franchi Matteo, Vaglia Beatrice, Bartucca Luisa, Fava Valentina and Tolotti Mathias, 2004
- <p><b>Updated for GRASS 6.1:</b><br>
- Roberto Flor and Markus Neteler
- <p><b>Updated for GRASS GIS 7:</b><br>
- Markus Metz
- <p>
- <i>Last changed: $Date$</i>
|