目标是计算气候指标tn10p (Tmin <第10个百分位数)基于icclim包(链接)。或者,我尝试了xclim包中的相同指示器。(在这里)。我想计算特定时间段的预测因子,例如:'>
1 -打开xarray数据集(每3小时)
t2m = xa.open_dataset('filepath.nc', decode_cf = True, decode_coords = "all").sel(time=slice('1960-12-01', '1961-01-31'))
2 -计算最低日温度值
t2m_min = t2m.t2m.resample(time='1D').min(keep_attrs = True)
3.1 - With Icclim:
icclim_tn10p = icclim._generated_api.tn10p(in_files=t2m_min, slice_mode=['season',([12,1])])
3.2 -使用xClim:
t2m_min_q10 = percentile_doy(arr = t2m_min, window=5, per=10).sel(percentiles=10)
xclim_tn10p = xclim.indicators.atmos.tn10p(tasmin = t2m_min, t10 = t2m_min_q10)
在3.1和3.2两种情况下,我得到以下ValueError:
ValueError: conflicting sizes for dimension 'dayofyear': length 61 on <this-array> and length 365 on {'longitude': 'longitude', 'latitude': 'latitude', 'dayofyear': 'dayofyear', 'percentiles': 'percentiles'}
我认为问题是percentile_doy
函数(链接)似乎只适用于365或366个日历天。对于如何解决这个问题有什么建议吗?
似乎与这个xclim问题有关。
icclim库的工作方式如下:
- 使用slice_mode='month'计算每年的tn10p
- 从输出数组中选择时间范围
但是,这个过程会降低性能。