bolides.fov_utils.get_satellites#

bolides.fov_utils.get_satellites(lat, lon, time, numbers_only=False)[source]#

Determine which GOES satellites’ GLM could observe a spatiotemporal point.

Given a point (or several points) in space and time, returns the GOES satellites (16, 17, 18, 19) whose Geostationary Lightning Mapper was both operational and had the point within its field of view at that time. This is the per-point inverse of filter_observation, and does not require a BolideDataFrame.

The operational windows and FOV orientations come from the packaged data/glm##_obs.csv files (see get_obs_intervals); the FOV polygons come from get_boundary. GOES-18 reuses the GOES-West FOV and GOES-19 the GOES-East FOV.

Parameters:
lat, lon: float or array-like of float

Latitude and longitude of the point(s), in degrees (EPSG:4326).

time: str, `~datetime.datetime`, or array-like

The time(s) of the point(s). Strings are parsed with fromisoformat; naive times are assumed to be UTC. Must be the same length as lat and lon (a single point may use scalars for all three).

numbers_only: bool

If False (default), return structured per-satellite information. If True, return only the satellite numbers.

Returns:
DataFrame or list
  • If numbers_only is False (default): a DataFrame with one row per observing (point, satellite), with columns latitude, longitude, time, satellite, position ('east'/'west'), boundary, inverted, 'Instrument Operational' and 'Instrument Disabled' (the latter is 'Still In Operation' for satellites that have not been retired). For array input a leading point column gives the 0-based index into the inputs.

  • If numbers_only is True: for a single point, a sorted list of observing satellite integers; for array input, a list of such lists, one per point.