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. 向 DataFrame 添加高精度太阳几何和地外辐射列。

Location can be given by BSRN station code or by explicit lat/lon/elev. 位置可由 BSRN 站点代码指定,或由显式的 lat/lon/elev 指定。

Parameters:
  • df (pd.DataFrame) – Input data with pd.DatetimeIndex. 包含 DatetimeIndex 的输入数据。

  • station_code (str, optional) – BSRN station abbreviation. [e.g. ‘QIQ’] Used if lat/lon/elev not provided. BSRN 站点缩写。[例如 ‘QIQ’]。未提供 lat/lon/elev 时使用。

  • lat (float, optional) – Latitude. [degrees] Required if station_code omitted. 纬度。[度]。未提供 station_code 时必填。

  • lon (float, optional) – Longitude. [degrees] Required if station_code omitted. 经度。[度]。未提供 station_code 时必填。

  • elev (float, optional) – Elevation. [m] Required if station_code omitted. 海拔。[米]。未提供 station_code 时必填。

Returns:

df – DataFrame with added ‘zenith’, ‘apparent_zenith’, ‘azimuth’, ‘bni_extra’, and ‘ghi_extra’ columns. 增加了 ‘zenith’、’apparent_zenith’、’azimuth’、’bni_extra’ 和 ‘ghi_extra’ 列的 DataFrame。

Return type:

pd.DataFrame

Raises:
  • ValueError – If df.index is not a DatetimeIndex. / 索引非 DatetimeIndex。

  • ValueError – If the median timestep is > 5 minutes (prevents non-linear geometric errors). 若数据时间步长大于 5 分钟(防止非线性几何误差)。

  • ValueError – If neither a valid station_code nor complete (lat, lon, elev) is provided. 若既未提供有效 station_code 也未提供完整的 (lat, lon, elev)。