用虹膜计算一些季节性气候指标

问题描述

我有一个新项目,正在计算一些季节性气候指标。作为其中的一部分,我需要在一组气候月度数据中确定例如最湿的季度:

print(pr_cube)
 
Precipitation / (mm)                (time: 12; latitude: 125; longitude: 211) 
     Dimension coordinates:
          time                           x             -               -
          latitude                       -             x               -
          longitude                      -             -               x
 

每个月的时间,平均30年,coord('time)=

DimCoord([2030-01-01 00:00:00,2030-02-01 00:00:00,2030-03-01 00:00:00,2030-04-01 00:00:00,2030-05-01 00:00:00,2030-06-01 00:00:00,2030-07-01 00:00:00,2030-08-01 00:00:00,2030-09-01 00:00:00,2030-10-01 00:00:00,2030-11-01 00:00:00,2030-12-01 00:00:00]

我想知道是否可以为连续3个月的所有集合添加一个季节坐标,包括“环绕”,诸如此类:

iris.coord_categorisation.add_season(cube,coord,name='season',seasons=(''jfm','fma','mam','amj','mjj','jja','jas','aso','son','ond','ndj','djf'))
   

season = ('jfm','djf')
iris.coord_categorisation.add_season_membership(cube,season,name='all_quarters')
 

还没有测试,只是想知道是建议还是建议?

然后,获得最大降雨的季节吗?

Qtr_max_rain = pr_cube.collapsed('season',iris.analysis.MAX)

可以正常工作吗?

解决方法

也许有一种方法可以使用coord_categorisation来实现,但是我认为最简单的方法是改为使用iris.cube.Cube.rolling_window()。没有原生方法可以根据需要进行包装,因此可以通过在现有数据的末尾复制Jan和Feb来破解它。

我已经测试了以下内容,它似乎可以正常工作。希望它对您有用。

# Create extra cube based on Jan and Feb from pr_cube.
extra_months_cube = pr_cube[:2,...]
# Replace time coordinate with another that is advanced by a year - ensures correct sorting.
# Adjust addition depending on the unit of the time coordinate.
extra_months_coord = extra_months_cube.coord("time") + (24 * 365)
extra_months_cube.remove_coord("time")
extra_months_cube.add_dim_coord(extra_months_coord,0)

# Combine original cube with extra cube.
both_cubes = iris.cube.CubeList([pr_cube,extra_months_cube])
fourteen_month_cube = both_cubes.concatenate_cube()

# Generate cube of 3-month MAX aggregations.
rolling_cube = fourteen_month_cube.rolling_window("time",iris.analysis.MAX,3)

完成后,您当然可以使用iris.cube.Cube.add_aux_coord()添加建议的三个月标签。