dwww Home | Manual pages | Find package

r.viewshed(1grass)          GRASS GIS User's Manual         r.viewshed(1grass)

NAME
       r.viewshed   -  Computes the viewshed of a point on an elevation raster
       map.
       Default format: NULL (invisible), vertical angle wrt  viewpoint  (visi-
       ble).

KEYWORDS
       raster, viewshed, line of sight, LOS

SYNOPSIS
       r.viewshed
       r.viewshed --help
       r.viewshed  [-crbe] input=name output=name coordinates=east,north  [ob-
       server_elevation=value]       [target_elevation=value]        [max_dis-
       tance=value]     [refraction_coeff=float]     [memory=value]    [direc-
       tory=string]   [--overwrite]  [--help]  [--verbose]  [--quiet]  [--ui]

   Flags:
       -c
           Consider the curvature of the earth (current ellipsoid)

       -r
           Consider the effect of atmospheric refraction

       -b
           Output format is invisible = 0, visible = 1

       -e
           Output format is invisible  =  NULL,  else  current  elev  -  view-
           point_elev

       --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:
       input=name [required]
           Name of input elevation raster map

       output=name [required]
           Name for output raster map

       coordinates=east,north [required]
           Coordinates of viewing position

       observer_elevation=value
           Viewing elevation above the ground
           Default: 1.75

       target_elevation=value
           Offset for target elevation above the ground
           Default: 0.0

       max_distance=value
           Maximum visibility radius. By default infinity (-1)
           Default: -1

       refraction_coeff=float
           Refraction coefficient
           Options: 0.0-1.0
           Default: 0.14286

       memory=value
           Amount of memory to use in MB
           Default: 500

       directory=string
           Directory to hold temporary files (they can be large)

DESCRIPTION
       r.viewshed  is  a  module  that  computes  the viewshed of a point on a
       raster terrain. That is, given an elevation raster, and the location of
       an  observer,  it generates a raster output map showing which cells are
       visible from the given location.  The algorithm  underlying  r.viewshed
       minimizes both the CPU operations and the transfer of data between main
       memory and disk; as  a  result  r.viewshed  runs  fast  on  very  large
       rasters.

NOTES
       To  run  r.viewshed, the user must specify an input elevation map name,
       an output raster map name, and the location of the viewpoint.

       For the time being the viewpoint (coordinates parameter) is assumed  to
       be  located inside the terrain.  The viewpoint location is given in map
       coordinates.

       The output raster map may have one of three possible formats, based  on
       which flags are set.

       By  default,  if  no flag is set, the output is in angle-mode, and each
       point in the output map is marked as NULL if the point is  not  visible
       or  the  respective  point  in the elevation map is NULL.  Otherwise, a
       value in [0, 180] representing the vertical angle with  regard  to  the
       viewpoint,  in  degrees,  if the point is visible.  A value of 0 is di-
       rectly below the specified viewing position, 90 is due horizontal.  The
       angle  to the cell containing the viewing position is undefined and set
       to 180.

       If the -b flag is set, the output is in boolean-mode, and each point in
       the output map is marked as:

           •   0 if the point is no-data/null or not visible

           •   1 if the point is visible.

       If  the -e flag is set, the output is in elevation-mode, and each point
       in the output map is marked as:

           •   no-data (null), if the respective point in the elevation map is
               no-data (null)

           •   -1, if the point is not visible

           •   the  difference  in  elevation  between the point and the view-
               point, if the point is visible.

       If you wish to identify the area of the map which is within the  search
       radius  but not visible, a combination of r.buffer and r.mapcalc can be
       used to create a negative of the viewshed map.

       By default the elevations are not adjusted for  the  curvature  of  the
       earth. The user can turn this on with flag -c.

       By  default the observer is assumed to have height 1.75 map units above
       the terrain.  The user can change this using option observer_elevation.
       The value entered is in the same units as the elevation.

       By  default  the  target is assumed to have height of 0 map units above
       the terrain.  The user can change this using option target_elevation to
       determine  if objects of a given height would be visible. The value en-
       tered is in the same units as the elevation.

       By default there is no restriction on the maximum distance to which the
       observer  can  see.   The user can set a maximum distance of visibility
       using option max_distance.  The value entered is in the same  units  as
       the cell size of the raster.

       Main  memory  usage: By default r.viewshed assumes it has 500MB of main
       memory, and sets up its internal data structures so that  it  does  not
       require  more  than this amount of RAM.  The user can set the amount of
       memory used by the program by setting the memory to the number of MB of
       memory they would like to be used.

   Memory mode
       The  algorithm  can  run  in two modes: in internal memory, which means
       that it keeps all necessary data structures in memory during the compu-
       tation.  And  in  external memory, which means that the data structures
       are external, i.e. on disk.  r.viewshed decides which mode  to  run  in
       using  the  amount  of main memory specified by the user.  The internal
       mode is (much) faster than the external mode.

       Ideally, the user should specify on the  command  line  the  amount  of
       physical  memory  that  is free for the program to use. Underestimating
       the memory may result in r.viewshed running in external mode instead of
       internal, which is slower. Overestimating the amount of free memory may
       result in r.viewshed running in internal mode and using virtual memory,
       which is slower than the external mode.

   The algorithm
       r.viewshed  uses  the  following  model for determining visibility: The
       height of a cell is assumed to be variable, and the actual height of  a
       point falling into a cell, but not identical the cell center, is inter-
       polated. Thus the terrain is viewed as a smooth  surface.   Two  points
       are visible to each other if their line-of-sight does not intersect the
       terrain. The height for an arbitrary point x in the terrain is interpo-
       lated  from  the  4  surrounding neighbours. This means that this model
       does a bilinear interpolation of heights.  This model is  suitable  for
       both  low  and high resolution rasters as well as terrain with flat and
       steep slopes.

       The  core  of  the  algorithm  is  determining,  for  each  cell,   the
       line-of-sight  and its intersections with the cells in the terrain. For
       a (square) grid of n cells, there can be O(n 1/2) cells that  intersect
       the LOS. If we test every single such cell for every point in the grid,
       this adds up to O(n3/2) tests. We can do all these tests faster  if  we
       re-use information from one point to the next (two grid points that are
       close to each other will be intersected by a lot of  the  same  points)
       and organize the computation differently.

       More precisely, the algorithm uses a technique called line sweeping: It
       considers a half-line centered at the viewpoint, and rotates  it  radi-
       ally  around  the  viewpoint,  360  degrees.  During the sweep it keeps
       track of all the cells that intersect the  sweep  line  at  that  time;
       These are called the active cells. A cell has 3 associated events: when
       it is first met by the sweep line and inserted into the  active  struc-
       ture; when it is last met by the sweep line and deleted from the active
       structure; and when the sweep line  passes  over  its  centerpoint,  at
       which  time  its visibility is determined.  To determine the visibility
       of a cell all cells that intersect the line-of-sight must be active, so
       they  are  in the active structure.  The algorithm looks at all the ac-
       tive cells that are between the point and the viewpoint, and finds  the
       maximum  gradient among these.  If the cell’s gradient is higher, it is
       marked as visible, whereas if it is lower, it is marked as invisible.

       For a (square) raster of n point in total, the standard viewshed  algo-
       rithm  uses  O(n sqrt(n))= O(n3/2) time, while the sweep-line algorithm
       uses O(n lg n) time.  This algorithm is efficient in terms of CPU oper-
       ations  and can be also made efficient in terms of I/O-operations.  For
       all details see the REFERENCES below.

       The sweep-line.                                              The active cells.

EXAMPLES
       Using the North Carolina dataset:  Compute viewshed from a  observation
       point  (coordinates:  638728.087167,  220609.261501)  which is 5 meters
       above ground:
       g.region raster=elev_lid792_1m -p
       r.viewshed input=elev_lid792_1m output=elev_lid792_1m_viewshed coordinates=638728,220609 observer_elevation=5.0
       Viewshed shown on shaded terrain (observer position in  the  north-east
       quadrant  with white dot; 5m above ground) Using the Spearfish dataset:
       calculating the viewpoint from top of a mountain:
       g.region raster=elevation.10m
       r.viewshed input=elevation.10m output=viewshed coordinates=598869,4916642 memory=800

REFERENCES
           •   Computing Visibility on Terrains  in  External  Memory.  Herman
               Haverkort,  Laura Toma and Yi Zhuang. In ACM Journal on Experi-
               mental Algorithmics (JEA) 13 (2009).

           •   Computing Visibility on Terrains  in  External  Memory.  Herman
               Haverkort,  Laura Toma and Yi Zhuang. In the Proceedings of the
               9th Workshop on Algorithm Engineering and Experiments  /  Work-
               shop  on  Analytic  Algorithms and Combinatorics (ALENEX/ANALCO
               2007).

SEE ALSO
        r.mapcalc

AUTHORS
       Laura Toma (Bowdoin College): ltoma@bowdoin.edu

       Yi Zhuang (Carnegie-Mellon University): yzhuang@andrew.cmu.edu

       William Richard (Bowdoin College): willster3021@gmail.com

       Markus Metz

SOURCE CODE
       Available at: r.viewshed source code (history)

       Accessed: unknown

       Main index | Raster index | Topics index | Keywords index  |  Graphical
       index | Full index

       © 2003-2022 GRASS Development Team, GRASS GIS 7.8.7 Reference Manual

GRASS 7.8.7                                                 r.viewshed(1grass)

Generated by dwww version 1.14 on Mon Feb 3 07:44:58 CET 2025.