Climate indices computation package based on Xarray with extensive climate analysis capabilities
Specialized indicators for converting between climate-related units and computing derived indices like heat index, wind chill, and humidity measures. These indicators are essential for human comfort assessment and meteorological applications.
Heat stress and thermal comfort indices for human health and safety assessment.
def heat_index(tas, hurs, freq="YS"):
"""
Heat index combining temperature and humidity effects.
Parameters:
- tas: xr.DataArray, daily mean or maximum temperature
- hurs: xr.DataArray, daily relative humidity
- freq: str, resampling frequency (default "YS")
Returns:
xr.DataArray: Heat index values
"""
def humidex(tas, hurs, freq="YS"):
"""
Humidex (Canadian humidity index) for perceived temperature.
Parameters:
- tas: xr.DataArray, daily temperature
- hurs: xr.DataArray, daily relative humidity
- freq: str, resampling frequency
Returns:
xr.DataArray: Humidex values
"""
def wind_chill_index(tas, sfcwind, freq="YS"):
"""
Wind chill index for perceived cold temperature.
Parameters:
- tas: xr.DataArray, daily temperature
- sfcwind: xr.DataArray, daily wind speed
- freq: str, resampling frequency
Returns:
xr.DataArray: Wind chill index values
"""Temperature and precipitation unit conversion utilities.
def temperature_sum(tas, thresh="0 degC", freq="YS"):
"""
Temperature sum above/below threshold with unit conversion.
Parameters:
- tas: xr.DataArray, daily temperature with units
- thresh: str, threshold temperature with units
- freq: str, resampling frequency
Returns:
xr.DataArray: Temperature sum in degree-days
"""
def rain_approximation(prsn, tas, thresh="0 degC", freq="YS"):
"""
Approximate rainfall from snowfall using temperature threshold.
Parameters:
- prsn: xr.DataArray, daily snowfall data
- tas: xr.DataArray, daily temperature
- thresh: str, temperature threshold for rain/snow (default "0 degC")
- freq: str, resampling frequency
Returns:
xr.DataArray: Approximated rainfall
"""
def snowfall_approximation(pr, tas, thresh="0 degC", freq="YS"):
"""
Approximate snowfall from precipitation using temperature threshold.
Parameters:
- pr: xr.DataArray, daily precipitation data
- tas: xr.DataArray, daily temperature
- thresh: str, temperature threshold for rain/snow (default "0 degC")
- freq: str, resampling frequency
Returns:
xr.DataArray: Approximated snowfall
"""import xarray as xr
import xclim.convert as xcc
# Load weather data
ds = xr.open_dataset("weather.nc")
tas = ds.tas
hurs = ds.hurs
sfcwind = ds.sfcwind
# Calculate heat stress indices
heat_idx = xcc.heat_index(tas, hurs, freq="YS")
humidex_vals = xcc.humidex(tas, hurs, freq="YS")
wind_chill = xcc.wind_chill_index(tas, sfcwind, freq="YS")