libera_utils.footprint_matching.types.RadiometerFootprint#

class libera_utils.footprint_matching.types.RadiometerFootprint(bbox: BoundingBox | None, time: datetime64, latitude: float, longitude: float, viewing_zenith_angle: float, subsatellite_latitude: float, subsatellite_longitude: float, satellite_radius_km: float, cone_angle_rate: float | None = None, off_limb: bool = False)#

Bases: object

One radiometer-timescale footprint, ready for external-variable aggregation.

The radiometer-timescale FMATCH modes take their footprints straight from the L1B Daily radiometer product. This is the minimal object the aggregation path needs: a geographic bounding box (the region the readers serve ancillary samples from) plus the boresight geolocation and viewing zenith the PSF weighting reads. It is the radiometer-path analog of the camera path’s PseudoFootprint, kept deliberately small so it stays dependency-free here.

The subsatellite point and satellite radius are required: L1B RAD populates them from the ephemeris for every record, and together with the boresight they fix the satellite viewing frame the ray-traced bounding box (compute_footprint_bounding_box()) and the PSF weighting are built on.

Variables:
  • bbox (BoundingBox or None) – Geographic box enclosing the footprint’s PSF ground contour, or None exactly when off_limb (an off-Earth view has no ground contour).

  • time (np.datetime64) – Radiometer observation time (L1B RADIOMETER_TIME). The readers’ time selection (TimeMatch) matches ancillary samples to it.

  • latitude (float) – Boresight centroid latitude (L1B Latitude), degrees.

  • longitude (float) – Boresight centroid longitude (L1B Longitude), degrees.

  • viewing_zenith_angle (float) – Viewing zenith angle (L1B Viewing_Zenith_Surface), degrees.

  • subsatellite_latitude (float) – Geodetic sub-point latitude of the spacecraft (L1B Subsatellite_Latitude), degrees.

  • subsatellite_longitude (float) – Geodetic sub-point longitude of the spacecraft (L1B Subsatellite_Longitude), degrees.

  • satellite_radius_km (float) – Spacecraft distance from Earth’s center (L1B Radius_of_Satellite_from_Center_of_Earth), km. Not L1B Altitude, which is the height of the boresight’s ellipsoid intersection.

  • cone_angle_rate (float or None) – Instrument cone-angle rate (L1B Cone_Angle_Rate), degrees per second: negative toward nadir, positive away, 0 when the scanner is stationary. None when unavailable. TODO[LIBSDC-884]: adopt libera_rad PR #34’s (LIBSDC-739) definition and fill convention once it merges, and handle a footprint with no usable rate in one stated way: kept, weighted direction-independently, and QA-flagged.

  • off_limb (bool) – True for a space / calibration view whose centroid is off the Earth’s limb, i.e. one with no Earth footprint (OffLimbError). bbox is then None; the aggregation path skips these records (fill values, zero coverage) and flags them OFF_LIMB.

Raises:

ValueError – If bbox is None while off_limb is False, or a bbox is given while off_limb is True.

__init__(bbox: BoundingBox | None, time: datetime64, latitude: float, longitude: float, viewing_zenith_angle: float, subsatellite_latitude: float, subsatellite_longitude: float, satellite_radius_km: float, cone_angle_rate: float | None = None, off_limb: bool = False) → None#

Attributes

cone_angle_rate: float | None = None#
off_limb: bool = False#