hypergas.angles module

Calculate 2D angles for hyperspectral satellite observations.

class hypergas.angles.Angle2D(start_time, end_time, lons: ndarray, lats: ndarray, tle1: str, tle2: str)[source]

Bases: object

Calculate 2D angle fields (SZA, SAA, VZA, VAA, RAA, SGA) for satellite observations.

This class computes solar and viewing geometry angles by: 1. Extracting corner and center points from 2D lon/lat grids 2. Computing angles at these key points 3. Interpolating to create full 2D fields

Initialize Angle2D calculator.

Parameters:
  • start_time (datetime) – Acquisition start time

  • end_time (datetime) – Acquisition end time

  • lons (numpy.ndarray (nrows, ncols)) – Longitude grid [degrees]

  • lats (numpy.ndarray (nrows, ncols)) – Latitude grid [degrees]

  • tle1 (str) – TLE line 1 for satellite orbit

  • tle2 (str) – TLE line 2 for satellite orbit

compute_all() Dataset[source]

Compute all six angle fields and return as xarray.Dataset.

Returns:

ds (xr.Dataset) – Dataset containing all angle fields as DataArrays: - ‘sza’: Solar zenith angle [degrees] - ‘saa’: Solar azimuth angle [degrees] - ‘vza’: Viewing zenith angle [degrees] - ‘vaa’: Viewing azimuth angle [degrees] - ‘raa’: Relative azimuth angle [degrees] - ‘sga’: Sun glint angle [degrees]

Each DataArray has the same dimensions and coordinates as the input lon/lat.

compute_sza_saa() Tuple[DataArray, DataArray][source]

Compute 2D solar zenith and azimuth angle fields.

Returns:

  • sza (xr.DataArray (nrows, ncols)) – Solar zenith angle [degrees]

  • saa (xr.DataArray (nrows, ncols)) – Solar azimuth angle [degrees]

compute_vza_vaa() Tuple[DataArray, DataArray][source]

Compute 2D viewing zenith and azimuth angle fields.

Returns:

  • vza (xr.DataArray (nrows, ncols)) – Viewing zenith angle [degrees]

  • vaa (xr.DataArray (nrows, ncols)) – Viewing azimuth angle [degrees]

hypergas.angles.compute_raa(saa: DataArray, vaa: DataArray) DataArray[source]

Compute relative azimuth angle (RAA).

RAA is the absolute difference between solar and viewing azimuth, constrained to [0, 180] degrees.

Parameters:
  • saa (xr.DataArray (nrows, ncols)) – Solar azimuth angle [degrees]

  • vaa (xr.DataArray (nrows, ncols)) – Viewing azimuth angle [degrees]

Returns:

raa (xr.DataArray (nrows, ncols)) – Relative azimuth angle [degrees]

hypergas.angles.compute_sga(sza: DataArray, saa: DataArray, vza: DataArray, vaa: DataArray) DataArray[source]

Compute sun glint angle (SGA).

SGA is the angle between the sun’s reflection vector and the viewing direction, relevant for water surface reflectance.

Parameters:
  • sza (xr.DataArray (nrows, ncols)) – Solar zenith angle [degrees]

  • saa (xr.DataArray (nrows, ncols)) – Solar azimuth angle [degrees]

  • vza (xr.DataArray (nrows, ncols)) – Viewing zenith angle [degrees]

  • vaa (xr.DataArray (nrows, ncols)) – Viewing azimuth angle [degrees]

Returns:

sga (xr.DataArray (nrows, ncols)) – Sun glint angle [degrees]

hypergas.angles.create_angle_dataarray(data: ndarray, name: str) DataArray[source]

Create an xarray.DataArray with proper dimensions and coordinates.

Parameters:
  • data (np.ndarray) – 2D angle data

  • name (str) – Variable name (e.g., ‘sza’, ‘saa’, ‘vza’, ‘vaa’, ‘raa’, ‘sga’)

Returns:

da (xr.DataArray) – DataArray with dimensions and CF-compliant attributes