Visibility (3D Analyst)

License Level:BasicStandardAdvanced

Summary

Determines the raster surface locations visible to a set of observer features, or identifies which observer points are visible from each raster surface location.

Usage

Syntax

Visibility_3d (in_raster, in_observer_features, out_raster, {out_agl_raster}, {analysis_type}, {nonvisible_cell_value}, {z_factor}, {curvature_correction}, {refractivity_coefficient}, {surface_offset}, {observer_elevation}, {observer_offset}, {inner_radius}, {outer_radius}, {horizontal_start_angle}, {horizontal_end_angle}, {vertical_upper_angle}, {vertical_lower_angle})
ParameterExplanationData Type
in_raster

The input surface raster.

Raster Layer
in_observer_features

The feature class that identifies the observer locations.

The input can be point or polyline features.

Feature Layer
out_raster

The output raster.

The output will either record the number of times that each cell location in the input surface raster can be seen by the input observation locations (FREQUENCY option), or record which observer locations are visible from each cell in the raster surface (OBSERVERS option).

Raster
out_agl_raster
(Optional)

The output above-ground-level (AGL) raster.

The AGL result is a raster where each cell value is the minimum height that must be added to an otherwise nonvisible cell to make it visible by at least one observer.

Cells that were already visible will have a value of 0 in this output raster.

Raster
analysis_type
(Optional)

The visibility analysis type.

  • FREQUENCY The output records the number of times that each cell location in the input surface raster can be seen by the input observation locations (as points, or as vertices for polyline observer features).
  • OBSERVERS The output identifies exactly which observer points are visible from each raster surface location.
String
nonvisible_cell_value
(Optional)

Value assigned to non-visible cells.

  • ZERO 0 is assigned to nonvisible cells.
  • NODATA NoData is assigned to nonvisible cells.
Boolean
z_factor
(Optional)

Number of ground x,y units in one surface z unit.

The z-factor adjusts the units of measure for the z units when they are different from the x,y units of the input surface. The z-values of the input surface are multiplied by the z-factor when calculating the final output surface.

If the x,y units and z units are in the same units of measure, the z-factor is 1. This is the default.

If the x,y units and z units are in different units of measure, the z-factor must be set to the appropriate factor, or the results will be incorrect. For example, if your z units are feet and your x,y units are meters, you would use a z-factor of 0.3048 to convert your z units from feet to meters (1 foot = 0.3048 meter).

Double
curvature_correction
(Optional)

Allows correction for the earth's curvature.

  • FLAT_EARTH No curvature correction will be applied. This is the default.
  • CURVED_EARTH Curvature correction will be applied.
Boolean
refractivity_coefficient
(Optional)

Coefficient of the refraction of visible light in air.

The default value is 0.13.

Double
surface_offset
(Optional)

This value indicates a vertical distance (in surface units) to be added to the z-value of each cell 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. By default, a numerical field OFFSETB is used if it exists in the input observer features attribute table. You may overwrite it by specifying another numerical field or constant.

If this parameter is unspecified and the default field does not exist in the input observer features attribute table, it defaults to 0.

Field | Constant
observer_elevation
(Optional)

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. By default, a numerical field SPOT is used if it exists in the input observer features attribute table. You may overwrite it by specifying another numerical field or constant.

If this parameter is unspecified and the default field does not exist in the input observer features attribute table, it will be estimated through bilinear interpolation with the surface elevation values in the neighboring cells of the observer location.

Field | Constant
observer_offset
(Optional)

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. By default, a numerical field OFFSETA is used if it exists in the input observer features attribute table. You may overwrite it by specifying another numerical field or constant.

If this parameter is unspecified and the default field does not exist in the input observer features attribute table, it defaults to 1.

Field | Constant
inner_radius
(Optional)

This value defines the start distance from which visibility is determined. Cells closer than this distance are not visible in the output, but can still block visibility of the cells between inner radius and outer radius. It can be a positive or negative integer or floating point value. If it is a positive value, then it is interpreted as three-dimensional, line-of-sight distance. If it is a negative value, then it is interpreted as two-dimensional planimetric distance.

It can be a field in the input observer features dataset or a numerical value. By default, a numerical field RADIUS1 is used if it exists in the input observer features attribute table. You may overwrite it by specifying another numerical field or a constant.

If this parameter is unspecified and the default field does not exist in the input observer features attribute table, it defaults to 0.

Field | Constant
outer_radius
(Optional)

This value defines the maximum distance from which visibility is determined. Cells beyond this distance are excluded from the analysis. It can be a positive or negative integer or floating point value. If it is a positive value, then it is interpreted as three-dimensional, line-of-sight distance. If it is a negative value, then it is interpreted as two-dimensional planimetric distance.

It can be a field in the input observer features dataset or a numerical value. By default, a numerical field RADIUS2 is used if it exists in the input observer features attribute table. You may overwrite it by specifying another numerical field or constant.

If this parameter is unspecified and the default field does not exist in the input observer features attribute table, it defaults to infinity.

Field | Constant
horizontal_start_angle
(Optional)

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

It can be a field in the input observer features dataset or a numerical value. By default, a numerical field AZIMUTH1 is used if it exists in the input observer features attribute table. You may overwrite it by specifying another numerical field or constant.

If this parameter is unspecified and the default field does not exist in the input observer features attribute table, it defaults to 0.

Field | Constant
horizontal_end_angle
(Optional)

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

It can be a field in the input observer features dataset or a numerical value. By default, a numerical field AZIMUTH2 is used if it exists in the input observer features attribute table. You may overwrite it by specifying another numerical field or constant.

If this parameter is unspecified and the default field does not exist in the input observer features attribute table, it defaults to 360.

Field | Constant
vertical_upper_angle
(Optional)

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, which can be integer or floating point.

It can be a field in the input observer features dataset or a numerical value. By default, a numerical field VERT1 is used if it exists in the input observer features attribute table. You may overwrite it by specifying another numerical field or constant.

If this parameter is unspecified and the default field does not exist in the input observer features attribute table, it defaults to 90.

Field | Constant
vertical_lower_angle
(Optional)

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

It can be a field in the input observer features dataset or a numerical value. By default, a numerical field VERT2 is used if it exists in the input observer features attribute table. You may overwrite it by specifying another numerical field or constant.

If this parameter is unspecified and the default field does not exist in the input observer features attribute table, it defaults to -90.

Field | Constant

Code Sample

Visibility example 1 (Python window)

This example determines surface locations visible to a set of observers defined in a shapefile.

import arcpy
from arcpy import env
env.workspace = "c:/data"

arcpy.Visibility_3d("elevation", "observers.shp", "c:/output/visiout1", 
                    "c:/output/aglout1", "FREQUENCY", "NODATA", "1", 
                    "CURVED_EARTH", "0.13", "OFFSETB", "SPOT", "OFFSETA", 
                    "RADIUS1", "RADIUS2", "AZIMUTH1", "AZIMUTH2", 
                    "VERT1", "VERT2")
Visibility example 2 (stand-alone script)

This example determines which observers are visible at each surface location.

# Name: Viewshed_3d_Ex_02.py
# Description: Determines the raster surface locations visible 
#              to a set of observer features.
# Requirements: 3D Analyst Extension

# Import system modules
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "c:/data"

# set local variables
inRaster = "elevation"
inObserverFeatures = "observers.shp"
outRaster = "c:/output/visiout1"
aglOutput = "c:/output/aglout1"
analysisType = "OBSERVERS"
nonVisibleValue = "ZERO"
zFactor = 1
useEarthCurvature = "CURVED_EARTH"
refractivityCoefficient = 0.13
surfaceOffset = 500
observerElevation = 2000
observerOffset = 500
innerRadius = 20000
outerRadius = 100000
horizStartAngle = 45
horizEndAngle = 215
vertUpperAngle = 5
vertLowerAngle = -5

# Check out the ArcGIS 3D Analyst extension license
arcpy.CheckOutExtension("3D")

# Execute Visibility
arcpy.Visibility_3d(inRaster, inObserverFeatures, outRaster, algOutput,
                    analysisType, nonVisibleValue, zFactor, useEarthCurvature,
                    refractivityCoefficient, surfaceOffset, observerElevation,
                    observerOffset, innerRadius, outerRadius, horizStartAngle,
                    horizEndAngle, vertUpperAngle, vertLowerAngle)

Environments

Related Topics

Licensing Information

ArcGIS for Desktop Basic: Requires 3D Analyst or Spatial Analyst
ArcGIS for Desktop Standard: Requires 3D Analyst or Spatial Analyst
ArcGIS for Desktop Advanced: Requires 3D Analyst or Spatial Analyst
3/7/2014