Source code for xarray_regrid.methods.interp

"""Methods based on xr.interp."""

from typing import Literal, overload

import xarray as xr


@overload
[docs] def interp_regrid( data: xr.DataArray, target_ds: xr.Dataset, method: Literal["linear", "nearest", "cubic"], ) -> xr.DataArray: ...
@overload def interp_regrid( data: xr.Dataset, target_ds: xr.Dataset, method: Literal["linear", "nearest", "cubic"], ) -> xr.Dataset: ... def interp_regrid( data: xr.DataArray | xr.Dataset, target_ds: xr.Dataset, method: Literal["linear", "nearest", "cubic"], ) -> xr.DataArray | xr.Dataset: """Refine a dataset using xarray's interp method. Args: data: Input dataset. target_ds: Dataset which coordinates the input dataset should be regrid to. method: Which interpolation method to use (e.g. 'linear', 'nearest'). Returns: Regridded input dataset """ coord_names = set(target_ds.coords).intersection(set(data.coords)) coords = {name: target_ds[name] for name in coord_names} coord_attrs = {coord: data[coord].attrs for coord in coord_names} interped = data.interp( coords=coords, method=method, ) # xarray's interp drops some of the coordinate's attributes (e.g. long_name) for coord in coord_names: interped[coord].attrs = coord_attrs[coord] return interped