Skyline (3D Analyst)

License Level:BasicStandardAdvanced

Summary

Generates a line or multipatch feature class containing the results from a skyline silhouette analysis.

Learn more about how Skyline works

Illustration

Skyline

Usage

Syntax

Skyline_3d (in_observer_point_features, out_feature_class, {in_surface}, {virtual_surface_radius}, {virtual_surface_elevation}, {in_features}, {feature_lod}, {from_azimuth_value_or_field}, {to_azimuth_value_or_field}, {azimuth_increment_value_or_field}, {max_horizon_radius}, {segment_skyline}, {scale_to_percent}, {scale_according_to}, {scale_method}, {use_curvature}, {use_refraction}, {refraction_factor}, {pyramid_level_resolution}, {create_silhouettes})
ParameterExplanationData Type
in_observer_point_features

The 3D points representing observers; a separate skyline is generated for each.

Feature Layer
out_feature_class

The line feature class into which the skylines will be placed. Alternatively, this could be a multipatch feature class to contain feature silhouettes.

Feature Class
in_surface
(Optional)

The functional surface for determining the horizon.

LAS Dataset Layer; Raster Layer; TIN Layer; Terrain Layer
virtual_surface_radius
(Optional)

The radius of the virtual surface for defining the horizon in lieu of an actual surface. Must be a positive value. Ignored if an actual surface is provided. The default is 1,000.

Linear Unit
virtual_surface_elevation
(Optional)

The elevation of the virtual surface for defining the horizon in lieu of an actual surface. It is ignored if an actual surface is provided. The default is 0.

Linear Unit
in_features
(Optional)

The feature class to use in the skyline analysis. The features typically represent obstructions such as city buildings.

Feature Layer
feature_lod
(Optional)

The level of detail at which each feature should be examined in the skyline analysis.

  • FULL_DETAILEvery edge within the feature is considered in the skyline analysis (only edges of triangles and exterior rings are considered). This is the slowest but most precise. This is the default.
  • CONVEX_FOOTPRINTThe contribution to the skyline analysis is generated by the upper perimeter of the convex polygon representing the convex hull of the footprint of the feature, raised to the elevation of the highest vertex within the feature.
  • ENVELOPE The contribution to the skyline analysis is generated by the upper horizontal rectangular perimeter of the rectangular solid enveloping the feature (vertical faces perpendicular to the X and Y axes).
String
from_azimuth_value_or_field
(Optional)

The azimuth, in degrees, from which the skyline analysis should be started. The analysis starts from the observer point and goes to the right, from the From Azimuth until the To Azimuth is reached. Must be greater than minus 360 and less than 360. The default is 0.

Double; Field
to_azimuth_value_or_field
(Optional)

The direction, in degrees, at which the skyline analysis should be completed. The analysis starts from the observer point and goes to the right, from the From Azimuth until the To Azimuth is reached. Must be no more than 360 greater than the From Azimuth. The default is 360.

Double; Field
azimuth_increment_value_or_field
(Optional)

The angular interval, in degrees, at which the horizon should be evaluated while conducting the skyline analysis between the From Azimuth and the To Azimuth. Must be no greater than the To Azimuth minus the From Azimuth. The default is 1.

Double; Field
max_horizon_radius
(Optional)

The maximum distance for which a horizon should be sought from the observer location. A value of zero indicates that there should be no limit imposed. The default is 0.

Double
segment_skyline
(Optional)

Instead of only one line being generated to represent the skyline from each observer point, the output is split into multiple lines. Each of these lines represents a different feature, or a stretch of horizon between features. If silhouettes are being generated, then this parameter will indicate whether divergent rays should be used; for sun shadows, this should generally be no or unchecked.

  • NO_SEGMENT_SKYLINEThe output 3D polyline results will not be segmented. This is the default.
  • SEGMENT_SKYLINEThe output line results will be segmented according to the various features that are encountered during the analysis.
Boolean
scale_to_percent
(Optional)

Indicates to what percent of the original vertical angle (angle above the horizon, or angle of elevation) or elevation each skyline vertex should be placed. If either 0 or 100 is entered, then no scaling will occur. The default is 100.

Double
scale_according_to
(Optional)

The values according to which the scaling should be determined.

  • VERTICAL_ANGLEScaling is done by considering the vertical angle of each vertex relative to the observer point. This is the default.
  • ELEVATIONScaling is done by considering the elevation of each vertex relative to the observer point.
String
scale_method
(Optional)

The vertex to be used to calculate against.

  • SKYLINE_MAXIMUMVertices will be scaled relative to the vertical angle (or the elevation) of the vertex with the highest vertical angle (or elevation). This is the default.
  • EACH_VERTEXVertices will be scaled relative to the original vertical angle (or elevation) of each vertex.
String
use_curvature
(Optional)

Indicates whether the earth's curvature should be taken into consideration when generating the ridgeline from a functional surface.

  • CURVATUREThe earth's curvature will be taken into consideration.
  • NO_CURVATUREThe 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 the ridgeline from a functional surface. If no actual surface is specified, then checking this check box (or passing REFRACTION in Python) will cause silhouettes to be created instead of skylines.

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

If atmospheric refraction is considered, then apply a scalar value. The default is 0.13.

Double
pyramid_level_resolution
(Optional)

If a terrain is specified for a functional surface, then this parameter is populated with the resolutions resident in the terrain. One of the resolutions may be chosen for the purpose of generating the horizon line. The default is 0, or full resolution.

Double
create_silhouettes
(Optional)

Specify whether output features will represent silhouettes that are visible from the observer point.

  • NO_CREATE_SILHOUETTESThe resulting polylines will represent the skyline. This is the default.
  • CREATE_SILHOUETTESThe resulting polylines will represent silhouettes.
Boolean

Code Sample

Skyline 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.Skyline_3d("observers.shp", "skyline_output.shp", "sample.gdb/featuredataset/terrain")
Skyline example 2 (stand-alone script)

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

'''****************************************************************************
Name: Skyline Example
Description: This script demonstrates how to use the 
             Skyline tool.
****************************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env

try:
    # Obtain a license for the ArcGIS 3D Analyst extension
    arcpy.CheckOutExtension('3D')
    # Set environment settings
    env.workspace = 'C:/data'
    # Set Local Variables
    inPts = "observers.shp"
    # Make sure output has a unique name
    outFC = arcpy.CreateUniqueName("skyline_output.shp")
    inSurface = "sample.gdb/featuredataset/terrain"
    obstructionFCs = "buildings.shp; billboards.shp"
    surfRad = "1000 meters"
    surfElev = "100 meters"
    LOD = "FULL_DETAIL"
    fromAzim = 0
    toAzim = 360
    incAzim = 1
    maxHorizRad = 0
    segSky = "SEGMENT_SKYLINE"
    scale = 100
    scaleAcc = "ELEVATION"
    scaleMethod = "SKYLINE_MAXIMUM"
    
    # Execute Skyline
    arcpy.Skyline_3d(inPts, outFC, inSurface, surfRad, surfElev, 
                     obstructionFCs, LOD, fromAzim, toAzim, incAzim, 
                     maxHorizRad, segSky, scale, scaleAcc, scaleMethod)


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

Related Topics

Licensing Information

ArcGIS for Desktop Basic: Requires 3D Analyst
ArcGIS for Desktop Standard: Requires 3D Analyst
ArcGIS for Desktop Advanced: Requires 3D Analyst
11/8/2012