Satellite Constellations API#

class rubin_sim.satellite_constellations.Constellation(sat_tle_list, alt_limit=20.0, fov=3.5)[source]#

Bases: object

Holds the constellation TLEs and calculates their appearance in a series of observations.

  • sat_tle_list (list [str]) – A list of satellite TLEs to be used

  • alt_limit (float) – Altitude limit below which satellites can be ignored (degrees)

  • fov (float) – The field of view diameter (degrees)

check_pointings(pointing_ras, pointing_decs, mjds, visit_time, fov_radius=1.75, test_radius=10.0, dt=2.0)[source]#

Calculate streak length and number of streaks in a set of visits.

  • pointing_ras (np.ndarray, (N,)) – The RA for each pointing (degrees).

  • pointing_decs (np.ndarray, (N,)) – The dec for each pointing (degrees).

  • mjds (np.ndarray, (N,)) – The MJD for the (start) of each pointing (days).

  • visit_time (np.ndarray, (N,)) – The start to end time for a visit (seconds).

  • fov_radius (float) – The radius of the science field of view (degrees)

  • test_radius (float) – The radius to use to see if a streak gets close (degrees). Should be large, because satellites can be moving at ~1 deg/s.

  • dt (float) – The timestep to use for high resolution checking if a satellite crossed (seconds).


  • streak length (float) – The total length of satellite streaks in the FoV (degrees)

  • n_streak (int) – The number of streaks that were in the FoV.


Calculate and return the RA/Dec/Alt and illumination status for all the satellites at an array of times.


mjds (np.ndarray, (N,)) – Modified Julian Dates.


  • ras (np.ndarray, (N,)) – RAs at each MJD

  • decs (np.ndarray, (N,)) – Decs at each MJD

  • alts (np.ndarray, (N,)) – Altitudes at each MJD

  • illums (np.ndarray, (N,)) – Array of bools for if satellite is illuminated


Calculate and record the alt/az position and illumination status for all the satellites at a given time.


mjd (float) – New MJD.

class rubin_sim.satellite_constellations.ModelObservatory(nside=None, mjd_start=None, seed=42, alt_min=5.0, lax_dome=True, cloud_limit=0.3, sim_to_o=None, seeing_db=None, park_after=10.0, init_load_length=10, sat_nside=64, satellite_dt=10.0, constellation=None, alt_limit=20.0)[source]#

Bases: ModelObservatory

A class to generate a realistic telemetry stream for the scheduler

  • nside (int) – The healpix nside resolution

  • mjd_start (float) – The MJD to start the observatory up at. Uses util to lookup default if None.

  • alt_min (float) – The minimum altitude to compute models at (degrees).

  • lax_dome (bool) – Passed to observatory model. If true, allows dome creep.

  • cloud_limit (float) – The limit to stop taking observations if the cloud model returns something equal or higher

  • sim_to_o (sim_targetoO) – If one would like to inject simulated ToOs into the telemetry stream.

  • seeing_db (str) – If one would like to use an alternate seeing database, filename of sqlite file

  • park_after (float) – Park the telescope after a gap longer than park_after (minutes)

  • init_load_length (int) – The length of pre-scheduled sky brighntess to load initially (days).

  • alt_limit (float) – Altitude limit for considering satellite streaks (degrees).

  • satellite_dt (float) – The time step to use for computing satellite positions (seconds).

  • sat_nside (int) – The HEALpix nside to use for satellite streak maps.

  • constellation (rubin_sim.satellite_constellations.Constellation) – The satellite constellation to use.


conditions – Current conditions as simulated by the ModelObservatory.

Return type:


class rubin_sim.satellite_constellations.SatelliteAvoidBasisFunction(nside=32, forecast_time=90.0, smooth_fwhm=3.5)[source]#

Bases: BaseBasisFunction

Uses satellite position information from the Conditions object and then avoids streaks.

  • forecast_time (float) – The time ahead to forecast satellite streaks (minutes).

  • smooth_fwhm (float) – The smoothing full width half max to use (degrees)

rubin_sim.satellite_constellations.create_constellation(altitudes, inclinations, nplanes, sats_per_plane, epoch=23274.0, name='Test', seed=42)[source]#

Create a set of orbital elements for a satellite constellation then convert them to TLEs.

  • altitudes (np.ndarray, (N,)) – Altitudes (degrees).

  • inclinations (np.ndarray, (N,)) – Inclinations (degrees).

  • nplanes (np.ndarray, (N,)) – Number of satellite planes.

  • sats_per_plane (np.ndarray, (N,)) – Number of satellites per orbital plane.

  • epoch (float) – Epoch.

  • name (str) – Satellite name.

  • seed (float) – Random number seed.



Return type:

list of str


Create a list of satellite TLE’s appropriate for OneWeb plans (as of July 2022). Should create 6,372 orbits



Return type:

list [str]

Create a list of satellite TLE’s, appropriate for Starlink v1 (as of July 2022). Should create 4,408 orbits



Return type:

list [str]

Create a list of satellite TLE’s appropriate for Starlink v2 (as of July 2022). Should create 29,988 orbits



Return type:

list [str]


Return sun altitude limits (degrees) at which zero illuminated satellites above 20 degrees altitude result.

Different constellations have different limits at which zero illumination above 20 degrees occurs.


sun_alt_limits – Dict with satellite constellation name keys, altitude limits values (degrees).

Return type:

dict [str: float]