Usage of ElevationMask

Hi all,

I’m new to Orekit and I’d like to construct an ElevationMask from SRTM3 data that I’ve read into memory. I intend to use this in conjunction with TopocentricFrame > ComputeLimitVisibility to determine satellite visibility over the horizon.

However, I cannot figure out what format/layout the 2D Double Array is supposed to be in [new ElevationMask(double[][]) ], and how this is related to a series of Geodetic points which define the mask.

I may be going about this entirely wrong, but if anyone has any suggestions I’d be very grateful.



Hi Simon,

You’re right, the documentation for ElevationMask [1] does not define what its input parameters are. Could you create a bug to fix that? Patches welcome.

From the source it seems that mask[i][0] are the azimuth values and mask[i][1] are the corresponding elevation values. You should also be able to provide a custom implementation of ElevationMask if you want.

To avoid confusion, elevation here is the elevation angle, while in the SRTM data it is height.



Note that this is a challenging task, I would not recommend it for someone new to Orekit. It implies that for any azimuth direction, you have to find the largest elevation that still crosses the Digital Elevation Model surface. This initial computation is done only once for each ground station, but it is not easy. There are building blocks that would help performing it in Orekit sister project Rugged. The project is aimed at remote sensing so the API deals with orbit/attitude for the sensor, not with a fixed point, so you would have to delve into the lower level API, mainly the Duvenhage algorithm implementation.

Clearly, I would suggest you to ask for someone else to help you on this. You can ask on the Rugged usage category of this forum (and I may even help you there).

Hi Evan,

This is exactly the information I was looking for! I’ve now got it all working, many thanks for your help.

Kind Regards,


Edit - Bug submitted regarding javadoc