Skyline (3D Analyst)

Summary

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

Learn more about how Skyline works

Illustration

Skyline tool illustration

Usage

  • This tool requires all input data to be in a projected coordinate system. An input feature class that is not in a projected coordinate system can be reprojected using the Project tool, and an input raster surface can be reprojected using the Project Raster tool.

  • The Segment Skyline parameter can be used to specify how much of the skyline will be defined by specific multipatch features or the surrounding elevation surface. This can help provide an understanding about whether specific places of interest contribute to a given observation point's skyline.

  • This tool can be used to create feature silhouettes that can be extruded into shadow volumes using the Skyline Barrier tool. The shadows generated through this process will be created at a slight offset from the geometry of the input features. Alternatively, the Sun Shadow Volume tool can be used to generate shadows volumes that extend from the feature geometry to a distance below the feature's height. You can also find where the shadow of a 3D feature that is caused by sunlight falls on a surface using the Sun Shadow Frequency tool.

  • The following fields will be added to the Output Feature Class parameter value that contains the skylines:

    • OBSV_PT_ID—The FID of the observer point used to create this skyline
    • ORIGFTR_ID—The FID of the feature, such as a building
  • The following fields will be added to the Output Feature Class parameter value that contains the silhouettes:

    • OBSV_PT_ID—The FID of the observer point used to create this silhouette
    • ORIGFTR_ID—The FID of the original feature, such as a building, represented by this silhouette
    • DIR_VECT_X—The x-component of the unit vector representing the direction of the light rays from the observer
    • DIR_VECT_Y—The y-component of the unit vector representing the direction of the light rays from the observer
    • DIR_VECT_Z—The z-component of the unit vector representing the direction of the light rays from the observer
    • FEAT_CTR_X—The z-component of the center of the envelope of the original feature (for example, building)
    • FEAT_CTR_Y—The y-component of the center of the envelope of the feature
    • FEAT_CTR_Z—The z-component of the center of the envelope of the feature
    • BHND_CTR_X—The x-component of the center of the envelope of the feature, moved behind the feature
    • BHND_CTR_Y—The y-component of the center of the envelope of the feature, moved behind the feature
    • BHND_CTR_Z—The z-component of the center of the envelope of the feature, moved behind the feature
    • USED_PARLL—Whether the silhouette was created using parallel light rays (1 for yes and 0 for no)
    • MADE_VERT—Whether the silhouette was made vertical, rather than perpendicular to the light rays (1 for yes and 0 for no)
    • MOVED_BHND—Whether the silhouette was moved to behind the feature, rather than staying at its center (1 for yes and 0 for no)
  • Atmospheric refraction and earth curvature correction will only be applied when the Input Surface parameter value is a raster dataset. If the surface is defined by a TIN, terrain, or LAS dataset, use one of the following tools to export the data to a raster:

Parameters

LabelExplanationData Type
Input Observer Point Features

The 3D points representing observers. Each feature will have its own output.

Feature Layer
Output Feature Class

The 3D features that will either be lines that represent the skyline or multipatches that represent silhouettes.

Feature Class
Input Surface
(Optional)

The topographic surface that will be used to define the horizon. If no surface is provided, a virtual surface will be used, defined by the Virtual Surface Radius and Virtual Surface Elevation parameter values.

LAS Dataset Layer; Mosaic Layer; Raster Layer; TIN Layer; Terrain Layer
Virtual Surface Radius
(Optional)

The radius of the virtual surface that will be used to define the horizon when no input surface is provided. The default is 1,000 meters.

Linear Unit
Virtual Surface Elevation
(Optional)

The elevation of the virtual surface that will be used to define the horizon in lieu of an actual surface. This parameter is ignored if an actual surface is provided. The default is 0.

Linear Unit
Input Features
(Optional)

The features that will be used to determine the skyline. If no features are specified, the skyline will consist solely of the horizon line as defined by the topographic or virtual surface.

Feature Layer
Feature Level of Detail
(Optional)

Specifies the level of detail at which each feature will be examined.

  • Full DetailEvery edge in the feature will be considered in the skyline analysis (only edges of triangles and exterior rings are considered). This time-intensive technique is the most precise. This is the default.
  • Convex FootprintThe skyline analysis will use the upper perimeter of the convex hull of each feature's footprint extruded to the elevation of the highest vertex in the feature.
  • Envelope The skyline analysis will use the perimeter of the three-dimensional feature envelope. This is the fastest technique.
String
From Azimuth
(Optional)

The direction from which the skyline analysis will start.

The value is a geometric angle in degrees in the range of -360° to 360°. The default is 0°, which is due north. Angular values increment in a clockwise direction so that 90° is due east, 180° is due south, and 270° is due west. Likewise, -90° is due west, -180° is due south, and -270° is due east. A numeric field from the Input Observer Point Features parameter value can also be used to provide a distinct starting direction for each observer. The analysis extends until the To Azimuth parameter value is reached.

Double; Field
To Azimuth
(Optional)

The direction at which the skyline analysis will complete.

This value is a geometric angle in degrees in the range of -360° to 360°. The analysis starts from the observer point and increments from the From Azimuth parameter value until this parameter value is reached. This value cannot deviate more than 360° from the From Azimuth parameter value. The default is 360°, which is due north.

For example, a starting azimuth of 0° with an ending azimuth of 360° will result in a full circular skyline around the observer, and a starting azimuth of 90° with an ending azimuth of 270° will cover the southern half of the radial range around the observer.

A numeric field from the Input Observer Point Features parameter value can be used to provide a distinct terminal direction for each observer.

Double; Field
Azimuth Increment
(Optional)

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

Double; Field
Maximum Horizon Radius
(Optional)

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

Linear Unit
Segment Skyline
(Optional)

Specifies whether the resulting skyline will have one feature for each observer point or each observer's skyline will be segmented by the unique elements that contribute to the skyline. This parameter is only available if one or more multipatch features are specified for the Input Features parameter.

If silhouettes are being generated, this parameter will indicate whether divergent rays will be used. For sun shadows, uncheck the parameter.

  • Unchecked—Each skyline feature will represent one observer. This is the default.
  • Checked—Each observer's skyline will be segmented by the unique elements that contribute to the skyline.
Boolean
Scale To Percent
(Optional)

The percent of the original vertical angle (angle above the horizon or angle of elevation) or elevation each skyline vertex will be placed. If a value of 0 or 100 is used, scaling will not occur. The default is 100.

Double
Scale According To
(Optional)

Specifies how scaling will be performed.

  • Vertical Angle From ObserverScaling will be performed based on the vertical angle of each vertex relative to the observer point. This is the default.
  • ElevationScaling will be performed based on the elevation of each vertex relative to the observer point.
String
Scale Method
(Optional)

Specifies the vertex that will be used for scale calculation.

  • Skyline MaximumVertices will be scaled relative to the vertical angle (or 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)

Specifies whether the curvature of the earth will be used when generating the ridgeline. This parameter is only available when a raster surface is specified for the Input Surface parameter.

  • Unchecked—The curvature of the earth will not be used. This is the default.
  • Checked—The curvature of the earth will be used.
Boolean
Use Refraction
(Optional)

Specifies whether atmospheric refraction will be applied when generating the ridgeline from an input surface. This option is only available when a raster surface is specified for the Input Surface parameter.

  • Unchecked—Atmospheric refraction will not be applied. This is the default.
  • Checked—Atmospheric refraction will be applied.
Boolean
Refraction Factor
(Optional)

The refraction coefficient that will be used if atmospheric refraction is applied. The default is 0.13.

Double
Pyramid Level Resolution
(Optional)

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

Double
Create Silhouettes
(Optional)

Specifies whether output features will represent skylines defining the barrier between the input data and the open sky or silhouettes representing the facade of observable input features. This option is only available if one or more multipatch features are specified for the Input Features parameter.

  • Unchecked—The output polyline features will represent the skyline. This is the default.
  • Checked—The output multipatch features will represent silhouettes.
Boolean
Apply maximum radius to features
(Optional)

Specifies whether the Maximum Horizon Radius parameter value will be applied to the input features.

  • Unchecked—The radius will not apply to the input features. This is the default.
  • Checked—The radius will apply to the input features.
Boolean
Vertical Offset
(Optional)

The height offset in z-units that will be applied to each observer when determining its skyline. The offset can be defined by a numeric value that is applied to all observers or by a numeric field in the observer's attribute table that contains the offset for each feature. The default is 0, which means no offset is applied.

Double; Field

arcpy.ddd.Skyline(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}, {apply_max_radius_to_features}, {vertical_offset})
NameExplanationData Type
in_observer_point_features

The 3D points representing observers. Each feature will have its own output.

Feature Layer
out_feature_class

The 3D features that will either be lines that represent the skyline or multipatches that represent silhouettes.

Feature Class
in_surface
(Optional)

The topographic surface that will be used to define the horizon. If no surface is provided, a virtual surface will be used, defined by the virtual_surface_radius and virtual_surface_elevation parameter values.

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

The radius of the virtual surface that will be used to define the horizon when no input surface is provided. The default is 1,000 meters.

Linear Unit
virtual_surface_elevation
(Optional)

The elevation of the virtual surface that will be used to define the horizon in lieu of an actual surface. This parameter is ignored if an actual surface is provided. The default is 0.

Linear Unit
in_features
[in_features,...]
(Optional)

The features that will be used to determine the skyline. If no features are specified, the skyline will consist solely of the horizon line as defined by the topographic or virtual surface.

Feature Layer
feature_lod
(Optional)

Specifies the level of detail at which each feature will be examined.

  • FULL_DETAILEvery edge in the feature will be considered in the skyline analysis (only edges of triangles and exterior rings are considered). This time-intensive technique is the most precise. This is the default.
  • CONVEX_FOOTPRINTThe skyline analysis will use the upper perimeter of the convex hull of each feature's footprint extruded to the elevation of the highest vertex in the feature.
  • ENVELOPE The skyline analysis will use the perimeter of the three-dimensional feature envelope. This is the fastest technique.
String
from_azimuth_value_or_field
(Optional)

The direction from which the skyline analysis will start.

This value is a geometric angle in degrees in the range of -360° to 360°. The default is 0°, which is due north. Angular values increment in a clockwise direction so that 90° is due east, 180° is due south, and 270° is due west. Likewise, -90° is due west, -180° is due south, and -270° is due east. A numeric field from the in_observer_point_features parameter value can also be used to provide a distinct starting direction for each observer. The analysis extends until the to_azimuth_value_or_field parameter value is reached.

Double; Field
to_azimuth_value_or_field
(Optional)

The direction at which the skyline analysis will complete.

This value is a geometric angle in degrees in the range of -360° to 360°. The analysis starts from the observer point and increments from the from_azimuth_value_or_field parameter value until this parameter value is reached. This value cannot deviate more than 360° from the from_azimuth_value_or_field parameter value. The default is 360°, which is due north.

For example, a starting azimuth of 0° with an ending azimuth of 360° will result in a full circular skyline around the observer, and a starting azimuth of 90° with an ending azimuth of 270° will cover the southern half of the radial range around the observer.

A numeric field from the in_observer_point_features parameter value can be used to provide a distinct terminal direction for each observer.

Double; Field
azimuth_increment_value_or_field
(Optional)

The angular interval, in degrees, at which the horizon will be evaluated while conducting the skyline analysis between the from_azimuth_value_or_field and to_azimuth_value_or_field parameter values. The value must be no greater than the to_azimuth_value_or_field value minus the from_azimuth_value_or_field value. The default is 1.

Double; Field
max_horizon_radius
(Optional)

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

Linear Unit
segment_skyline
(Optional)

Specifies whether the resulting skyline will have one feature for each observer point or each observer's skyline will be segmented by the unique elements that contribute to the skyline. This parameter is only available if multipatch features are specified for the in_features parameter.

If silhouettes are being generated, this parameter will indicate whether divergent rays will be used. For sun shadows, use the NO_SEGMENT_SKYLINE option.

  • NO_SEGMENT_SKYLINEEach skyline feature will represent one observer. This is the default.
  • SEGMENT_SKYLINEEach observer's skyline will be segmented by the unique elements that contribute to the skyline.
Boolean
scale_to_percent
(Optional)

The percent of the original vertical angle (angle above the horizon or angle of elevation) or elevation each skyline vertex will be placed. If a value of 0 or 100 is used, scaling will not occur. The default is 100.

Double
scale_according_to
(Optional)

Specifies how scaling will be performed.

  • VERTICAL_ANGLEScaling will be performed based on the vertical angle of each vertex relative to the observer point. This is the default.
  • ELEVATIONScaling will be performed based on the elevation of each vertex relative to the observer point.
String
scale_method
(Optional)

Specifies the vertex that will be used for scale calculation.

  • SKYLINE_MAXIMUMVertices will be scaled relative to the vertical angle (or 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)

Specifies whether the curvature of the earth will be used when generating the ridgeline from a functional surface. This parameter is only available when a raster surface is specified for the in_surface parameter.

  • CURVATUREThe curvature of the earth will be used.
  • NO_CURVATUREThe curvature of the earth will not be used. This is the default.
Boolean
use_refraction
(Optional)

Specifies whether atmospheric refraction will be applied when generating the ridgeline from a functional surface. This option is only available when a raster surface is specified for the in_surface parameter.

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

The refraction coefficient that will be used if atmospheric refraction is applied. The default is 0.13.

Double
pyramid_level_resolution
(Optional)

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

Double
create_silhouettes
(Optional)

Specifies whether output features will represent skylines defining the barrier between the input data and the open sky or silhouettes representing the facade of observable input features. This option is only available if one or more multipatch features are specified for the in_features parameter.

  • NO_CREATE_SILHOUETTESThe output polyline features will represent the skyline. This is the default.
  • CREATE_SILHOUETTESThe output multipatch features will represent silhouettes.
Boolean
apply_max_radius_to_features
(Optional)

Specifies whether the max_horizon_radius parameter value will be applied to the input features.

  • NO_APPLY_MAX_RADIUS_TO_FEATURESThe radius will not apply to the input features. This is the default.
  • APPLY_MAX_RADIUS_TO_FEATURESThe radius will apply to the input features.
Boolean
vertical_offset
(Optional)

The height offset in z-units that will be applied to each observer when determining its skyline. The offset can be defined by a numeric value that is applied to all observers or by a numeric field in the observer's attribute table that contains the offset for each feature. The default is 0, which means no offset is applied.

Double; Field

Code sample

Skyline example 1 (Python window)

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

arcpy.env.workspace = "C:/data"
arcpy.ddd.Skyline("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

# Set environment settings
arcpy.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.ddd.Skyline(inPts, outFC, inSurface, surfRad, surfElev, 
                  obstructionFCs, LOD, fromAzim, toAzim, incAzim, 
                  maxHorizRad, segSky, scale, scaleAcc, scaleMethod)

Related topics