Take the 2-minute tour ×

I'm looking for implementations of an algorithm called "Available Sky". ArcGIS (Spatial Analyst or GRID) is preferred, but solutions in GDAL, SAGA GIS or others are perfectly acceptable.

The description I have is "a method to quantify the influence of terrain on GPS radiocollar performance by creating a variable called "Available Sky" (Rodgers et al. 1997). ... AS is the proportion of sky available to GPS radiocollar through direct line of site in all directions and at all angles without terrain obstructions (disregarding forest cover). ... locations on mountain tops have high AS values ... conversly locations in valley bottoms are low due to mountain ridges on either sides [lateral obstructions]" -- paraphrased from 'GPS radiotelemetry error and bias in mountainous terrain', Robert G. D'Eon, Robert Serrouya, Graham Smith, Christopher O. Kochanny; Wildlife Society Bulletin 2002.

The paper goes on to describe, in outline only, a process of comparing a base elevation model with a coarser "sky" raster set x100m higher than the highest point of the dem. The process is to calculate direct line of sight for each dem point to each Sky point, arriving at an AS value is the proportion of the total number of sky points visible from that location.

share|improve this question
any SAGA GIS users here? Is it's Sky View Factor related to this? –  matt wilkie Jul 29 '10 at 17:44
found a slightly different version of this paper online as downloadable pdf library.for.gov.bc.ca/ipac20/… –  matt wilkie Jul 29 '10 at 17:48
I was researching this on behalf of one of our biologists, and the time to test answers has passed as the field work for which this was needed is already in progress. Other work priorities are taking precedence so I can't follow through. I guess this is just a long way of saying I'm sorry, I can't mark an accepted answer, even though the correct answer may already be present. I just don't know :) –  matt wilkie Aug 19 '10 at 23:00
add comment

7 Answers

It seems like there should be a way to derive AS from a skyline graph created using the ArcGIS 10.0 3D analyst. If you have a skyline (3D polyline) that surrounds an observation point, it should be able to step through each vertex on the skyline and find some portion of a sphere that is visible.

Or, if you moved each vertex so that it is one unit distance from the observation point, but having same direction from it, it seems the shadow volume would correspond to the AS.

share|improve this answer
add comment

This is really a comment on Kirk Kuykendall's excellent answer (why has no one been perspicuous or generous enough to vote it up yet?), but I don't have the rep to post a comment.

Kirk suggests


I haven't seen that graph, but presumably it is a plot of horizon elevation (as an angle, or something equivalent to an angle) versus azimuth. OK: since you have a GIS, use it! Treat the azimuth as longitude and the angle (appropriately expressed) as latitude, project the plot using an equal-area projection, and compute the area of the polygon it encompasses: that's directly proportional to the solid angle subtended by the sky. (You have to take some care that you're not computing the area of the complementary polygon, which is the solid angle blocked by the earth.)

In the raster world, the AS calculation has been rediscovered many times (e.g., as "topographic openness" (1)). Unfortunately the obvious algorithm takes O(N^4) time where N is the number of rows or columns, making it prohibitive for precise work. Thus, having a vector horizon line is a real asset and it's a brilliant idea to exploit it.


(1) Yokoyama R, Shirasawa M and Pike RJ, 2002, Visualizing topography by openness: A new application of image processing to digital elevation models. Photogrammetric Engineering and Remote Sensing, 68(3): 257-265. Scanned pdf available here.

share|improve this answer
add comment

Is this like the inverse of a Viewshed? Though, iteratively creating it would be the hard part, you might think about inverting the surface and using a Viewshed tool as a start.

share|improve this answer
add comment

You might look at GRASS and the r.horizon command. I have not used it, only the related r.sun for calculating solar irradiance, but for a given point you can calculate the horizon angle at whatever directions you specify.


share|improve this answer
add comment

Yes this is a somewhat commonly queried Q. for calculating min. required elevations of GPS Satellites for telemetry.

What you are seeking is the 'local' horizon created by terrain based on a 3D position.

Thre tools that come to mind are;

GRASS - r.horizon


Trimble Planning Software

You can use the 'Obstruction Editor' in Trimble Planning Software (free download) and import the output .txt info from GRASS or MicroDEM in the format of (Azimuth, Horizon Angle) I believe... and that should give you your min. req. gps elevation telemetry.

Hope that helps,

share|improve this answer
add comment

In a similar fashion to Kirk's answer, considering the two ends of a skyline as a polyline will join, we can consider it a polygon. My taking the area of the polygon, we have an area of available sky. We can easily determine the area of a polygon where the edges lie on the horizon, thereby allowing us to calculate a percentage of the available sky to an optimal sky.

The other bonus with this method is that we can weight certain areas of the sky, boosting the real world usefulness. We generate a series of polygons in concentric circles, like that of an archery target, with the bulls eye directly above our current position. The outer circles having a higher value (as we know that satellites on the horizon provide better triangulation than those directly overhead). We can now simply work out what percentage of our sky is in high value areas (whether we have satellites in those areas though easily determined, is out of scope here).

share|improve this answer
Your first paragraph is identical to a suggestion in my answer, so I just want to note that it's important to treat this "skyline polygon" as a spherical polygon and to compute its spherical area. The approach in your second paragraph is excellent. It's actually how the ArcGIS "Solar Analyst" calculations are performed (using a gridded representation of the polygon rather than a vector representation). –  whuber Aug 27 '10 at 15:33
whuebr: When I was writing it up, I was thinking about a flat vs spherical polygon, and couldn't see any benefit to using a spherical, as from my perspective, we're just interested in the direct lines of 'view' from the GPS receiver out to space. The length of each make no difference to performance. I'd be very interested if you could explain the benefits of a spherical polygon, so that I can increase my understanding of the issue. –  BlinkyBill Aug 29 '10 at 23:43
add comment

Check out SAGA GIS too.. free and open source. Has some good terrain and sky calculation tools.


share|improve this answer
Not enough detail provided to be an answer; I already asked if SAGA could be used for this, in a comment to the Q. –  matt wilkie Aug 30 '10 at 19:40
add comment

Your Answer


