Intervisibility (3D Analyst)


Determines the visibility of sight lines using potential obstructions defined by any combination of 3D features and surfaces.


  • This tool modifies the input Sight Lines by adding a new field or updating an existing field. You can specify the field name in the Visible Field Name parameter. The field value will be 1 for visible sight lines or 0 for obstructed sight lines. If you do not have write access to the input features or do not want your input data to be modified, make a copy of the input to use with this tool. See Tools that do not create output datasets for more information and strategies to avoid undesired data changes.

  • Only the endpoints of the input line are used to define the observer and target. Ideally, sight lines should be straight lines comprised of two vertices representing the observation point and the target location to which visibility is determined.

  • Consider using the Construct Sight Lines tool if the observer location is defined by point features and the visibility target is represented by data stored in a different feature class.

  • The tool will run faster if all input is in the same spatial reference since data will not have to be projected (potentially multiple times) to check for obstructions. It is beneficial for all obstructions to be in the same spatial reference as each other; the spatial reference of the sight lines is not as important, since they are easier to project.

  • Consider using the Line of Sight tool if you wish to determine the position of the obstructing location for non-visible sight lines.


Intervisibility(sight_lines, obstructions, {visible_field})
ParameterExplanationData Type

The 3D sight lines whose visibility will be evaluated.

Feature Layer

The 3D features, integrated mesh scene layers, and surfaces that provide potential obstructions for the sight lines.

Feature Layer; Mosaic Layer; Raster Layer; Scene Layer, TIN Layer

The name of the field that will store the visibility results. A resulting value of 0 indicates that the sight line's start and end points are not visible to one another. A value of 1 indicates that the sight line's start and end points are visible to one another. The default field name is VISIBLE. If the field already exists, its values will be overwritten.


Derived Output

NameExplanationData Type

The updated 3D sight lines.

Feature Layer

Code sample

Intervisibility example 1 (Python window)

The following sample demonstrates the use of this tool in the Python window.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.Intervisibility_3d("sightlines.shp", ["3dbuildings.shp", "topo_tin"], "Visibility")
Intervisibility example 2 (stand-alone window)

The following sample demonstrates the use of this tool in a stand-alone Python script.

This script demonstrates how to calculate the intervisibility of sight lines constructed from observer points and target lines using the obstructions presented by a surface and building features.

# Import system modules
import arcpy

# Set environments
arcpy.env.workspace = 'C:/data'

print("Constructing Sightlines")
arcpy.ddd.ConstructSightLines("Observers.shp", "Targets.shp", "sightlines.shp", 
                              observer_height_field='Shape.Z', target_height_field='Shape.Z')

print("Calculating Intervisibility")
arcpy.ddd.Intervisibility("Sightlines.shp", obstructions=["DTM_Tin", "data.gdb/buildings"],

Licensing information

  • Basic: Requires 3D Analyst
  • Standard: Requires 3D Analyst
  • Advanced: Requires 3D Analyst

Related topics