Skip To Content



Determines the visibility of sight lines against 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 values 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 for use with this tool. See Tools with no outputs 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) in order to check for obstructions. It would be especially 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_3d (sight_lines, obstructions, {visible_field})
ParameterExplanationData Type

The 3D sight lines.

Feature Layer

The multipatch features and surfaces that may obstruct the sight lines. A polygon or line feature layer can be specified if the layer has its base height and extrusion properties defined.

Feature Layer; Mosaic Layer; Raster Layer; TIN Layer

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.


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 a observer points and target lines against 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

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

Related topics