bsrn.physics.geometry.add_solpos_columns#

bsrn.physics.geometry.add_solpos_columns(df, station_code=None, lat=None, lon=None, elev=None)[source]#

Adds high-precision solar geometry and extraterrestrial irradiance columns to a DataFrame.

Location can be given by BSRN station code or by explicit lat/lon/elev.

Parameters:
  • df (pd.DataFrame) – Input data with pd.DatetimeIndex.

  • station_code (str, optional) – BSRN station abbreviation. [e.g. ‘QIQ’] Used if lat/lon/elev not provided.

  • lat (float, optional) – Latitude. [degrees] Required if station_code omitted.

  • lon (float, optional) – Longitude. [degrees] Required if station_code omitted.

  • elev (float, optional) – Elevation. [m] Required if station_code omitted.

Returns:

df – DataFrame with added ‘zenith’, ‘apparent_zenith’, ‘azimuth’, ‘bni_extra’, and ‘ghi_extra’ columns.

Return type:

pd.DataFrame

Raises:
  • ValueError – If df.index is not a DatetimeIndex.

  • ValueError – If the median timestep is > 5 minutes (prevents non-linear geometric errors).

  • ValueError – If neither a valid station_code nor complete (lat, lon, elev) is provided.