interpolate

irisではregridができる(xarrayではできない).

たとえば,0.5 x 0.5 グリッドのデータをJRA55のTL319のgridに,線形補間(Linear)でできるところは線形補間で,それ以外はNearestでのregridを次のようにして行った.

import numpy as np

import iris

import copy

jra_TL319_fn='/data/REANALYSES/JRA55-derived/sav.nc/fcst_surf/tmp2m_ENSOYR_1959-2018.nc'

jra_cube=iris.load_cube(jra_TL319_fn)

lats1d=jra_cube.coord('latitude')

lons1d=jra_cube.coord('longitude')

sample_points=[('latitude',lats1d.points),('longitude', lons1d.points)]

airtemp_land_fn='/data/IN-SITU_GRD/GHCN_CAMS_land_airtemp_0.5x0.5_1948-present/org/air.mon.mean.nc'

airtemp_land_cube=iris.load_cube(airtemp_land_fn)

airtemp_regrid_Linear=airtemp_land_cube.interpolate(sample_points, iris.analysis.Linear())

airtemp_regrid_Nearest=airtemp_land_cube.interpolate(sample_points, iris.analysis.Nearest())

airtemp_regrid=airtemp_regrid_Linear.copy()

fill_position=np.where(airtemp_regrid_Linear.data.mask==True)

airtemp_regrid.data[fill_position]=airtemp_regrid_Nearest.data[fill_position]

iris.save(airtemp_regrid,'air.TL319.mon.mean.nc')

# iris.save(airtemp_regrid_Linear,'air.Linear.TL319.mon.mean.nc') # for check

# iris.save(airtemp_regrid_Nearest,'air.Nearest.TL319.mon.mean.nc') # for check