How Skyline works
The Skyline tool generates a 3D polyline representation of the line separating the sky from the surface and features surrounding the observer points. Each observer point has its own skyline. The tool can also generate silhouettes which can be used by the Skyline Barrier tool to generate shadow volumes.
When only observer points are provided, the resulting skyline is referred to as a horizon line, or ridgeline. The horizon line is generated by casting a line of sight from the observer covering the azimuth range specified in the azimuth options. A line of sight is checked after each Azimuth Increment, and all of the azimuth values are expressed in degrees. A smaller increment will mean that more samples are taken, leading to a more precise representation of the ridgeline. A ridgeline is generated as a 3D line where each vertex is the farthest visible point along each sampled line of sight. If the observer can see all the way to the edge of the surface in a given direction, then the vertex is generated at the point where the line of sight reaches the edge of the surface. If a Maximum Horizon Radius is provided, then the vertex will still be along the line of sight but no further from the observer point than the specified maximum.
For each of the three azimuth-related parameters, a field of the Input Observer Point Features may be specified rather than specifying a value. This is useful if more than one skyline is to be created, which occurs when more than one observer point is considered.
Input Features may be any combination of multipatches, polylines, and polygons. Polyline and polygon features will only be accepted as 3D layers with base height and extrusion information.
When an Input Surface is provided, the Virtual Surface options are ignored. If no surface is provided and the Virtual Surface Radius is set to 0, a virtual surface whose elevation is slightly less than the lowest Z-value in the input features will be used, and the Virtual Surface Radius will be set to the average of all distance measurements from the observer point to each feature's envelope.
If the FULL_DETAIL option is specified for the Feature Level of Detail, then every edge (of triangles or exterior rings) within the feature is considered. If the Feature Level of Detail is CONVEX_FOOTPRINT, then the feature's contribution to the skyline is generated by the upper perimeter of the convex polygon representing the convex hull of the footprint (horizontal projection on the XY plane) of the feature, raised to the elevation of the highest vertex within the feature. If ENVELOPE is specified, then 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).
![Remarque Remarque](rsrc/note.png)
The tool will not recognize building overhangs, even at full detail. The tool behaves as if each nonvertical edge in the feature has a vertical line extending from each end of the edge until the skyline, and everything between those two vertical lines, is obscured by the feature. If a building has just a narrow base and tower with a much wider top, the top will cause the skyline to be generated as if a cloth hung down from it.
The 3D polyline contains a numeric (long integer) tag (ID) for each vertex. This tag is not saved if the output is in a shapefile. The tag contains information about the polyline leg that follows the vertex.
Enabling the Segment Skyline option creates individual lines for each feature influencing the skyline and each transitional line connecting those features. Transitional lines run along an imaginary radial from the observer and are denoted by a value of -2 in the ID field. A value of -1 denotes that the skyline is defined by the surface and values equal or greater than 0 identify the input feature contributing to the skyline.
The Skyline tool contains three scale-related parameters that affect the elevations of the vertices in the skyline:
- Scale to Percent—Indicates to what percent of the original vertical angle (angle above the horizon or angle of elevation) or elevation the vertex should be placed. If either 0 or 100 is entered, then no scaling will occur. The value can be any number but will typically be around 70 or 80.
- Scale According To—Indicates whether the scaling should be done by considering the vertical angle or the elevation of each vertex (relative to the observer point).
- Scale Method—Refers to whether all vertices should be scaled relative to the vertical angle (or the elevation) of the vertex with the highest vertical angle (or elevation), or relative to the original vertical angle (or elevation) of the vertex being considered.
For example, if 80 percent is specified in the Scale to Percent option, according to VERTICAL_ANGLE, and using the SKYLINE_MAXIMUM of skyline method, the result will be as follows:
- The vertical angle will be checked for each vertex in the skyline, and the highest one will be remembered as the maximum vertical angle.
- The decrease in vertical angle will be calculated as 20 percent (that is, 100 minus 80) of the original maximum vertical angle.
- Each vertex in the skyline will be lowered so that the vertical angle to that vertex will be lower by the same amount that was calculated for the vertex with the maximum vertical angle.
In all cases, only the z-value of each vertex is changed, not the X or Y, which means that the vertex drops straight downward (assuming that the scale factor is less than 100 percent).
You may be looking to create a Building-Free Zone (BFZ). This generally refers to a visible area below a ridgeline when looking toward mountains from a specific observer point; buildings built between the observer and the ridgeline should not protrude into this space. There are different means of calculating this. The azimuth range would typically be relatively small, and only the surface would be used. The settings of the three scale-related parameters would commonly be 80, VERTICAL_ANGLE, and SKYLINE_MAXIMUM. The resulting skyline would then be used as input for the Skyline Barrier tool to generate a surface of sorts through which buildings would not be allowed to protrude.
The Skyline tool does not deal with the nonlinear change in angle of elevation along the top edge of a building. One obvious repercussion of this is that if the observer is equidistant from two points at either end of the top edge of a nearby building, and that top edge participates in the skyline, while the angle of elevation to each of the two ends of that edge will be equal to each other, the angle of elevation to an imaginary midpoint of that edge will be greater than that of the endpoints. This is of negligible consequence when buildings are far from the observer but can be noticeable in the case of buildings that are near the observer.
Silhouettes and shadow volume analysis
Silhouettes define the outline of features projected onto a vertical plane from the perspective of the observer points and can be created by enabling the Create Silhouettes option. Silhouettes can be used by the Skyline Barrier tool to generate shadow volumes.
Each input feature will have a corresponding silhouette for each observer point. For instance, five observers (such as five sun positions) and ten features (such as buildings) will create fifty silhouettes. The silhouette is a multipatch that will typically be vertical and placed just behind the feature from the perspective of the observer.
Surface inputs and azimuth controls are ignored when generating silhouettes.
Enabling the Segment Skyline option results in each silhouette being created using diverging rays coming from the observer point. This is usually not desirable for shadow studies involving sunlight, since modelling the sun's illumination requires parallel rays. For this reason, the Segment Skyline parameter should be disabled.
The projection is performed by considering the observer to be infinitely distant from the feature so that the sight lines (light rays) are parallel to each other. That means that the observer can be placed very close to the feature without incurring any problems with divergent rays.
The precise direction of the light rays will be from the observer point to the center point of all features to be considered in one run of the tool. That imaginary center point is calculated as follows. For each feature, the center point of its envelope (a rectangular solid bounding box with edges parallel to the principal axes) is calculated. The center point of all features will be the center point of the envelope which encloses all of the center points of the features. This means that the light rays for all features being dealt with in one run of the tool are parallel to each other.
The output multipatch will contain the following fields:
- 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 X 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—Identifies whether the silhouette was created using parallel light rays (1 for yes; 0 for no).
- MADE_VERT—Identifies whether the silhouette was made vertical, rather than perpendicular, to the light rays (1 for yes; 0 for no).
- MOVED_BHND—Identifies whether the silhouette was moved behind the feature, rather than staying at its center (1 for yes; 0 for no).