Viewshed function

Available with Spatial Analyst license.

Overview

Determines the raster surface locations visible to a set of observer features using geodesic methods.

There are two types of visibility analyses that can be performed by this function:

  • Frequency—determines which raster surface locations are visible to a set of observers.
  • Observers—identifies which observers are visible from each raster surface location.

Viewshed with Frequency option illustration
Viewshed output with the Frequency option, displayed on a hillshaded elevation surface

Viewshed with Observers option illustration
Viewshed output with the Observers option, displayed on a hillshaded elevation surface

Learn more about how the Viewshed tool works

Notes

This function can be accelerated by the Graphics Processing Unit (GPU), which means that if a GPU device is available on your system, it will be used to enhance the performance.

Unlike similar tools, this function does not have a z-factor parameter. To ensure the correctness of the output visibility raster, assign a spheroidal vertical coordinate system to the input raster if it does not already have one.

The visibility of each pixel center is determined by a line-of-sight test between the target and each observer. If an observer can see the target at the pixel center, the pixel is considered visible. This tool always considers the curvature of the earth when the visibility is determined.

On the output visibility raster, nonvisible pixels are assigned NoData.

If the input raster contains undesirable noise caused by sampling errors, you can smooth the raster with a low-pass filter, such as the mean option of Focal Statistics, before running this function.

When the input raster needs to be resampled, bilinear interpolation will be used. An example of when an input raster may be resampled is when the output coordinate system, extent, or cell size is different from that of the input.

You can use the Analysis Method parameter to control the quality of and the time it takes to obtain a result. The Perimeter Sightlines method is intended for exploratory analysis, as it achieves faster performance at the expense of output quality. To get the most accurate output, use the All Sightlines method.

For the observers analysis type, the allowed maximum number of input observer points is 32.

By default, the viewshed will be calculated to the maximum extent of the input dataset. For improved performance, it is recommended to explicitly set the outer radius parameter to the maximum distance of interest for your analysis. This parameter will allow the tool to perform its computations only on the cells that are within a certain distance to the observers.

For more details on technical aspects of the implementation of this tool, see the release notes for this tool.

Parameters

Parameter nameDescription

Raster

(Required)

The input surface raster. It can be an integer or a floating-point raster.

The input is transformed into a 3D geocentric coordinate system during the visibility calculation. NoData cells on the input raster do not block the visibility determination.

Observer Features

(Required)

The input feature class that identifies the observer locations. It can be point, multipoint, or polyline features.

The input feature class is transformed into a 3D geocentric coordinate system during the visibility calculation. Observers outside of the extent of the surface raster, or located on NoData cells, will be ignored in the calculation.

Analysis Method

Choose the method by which the visibility will be calculated. This option allows you to trade some accuracy for increased performance.

  • All Sightlines—A sightline is performed on every pixel in the raster in order to establish visible areas. This is the default method.
  • Perimeter Sightlines—Sightlines are only performed to the pixels on the perimeter of the visible areas in order to establish visibility areas. This method has a better performance than the All Sightlines method since less sightlines are in the calculation.

Analysis Type

Choose which type of visibility analysis you wish to perform, either determining how visible each cell is to the observers, or identifying for each surface location which observers are visible.

  • Frequency—The number of times that each pixel location in the input surface raster can be seen by the input observation locations (as points or as vertices for polyline observer features). This is the default.
  • Observers—The output identifies exactly which observer points are visible from each raster surface location. The allowed maximum number of input observers is 32 with this analysis type.

Vertical Error

The amount of uncertainty, measured as Root Mean Square error (RMSE), in the surface elevation values. It is a floating-point value representing the expected error of the input elevation values. When this parameter is assigned a value greater than 0, the output visibility raster will be floating point. In this case, each pixel value on the output visibility raster represents the sum of probabilities that the cell is visible to any of the observers.

When the Analysis Type is Observers or the Analysis Method is Perimeter Sightlines, this parameter is disabled.

Refractive Coefficient

Coefficient of the refraction of visible light in air.

The default value is 0.13.

Surface Offset

This value indicates a vertical distance (in surface units) to be added to the z-value of each target pixel as it is considered for visibility. It should be a positive integer or floating-point value.

It can be a field in the input Observer Features dataset or a numerical value. If this parameter is set to a value, that value will be applied to all the observers. To specify different values for each observer, set this parameter to a field in the Observer Features dataset.

Observer Elevation

This value is used to define the surface elevations of the observer points or vertices.

It can be a field in the input Observer Features dataset or a numerical value. If this parameter is not specified, the observer elevation will be obtained from the surface raster using bilinear interpolation. If this parameter is set to a value, then that value will be applied to all the observers. To specify different values for each observer, set this parameter to a field in the Observer Features dataset.

Observer Offset

This value indicates a vertical distance (in surface units) to be added to observer elevation. It should be a positive integer or floating-point value.

It can be a field in the input Observer Features dataset or a numerical value. If this parameter is set to a value, that value will be applied to all the observers. To specify different values for each observer, set this parameter to a field in the Observer Features dataset.

Inner Radius

This value defines the start (minimum) distance from which visibility is determined. Pixels closer than this distance are considered not visible in the output but can still block visibility of the pixels between the Inner Radius and the Outer Radius. The default value is 0.

It can be a field in the input Observer Features dataset or a numerical value. If this parameter is set to a value, that value will be applied to all the observers. To specify different values for each observer, set this parameter to a field in the Observer Features dataset.

Inner radius is 3D distance

Type of distance for the inner radius parameter.

  • Unchecked—Inner Radius is to be interpreted as a 2D distance. This is the default.
  • Checked—Inner Radius is to be interpreted as a 3D distance.

Outer Radius

This value defines the maximum distance from which visibility is determined. Pixels beyond this distance are excluded from the analysis.

It can be a field in the input Observer Features dataset or a numerical value. If this parameter is set to a value, that value will be applied to all the observers. To specify different values for each observer, set this parameter to a field in the Observer Features dataset.

Outer radius is 3D distance

Type of distance for the outer radius parameter.

  • Unchecked—Outer Radius is to be interpreted as a 2D distance. This is the default.
  • Checked—Outer Radius is to be interpreted as a 3D distance.

Horizontal Start Angle

This value defines the start angle of the horizontal scan range. The value should be specified in degrees from 0 to 360.0, where 0 is oriented to north. The default value is 0.

It can be a field in the input Observer Features dataset or a numerical value. If this parameter is set to a value, that value will be applied to all the observers. To specify different values for each observer, set this parameter to a field in the Observer Features dataset.

Horizontal End Angle

This value defines the end angle of the horizontal scan range. The value should be specified in degrees from 0 to 360.0, where 0 is oriented to north. The default value is 360.0.

It can be a field in the input Observer Features dataset or a numerical value. If this parameter is set to a value, that value will be applied to all the observers. To specify different values for each observer, set this parameter to a field in the Observer Features dataset.

Vertical Upper Angle

This value defines the upper vertical angle limit of the scan above a horizontal plane. The value should be specified in degrees from 0 to 90.0, which can be integer or floating point. The default value is 90.0.

It can be a field in the input Observer Features dataset or a numerical value. If this parameter is set to a value, that value will be applied to all the observers. To specify different values for each observer, set this parameter to a field in the Observer Features dataset.

Vertical Lower Angle

This value defines the lower vertical angle limit of the scan below a horizontal plane. The value should be specified in degrees from -90.0 to 0, which can be integer or floating point. The default value is -90.0.

It can be a field in the input Observer Features dataset or a numerical value. If this parameter is set to a value, that value will be applied to all the observers. To specify different values for each observer, set this parameter to a field in the Observer Features dataset.

Environment settings

Geoprocessing environment settings for global functions are controlled at the application level. Setting processing environments in ArcGIS Pro can be done by clicking the Environments button on the Analysis tab. See Analysis environments and Spatial Analyst for additional details on environment settings.

The following environments are supported by this global function:

Related topics