satkit.events.eventfinders

Event finders for ground based events and intervals.

Functions

gnd_illum_finder(search_interval, gnd_pos, ...)

Finds illumination periods of a ground location.

gnd_pass_finder(search_interval, gnd_pos, ...)

Finds satellite (or any object with a trajectory) "passes" over a ground location.

sat_illum_finder(search_interval, propagator)

Finds satellite (or any object with a trajectory) illumination (or outside occultation) times.

Classes

StandardDawnDuskElevs(value[, names, ...])

Standard elevations definitions.

class StandardDawnDuskElevs(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Standard elevations definitions.

ASTRONOMICAL_DAWN_DUSK_ELEVATION = <Quantity(-18.0, 'degree')>
CIVIL_DAWN_DUSK_ELEVATION = <Quantity(-6.0, 'degree')>
NAUTICAL_DAWN_DUSK_ELEVATION = <Quantity(-12.0, 'degree')>
gnd_illum_finder(search_interval, gnd_pos, dawn_dusk_elev, sun_coords=None, planet=None, refraction_model=None, sun_stepsize=<Quantity(600, 'second')>)[source]

Finds illumination periods of a ground location.

This method is not limited to a ground location on Earth (as defined by the planet parameter). It uses the Orekit GroundAtNightDetector to find the “Sun elevation equal to elevation limit” events. However, the cases with “no events in the search interval” are handled correctly. The output is a TimeIntervalList which can then be intersected with another interval list, for example “satellite pass over ground location intervals”.

Sun positions are by default generated every 10 minutes and the underlying interpolator (the Ephemeris propagator) uses 5 data points.

The method accepts both a fixed elevation mask or the values in the StandardDawnDuskElevs enumerator.

The planet parameter can be any OneAxisEllipsoid with its own fixed frame. For example, Earth can be generated as follows:

itrf = FramesFactory.getITRF(IERSConventions.IERS_2010, True)
earth = OneAxisEllipsoid(Constants.WGS84_EARTH_EQUATORIAL_RADIUS,
                         Constants.WGS84_EARTH_FLATTENING,
                         itrf)

If the gnd_pos parameter is defined as a TopocentricFrame, then the optional planet parameter is ignored. Otherwise, it is set to Earth as given above.

Atmospheric Refraction Model should be set to None to ignore the atmospheric refraction. It can be set to EarthITU453AtmosphereRefraction or EarthStandardAtmosphereRefraction (provided by Orekit), though the ITU 453 refraction model which can compute refraction at large negative elevations should be preferred. For visual applications, typically Astronomical Dawn/Dusk definition is used.

Return type

TimeIntervalList

Parameters
  • search_interval (TimeInterval) – Search interval for the “events”

  • gnd_pos (org.orekit.bodies.GeodeticPoint | org.orekit.frames.TopocentricFrame) – Ground position in geodetic coordinates (or the topocentric frame associated with it)

  • dawn_dusk_elev (float | pint.registry.Quantity | satkit.events.eventfinders.StandardDawnDuskElevs) – Elevation mask a fixed value

  • sun_coords (PVCoordinatesProvider) – Propagator (or PVCoordinatesProvider) to generate the trajectory of the Sun

  • planet (OneAxisEllipsoid) – The planet where the ground position is located. Defaults to WGS84 Earth.

  • refraction_model (AtmosphericRefractionModel) – Atmospheric Refraction Model, defaults to None

  • sun_stepsize (float | pint.registry.Quantity) – Stepsize for the sun trajectory generation / interpolation

Returns

List of time intervals corresponding to the “sun elevation above the elev mask”

Return type

TimeIntervalList

gnd_pass_finder(search_interval, gnd_pos, elev_mask, propagator, planet=None, refraction_model=None)[source]

Finds satellite (or any object with a trajectory) “passes” over a ground location.

This method is not limited to a ground location on Earth (as defined by the planet parameter). It uses the Orekit ElevationDetector to find the “elevation equal to elevation mask” events. However, the cases with “no events in the search interval” are handled correctly. The output is a TimeIntervalList which can then be intersected with another interval list, for example “ground location illuminated intervals”.

The method accepts both a fixed elevation mask or an ElevationMask with a complex mask shape.

The planet parameter can be any OneAxisEllipsoid with its own fixed frame. For example, Earth can be generated as follows:

itrf = FramesFactory.getITRF(IERSConventions.IERS_2010, True)
earth = OneAxisEllipsoid(Constants.WGS84_EARTH_EQUATORIAL_RADIUS,
                         Constants.WGS84_EARTH_FLATTENING,
                         itrf)

If the gnd_pos parameter is defined as a TopocentricFrame, then the optional planet parameter is ignored. Otherwise, it is set to Earth as given above.

Atmospheric Refraction Model should be set to None for communications applications. It can be set to EarthITU453AtmosphereRefraction or EarthStandardAtmosphereRefraction (provided by Orekit) for visual or optical applications.

Return type

tuple[TimeIntervalList, list[AbsoluteDateExt]]

Parameters
  • search_interval (TimeInterval) – Search interval for the “elevation events”

  • propagator (Propagator) – Propagator to generate the trajectory of the satellite (or any other object)

  • gnd_pos (org.orekit.bodies.GeodeticPoint | org.orekit.frames.TopocentricFrame) – Ground position in geodetic coordinates (or the topocentric frame associated with it)

  • elev_mask (float | pint.registry.Quantity | org.orekit.utils.ElevationMask) – Elevation mask, either a fixed value or a complex mask shape

  • planet (OneAxisEllipsoid) – The planet where the ground location is located. Defaults to WGS84 Earth.

  • refraction_model (AtmosphericRefractionModel) – Atmospheric Refraction Model, defaults to None

Returns

List of time intervals corresponding to the “elevation above the mask” and max elevation times as a tuple

Return type

tuple[TimeIntervalList, list[AbsoluteDateExt]]

sat_illum_finder(search_interval, propagator, use_total_eclipse=True, angular_margin=0.0, sun_coords=None, planet=None)[source]

Finds satellite (or any object with a trajectory) illumination (or outside occultation) times.

This method computes the durations outside umbra or penumbra for a point object (e.g., a satellite) on a trajectory. It uses the Orekit EclipseDetector to find the umbra/penumbra entry and exit events. However, the cases with “no events in the search interval” are handled correctly. The output is a TimeIntervalList which can then be intersected with another interval list, for example “satellite pass over ground location intervals”.

The use_total_eclipse flag is used to find umbra or penumbra entry/exit events. The angular_margin parameter added to the eclipse detection. A positive margin implies eclipses are “larger” hence entry occurs earlier and exit occurs later than a detector with 0 margin.

The planet parameter can be any OneAxisEllipsoid with its own fixed frame. For example, Earth can be generated as follows (which is the default, if None is given):

itrf = FramesFactory.getITRF(IERSConventions.IERS_2010, True)
earth = OneAxisEllipsoid(Constants.WGS84_EARTH_EQUATORIAL_RADIUS,
                         Constants.WGS84_EARTH_FLATTENING,
                         itrf)

The same method can be used to find eclipses due to the Moon, by simply replacing the planet parameter with the Moon definition.

Return type

TimeIntervalList

Parameters
  • search_interval (TimeInterval) – Search interval for the “events”

  • propagator (Propagator) – Propagator to generate the trajectory of the satellite (or any other object)

  • use_total_eclipse (bool) – Total eclipse detection flag (true for umbra events detection, false for penumbra events detection)

  • angular_margin (float | pint.registry.Quantity) – Angular margin added to the eclipse detection

  • sun_coords (PVCoordinatesProvider) – Propagator (or PVCoordinatesProvider) to generate the trajectory of the Sun

  • planet (OneAxisEllipsoid) – The planet that occults the satellite. Defaults to WGS84 Earth.

Returns

List of time intervals corresponding to the “elevation above the mask”

Return type

TimeIntervalList