ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Help
  • Sign Out
ArcGIS Desktop

ArcGIS Online

The mapping platform for your organization

ArcGIS Desktop

A complete professional GIS

ArcGIS Enterprise

GIS in your enterprise

ArcGIS Developers

Tools to build location-aware apps

ArcGIS Solutions

Free template maps and apps for your industry

ArcGIS Marketplace

Get apps and data for your organization

  • Documentation
  • Support
Esri
  • Sign In
user
  • My Profile
  • Sign Out

ArcMap

  • Home
  • Get Started
  • Map
  • Analyze
  • Manage Data
  • Tools
  • Extensions

Line Of Sight

  • Summary
  • Illustration
  • Usage
  • Syntax
  • Code sample
  • Environments
  • Licensing information

Summary

Determines the visibility of sight lines over obstructions consisting of a surface and an optional multipatch dataset.

Learn more about how Line Of Sight works

Illustration

Line of Sight

Usage

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

  • Consider creating sight lines with the Construct Sight Lines tool if the observer location is identified by point features and the visibility targets reside in a different feature class.

  • Output lines will be divided along visible and invisible portions of the input sight line. If only a surface is used to determine sight line visibility, the output lines will follow the surface profile. If a multipatch feature is provided when calculating line of sight, the output lines will follow the trajectory of the input sight lines.

  • The output line feature's attribute table contains the following fields:

    • SourceOID—The unique ID of the line feature used in calculating visibility.
    • VisCode—The visibility along the line. A value of 1 indicates visible, and a value of 2 indicates not visible. This field will only exist if the output geometry is a line.
    • TarIsVis—The target visibility along the line. A value of 1 indicates visible, and a value of 0 indicates not visible. This field will only exist if the output geometry is a line.
    • OBSTR_MPID—The unique ID of the multipatch that obstructs the line of sight. If no multipatch obstructs the line of sight, then the field contains a value of -1 or -9999. If the target is obstructed by the surface, the value will be -1. If the target is visible, the value will be -9999.

Syntax

arcpy.ddd.LineOfSight(in_surface, in_line_feature_class, out_los_feature_class, {out_obstruction_feature_class}, {use_curvature}, {use_refraction}, {refraction_factor}, {pyramid_level_resolution}, {in_features})
ParameterExplanationData Type
in_surface

The LAS dataset, raster, TIN, or terrain surface used in determining visibility.

LAS Dataset Layer; Mosaic Layer; Raster Layer; Terrain Layer; TIN Layer
in_line_feature_class

The line features whose first vertex defines the observation point and last vertex identifies the target location. Height of the observation and target locations are obtained from the z-values of 3D features and interpolated from the surface for 2D features.

2D lines also have a default offset of 1 added to their elevation to raise the points above the surface. If the feature has an OffsetA field, its value will be added to the height of the observation point. If the OffsetB field is present, its value will be added to the height of the target position.

Feature Layer
out_los_feature_class

The output line feature class along which visibility has been determined. Two attribute fields are created. VisCode indicates visibility along the line, 1 being visible and 2 not visible. TarIsVis indicates the target visibility, 0 being not visible and 1 being visible.

Feature Class
out_obstruction_feature_class
(Optional)

An optional point feature class identifying the location of the first obstruction on the observer's sight line to its target.

Feature Class
use_curvature
(Optional)

Indicates whether the earth's curvature should be taken into consideration for the line-of-sight analysis. For this option to be enabled, the surface needs to have a defined spatial reference in projected coordinates with defined z-units.

  • CURVATURE —The earth's curvature will be taken into consideration.
  • NO_CURVATURE —The earth's curvature will not be taken into consideration. This is the default.
Boolean
use_refraction
(Optional)

Indicates whether atmospheric refraction should be taken into consideration when generating a line of sight from a functional surface. This option does not apply if multipatch features are used.

  • REFRACTION —Atmospheric refraction will be taken into consideration.
  • NO_REFRACTION —Atmospheric refraction will not be taken into consideration. This is the default.
Boolean
refraction_factor
(Optional)

Provides a value to be used in the refraction factor. The default refraction factor is 0.13.

Double
pyramid_level_resolution
(Optional)

The z-tolerance or window-size resolution of the terrain pyramid level that will be used by this tool. The default is 0, or full resolution.

Double
in_features
(Optional)

A multipatch feature that may define additional obstructing elements, such as buildings. Refraction options are not honored for this input.

Feature Layer

Code sample

LineOfSight example 1 (Python window)

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

import arcpy
from arcpy import env

arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.LineOfSight_3d("tin", "line.shp", "los.shp", "buldings_multipatch.shp", 
                    "obstruction.shp")
LineOfSight example 2 (stand-alone script)

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

'''*********************************************************************
Name: Sight Line Visibility of Parade Path
Description: This script demonstrates how to create a sight line feature class
             from a pair of observer and target points.
*********************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env

try:
    # Checking out 3D Analyst Extension:
    arcpy.CheckOutExtension('3D')

    # Set Local Variables:
    env.workspace = 'C:/data'

    # Setting up input and output variables:
    obs = "observer_pts.shp"
    tar = "parade_path.shp"
    sightlines = "output_sightlines.shp"
    height = "<None>"
    join_field = "#"
    sampling = 0.5
    direction = "OUTPUT_THE_DIRECTION"
    surface = 'elevation.tif'
    bldgs = 'buildings.shp'

    arcpy.AddMessage("Building sightlines...")
    arcpy.ddd.ConstructSightLines(obs, tar, sightlines, height, height, 
                                  join_field, sampling, direction)
    arcpy.ddd.LineOfSight(surface, sightlines, "Parade_LOS.shp", 
                          "Obstructions.shp", in_features=bldgs)
    
    arcpy.GetMessages(0)
    arcpy.CheckInExtension("3D")

except arcpy.ExecuteError:
    print arcpy.GetMessages()
except:
    # Get the traceback object
    tb = sys.exc_info()[2]
    tbinfo = traceback.format_tb(tb)[0]
    # Concatenate error information into message string
    pymsg = 'PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:\n{1}'\
          .format(tbinfo, str(sys.exc_info()[1]))
    msgs = 'ArcPy ERRORS:\n {0}\n'.format(arcpy.GetMessages(2))
    # Return python error messages for script tool or Python Window
    arcpy.AddError(pymsg)
    arcpy.AddError(msgs)

Environments

  • Current Workspace
  • Extent
  • Output Coordinate System
  • Geographic Transformations
  • XY Resolution
  • XY Tolerance
  • Output XY Domain
  • Z Resolution
  • Z Tolerance
  • Output Z Domain
  • Output CONFIG Keyword
  • Auto Commit
  • Output Spatial Grid 1
  • Output Spatial Grid 2
  • Output Spatial Grid 3
  • Terrain Memory Usage

Licensing information

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

Related topics

  • An overview of the Visibility toolset
  • Fundamentals of Surfaces
  • Analyze Visibility
  • Creating a line of sight

ArcGIS Desktop

  • Home
  • Documentation
  • Support

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

About Esri

  • About Us
  • Careers
  • Esri Blog
  • User Conference
  • Developer Summit
Esri
Tell us what you think.
Copyright © 2021 Esri. | Privacy | Legal