Available with 3D Analyst license.
Summary
Determines the visibility of sight lines through potential obstructions. The potential obstructions can be any combination of rasters, TINs, multipatches, and extruded polygons or lines.
Usage
-
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.
This tool does not create new output; instead, it adds a new attribute into the input sight lines feature class. If you don't want your input data to be touched, make a copy of it and use the copy as the input.
The input Sight Lines geometry type should be PolylineZ (3D lines, which have Z values) so that meaningful analysis can take place.
The input obstructions may be any combination of surfaces and/or features. Surfaces must be either raster or TIN. Each obstruction feature layer geometry type must be multipatch, line, or polygon. Each line or polygon feature layer must have base height and extrusion information, or its contents will be ignored.
Each input sight line may consist of more than two vertices, but only the first and last vertex is used. Each sight line will therefore always be a straight line.
The Z values of the first and last vertex of each sight line are the only sources of Z values that are used.
The analysis result is saved in the input Sight Line's feature attribute table in an integer field. By default the name of this field is VISIBLE, but the name can be changed with the Visible Field Name parameter.
The result can be a value of either 1 or 0. A value of 1 indicates that the sight line is not obstructed by any of the potential obstructions specified in the Obstructions parameter, meaning that its starting point and end point are visible to each other. A value of 0 indicates that the sight line is obstructed by at least one surface or feature.
If the result field (for example, VISIBLE) already exists in the Sight Line feature class, then its contents will be overwritten. If the tool is run from the dialog box, a warning will appear after the tool senses that the field already exists. Regardless of how the tool is run (for example, dialog box or Python window), if results are written to an existing field, then a warning message will be added to the result messages indicating that data may have been overwritten.
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.
- Unlike the Line of Sight tool, this tool determines whether a sight line is obstructed, rather than where it is first obstructed. No record is kept of what obstruction causes any given sight line to be obstructed.
If the direction (azimuth and vertical angle) of each sight line is desired, it might be possible to have this information written to the sight lines when using the Construct Sight Lines tool to generate the sight lines before running this tool.
Syntax
Intervisibility_3d (sight_lines, obstructions, {visible_field})
Parameter | Explanation | Data Type |
sight_lines | The 3D sight lines. | Feature Layer |
obstructions [obstructions,...] | One or more feature classes and/or surfaces that may obstruct the sight lines. | Feature Layer, Raster Layer, TIN Layer |
visible_field (Optional) | 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. | String |
Code Sample
Intervisibility example 1 (Python window)
The following sample demonstrates the use of this tool in the Python window.
arcpy.CheckOutExtension("3D")
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 intervisibility for sight lines against the obstructions presented by a surface and/or buildings represented by multipatches.
# Import system modules
import arcpy
try:
# Checking out 3D Analyst Extension
arcpy.CheckOutExtension("3D")
# Set environments
arcpy.env.workspace = 'C:/data'
# Setting up input and output variables
sightlines = "My_Sightlines.shp"
surface = "DTM_Tin"
buildings = "My_3D_Buildings.shp"
viz_field_name = "Visibility"
print("Calculating Intervisibility...")
arcpy.Intervisibility_ddd(
sightlines, surface + ';' + buildings, viz_field_name)
except arcpy.ExecuteError:
print(arcpy.GetMessages(2))
finally:
arcpy.CheckInExtension("3D")
Environments
Licensing Information
- ArcGIS for Desktop Basic: Requires 3D Analyst
- ArcGIS for Desktop Standard: Requires 3D Analyst
- ArcGIS for Desktop Advanced: Requires 3D Analyst