GIS in Satellite Systems: Line of Sight

I’ve recently been trying to figure out line of sightavailabilityfor satellites passing over different terrains. i.e answering the following question:

An example of hillshading. Credit: ESRI

Is a building, mountain, or any other object obstructing the path between satellite and user?

The Systems Toolkit (STK) can probably cover this, but at a cost of tens of thousands of dollars you start to look for cheaper alternatives.

The crux is to use a GIS function most commonly used in terrain visualisation called hillshade. Hillshade is used on a 2D layer to create a ‘pop’ effect and elevation maps tend to look fairly bland without them. The way it works is it models a light source at infinity and, using the gradient of the terrain model, calculates a value between 1 and 255 to shade the raster with. Arcgis’s version of this function also uses some undocumented magic to model shadows, which is what we’ll be using.

Ideally you would want to use a line of sight function or viewsheds, but these are usually limited to a source within the bounds of the terrain layer and are therefore useless for satellites, which are hundreds to tens of thousands of kilometres away. Ray tracing is another alternative but is best avoided for computational reasons.

Composition of hillshades for multiple GEO satellites over a village in Yorkshire. White regions have no line of sight to a satellite. Data source: Environment Agency

Step-by-Step

Choose a region covered by composite LIDAR, use gdal to combine the ascii grid files into a single terrain file (.tif). Make sure you use a projected coordinate system like EPSG:27700 with equal units for the x,y,z axes (metres).

Run the hillshade command for your chosen satellite position - a calculator for geostationary satellites can be found here. After this, reclassify your values above zero to one, (1-255)⇒1, which means yes there is line of sight, and keep your zero values as zero, as they represent areas of the raster which are in shadow. Repeat this for as many different layers as satellites, and sum them all up.

After this you can calculate any metrics you would like. For example you can sample the raster at specific points or over a certain land type to get information about the number of satellites visible from that area. This could also be extended to low-earth orbit constellations.

Notes

In addition to line of sight availability, there is also technical availability which is based on the components of each satellite and terminal.

Most libraries I found use the 1–255 hillshade, like gdaldem, but I couldn’t find another one that models shadows as well as arcgis does. Suggestions appreciated!