使用 iris 转换日历
Convert calendar using iris
如何使用 Iris 转换日历?例如,将 'gregorian' 日历转换为 '365_day'?
此刻,我正在做
original_tcoord = cube_in.coords()[tcoord_idx]
tmp_time = cf_units.num2date(
original_tcoord.points,
original_tcoord.units.name,
target_calendar,
)
new_time = cf_units.date2num(
tmp_time,
original_tcoord.units.name,
target_calendar,
)
new_unit = cf_units.Unit(
original_tcoord.units.name,
calendar=target_calendar
)
new_tcoord = iris.coords.DimCoord(
new_time,
standard_name=original_tcoord.standard_name,
long_name=original_tcoord.long_name,
var_name=original_tcoord.var_name,
units=new_unit,
)
cube_adjusted = cube_in.copy()
cube_adjusted.remove_coord('time')
cube_adjusted.add_dim_coord(
new_tcoord,
tcoord_idx
)
确定这不是最快的方法吗?
这可能更简单,只需替换现有坐标上的单位即可:
tcoord = cube.coord('time')
tcoord.units = cf_units.Unit(tcoord.units.origin, calendar='gregorian')
此建议来自 Ruth Comer 而不是我,但我按照建议重新发布在这里。
如何使用 Iris 转换日历?例如,将 'gregorian' 日历转换为 '365_day'?
此刻,我正在做
original_tcoord = cube_in.coords()[tcoord_idx]
tmp_time = cf_units.num2date(
original_tcoord.points,
original_tcoord.units.name,
target_calendar,
)
new_time = cf_units.date2num(
tmp_time,
original_tcoord.units.name,
target_calendar,
)
new_unit = cf_units.Unit(
original_tcoord.units.name,
calendar=target_calendar
)
new_tcoord = iris.coords.DimCoord(
new_time,
standard_name=original_tcoord.standard_name,
long_name=original_tcoord.long_name,
var_name=original_tcoord.var_name,
units=new_unit,
)
cube_adjusted = cube_in.copy()
cube_adjusted.remove_coord('time')
cube_adjusted.add_dim_coord(
new_tcoord,
tcoord_idx
)
确定这不是最快的方法吗?
这可能更简单,只需替换现有坐标上的单位即可:
tcoord = cube.coord('time')
tcoord.units = cf_units.Unit(tcoord.units.origin, calendar='gregorian')
此建议来自 Ruth Comer 而不是我,但我按照建议重新发布在这里。