Skip to content

Commit

Permalink
r.viewshed.exposure: Version for GRASS 7 (#720)
Browse files Browse the repository at this point in the history
Co-authored-by: zofie-cimburova <zofie.cimburova@ningis03.nina.no>
  • Loading branch information
zofie-cimburova and zofie-cimburova committed Mar 25, 2022
1 parent e0d664f commit 7708cf7
Show file tree
Hide file tree
Showing 7 changed files with 1,932 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/raster/r.viewshed.exposure/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
MODULE_TOPDIR = ../..

PGM = r.viewshed.exposure

include $(MODULE_TOPDIR)/include/Make/Script.make

default: script
220 changes: 220 additions & 0 deletions src/raster/r.viewshed.exposure/r.viewshed.exposure.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
<h2>DESCRIPTION</h2>

<em>r.viewshed.exposure</em> computes visual exposure to given exposure
source(s) using weighted (optional) parametrised (optional) cumulative viewshed.

<h3>The algorithm</h3>
The processing workflow of the module consists of five steps:
<ol>
<li>Random sampling of exposure source raster map with vector points,
</li>
<li>Calculating binary viewshed for each exposure source point,</li>
<li>Optional parametrisation of the binary viewshed,</li>
<li>Optional weighting of the (parametrised) viewshed,</li>
<li>Cumulating the (weighted) (parametrised) viewsheds.</li>
</ol>

<div align="center" style="margin: 10px">
<a href="r_viewshed_exposure_workflow.png">
<img src="r_viewshed_exposure_workflow.png" width="489" height="545" alt="r.viewshed.exposure workflow" border="0">
</a><br>
<i>Processing workflow</i>
</div>

<h4>1. Random sampling of exposure source raster map with vector points</h4>
To improve computational efficiency, the exposure source raster map is
randomly sampled with defined density (0-100&#37;; option <b>sample_density</b>).
In general, lower sampling densities lead to lower
accuracy, higher uncertainty of the result and lower processing time,
while higher sampling densities lead to higher accuracy, lower uncertainty of
the result and longer processing time. Alternatively, it is possible to replace
the exposure source raster map with own vector map of exposure source points
(option <b>sampling_points</b>).


<h4>2. Binary viewshed for each exposure source point</h4>
A binary viewshed for each exposure source point is calculated using
<a href="r.viewshed.html">r.viewshed</a> module. The height of exposure
source point above the surface is 0m. The height of observer point (exposure
receiver) above the surface is specified by option <b>observer_elevation</b>.
Viewshed radius (range of visual exposure) is specified by option
<b>max_distance</b>.


<h4>3. (optional) Parametrisation of the binary viewshed</h4>
The module supports different parametrization functions to better reflect
human visual perspective by accounting for the
variable contribution of the exposure source pixels to visual
exposure depending on their distance, slope and aspect relative to the observer
(option <b>function</b>).
Four parametrisation functions are implemented:
<i>distance decay function</i>, <i>fuzzy viewshed function</i>,
<i>visual magnitude function</i> and <i>solid angle function</i>.
<p>

In <i>distance decay function</i>, the contribution of an exposure source pixel
<i>xi</i> to visual exposure at the observer pixel decreases in proportion to
the square of distance between the exposure source pixel and the observer:
<i>D(xi) = A/v<sup>2</sup></i>; <i>A</i> is the area of the exposure source
pixel, <i>v</i> is the distance between the exposure source pixel and
the observer.
See Gr&ecirc;t-Regamey et al. (2007) and Chamberlain and Meitner (2013) for more
details.
<p>

In <i>fuzzy viewshed function</i>, the contribution of an exposure source pixel
<i>xi</i> to visual exposure at the observer pixel depends on the distance
between the exposure source pixel and the observer and the radius of perfect
clarity.
See Fisher (1994) and Ogburn (2006) for more details.
<p>

In <i>visual magnitude function</i>, the contribution of an exposure source pixel
<i>xi</i> to visual exposure at the observer pixel depends on the pixel&#39;s slope,
aspect and distance relative to the observer.
See Chamberlain and Meitner (2013) for more details.
<p>

In <i>solid angle function</i>, the contribution of an exposure source pixel
<i>xi</i> to visual exposure at the observer pixel is calculated as a solid
angle, i.e. the area (in sterradians) of the observer&#39;s eye retina covered by
the exposure source pixel.
See Domingo-Santos et al. (2011) for more details.


<h4>4. (optional) Weighting of the (parametrised) viewshed</h4>
Weighting of the individual (parametrised) viewsheds enables modelling
variable intensities of the exposure sources. The individual viewsheds are
multiplied by values extracted from the weights raster map
(option <b>weights</b>) at the exposure source points.


<h4>5. Cumulating the (weighted) (parametrised) viewsheds</h4>
After each iteration, the partial viewsheds are cumulated (added),
resulting in a raster of (weighted) (parametrised) cumulative viewshed.
This raster represents visual exposure to the exposure source.


<h3>Memory and parallel processing</h3>
Options <b>memory</b> specifies the amount of memory allocated for
viewshed computation. Option <b>nprocs</b> specifies the number of cores used in
parallel processing. In parallel processing, the computation of individual
viewsheds is randomly distributed across the specified cores.


<h2>EXAMPLES</h2>
Computation of visual exposure to major roads in South-West Wake county,
North Carolina. Input data are a terrain model and a raster map of major roads
from NC dataset. Viewshed parametrisation function is set to none (example 1)
and solid angle (example 2). Sampling density is set to 50&#37;,
exposure range to 2km.

<div class="code"><pre>
# set computation region to terrain model
g.region raster=elevation@PERMANENT

# calculate visual exposure
# no viewshed parametrisation function (binary viewshed)
r.viewshed.exposure input=elevation@PERMANENT
output=exposure_roadsmajor_b
source=roadsmajor@PERMANENT
observer_elevation=1.50
max_distance=2000
sample_density=50 memory=5000 nprocs=25

# calculate visual exposure
# solid anfle viewshed parametrisation function
r.viewshed.exposure input=elevation@PERMANENT
output=exposure_roadsmajor_s
source=roadsmajor@PERMANENT
observer_elevation=1.50
max_distance=2000
function=solid_angle
sample_density=50 memory=5000 nprocs=25

# scale solid angle values for visualisation purposes
# (see Domingo-Santos et al., 2011)
r.mapcalc expression=exposure_roadsmajor_s_rescaled =
if(exposure_roadsmajor_s@user1>=0.2*3.1416,1,1/
(-1* log(exposure_roadsmajor_s@user1 /(2*3.1416))))

</pre></div>

<div align="center" style="margin: 10px">
<a href="r_viewshed_exposure_example_binary.png">
<img src="r_viewshed_exposure_example_binary.png"
width="601" height="747"
alt="Example of r.viewshed.exposure (1)" border="0">
</a><br>
<i>Example of r.viewshed.exposure (1)</i>
</div>

<div align="center" style="margin: 10px">
<a href="r_viewshed_exposure_example_solid_angle.png">
<img src="r_viewshed_exposure_example_solid_angle.png"
width="601" height="747"
alt="Example of r.viewshed.exposure (2)" border="0">
</a><br>
<i>Example of r.viewshed.exposure (2)</i>
</div>

<h2>TODO</h2>
<ul>
<li>Implement variable exposure source height.</li>
<li>Implement possibility to switch between absolute and relative values
of visual exposure (now absolute).</li>
</ul>

<h2>REFERENCES</h2>

<ul>
<li>Cimburova, Z., Blumentrath, S., 2022.
Viewshed-based modelling of visual exposure to urban greenery -
an efficient GIS tool for practical applications.
<i>Landscape and Urban Planning</i> 222, 104395.
<a href="https://doi.org/10.1016/j.landurbplan.2022.104395">
https://doi.org/10.1016/j.landurbplan.2022.104395 </a> </li>
</li>
<li>Chamberlain, B.C., Meitner, M.J., 2013.
A route-based visibility analysis for landscape management.
<i>Landscape and Urban Planning</i> 111, 13-24.
<a href="https://doi.org/10.1016/j.landurbplan.2012.12.004">
https://doi.org/10.1016/j.landurbplan.2012.12.004 </a> </li>
<li>Domingo-Santos, J.M., de Villar&aacute;n, R.F., Rapp-Arrar&aacute;s, &Iacute;., de Provens,
E.C.-P., 2011.
The visual exposure in forest and rural landscapes:
An algorithm and a GIS tool.
<i>Landscape and Urban Planning</i> 101, 52-58.
<a href="https://doi.org/10.1016/j.landurbplan.2010.11.018">
https://doi.org/10.1016/j.landurbplan.2010.11.018</a></li>
<li>Fisher, P., 1994.
Probable and fuzzy models of the viewshed operation,
in: Worboys, M.F. (Ed.), <i>Innovations in GIS</i>.
Taylor & Francis, London, pp. 161-176.</li>
<li>Gr&ecirc;t-Regamey, A., Bishop, I.D., Bebi, P., 2007.
Predicting the scenic beauty value of mapped landscape changes
in a mountainous region through the use of GIS.
<i>Environment and Planning B: Planning and Design</i> 34, 50-67.
<a href="https://doi.org/10.1068/b32051">
https://doi.org/10.1068/b32051</a></li>
<li>Ogburn, D.E., 2006.
Assessing the level of visibility of cultural objects in past landscapes.
<i>Journal of Archaeological Science</i> 33, 405-413.
<a href="https://doi.org/10.1016/j.jas.2005.08.005">
https://doi.org/10.1016/j.jas.2005.08.005</a></li>
</ul>


<h2>SEE ALSO</h2>

<em>
<a href="r.viewshed.html">r.viewshed</a>,
<a href="r.viewshed.cva.html">r.viewshed.cva</a>
<a href="r.survey.html">r.survey</a>
</em>


<h2>AUTHORS</h2>

Zofie Cimburova, <a href="https://www.nina.no">NINA</a><br>
Stefan Blumentrath, <a href="https://www.nina.no">NINA</a>

0 comments on commit 7708cf7

Please sign in to comment.