geocat.comp.interpolation.interp_multidim#
- geocat.comp.interpolation.interp_multidim(data_in, lat_out, lon_out, lat_in=None, lon_in=None, cyclic=False, missing_val=None, method='linear', fill_value=nan)#
Multidimensional interpolation of variables. Uses
xarray.interp
to perform interpolation. Will not perform extrapolation by default, returns missing values if any surrounding points contain missing values.Warning
The output data type may be promoted to that of the coordinate data.
- Parameters:
data_in (
xarray.DataArray
,numpy.ndarray
) – Data array with data to be interpolated and associated coords. If it is a np array, thenlat_in
andlon_in
must be provided. Length must be coordinated with given coordinates.lat_out (
numpy.ndarray
) – List of latitude coordinates to be interpolated to.lon_out (
numpy.ndarray
) – List of longitude coordinates to be interpolated to.lat_in (
numpy.ndarray
) – List of latitude coordinates corresponding todata_in
. Must be given ifdata_in
is not an xarray.lon_in (
numpy.ndarray
) – List of longitude coordinates corresponding todata_in
. Must be given ifdata_in
is not an xarray.cyclic (
bool
, optional) – Set as true if lon values are cyclical but do not fully wrap around the globe (0, 1.5, 3, …, 354, 355.5) Default is falsemissing_val (
np.number
, optional) – Provide a number to represent missing data. Alternative to usingnp.nan
method (
str
, optional) – Provide specific method of interpolation. Default is “linear” “linear” or “nearest” for multidimensional arrayfill_value (
str
, optional) – Set as ‘extrapolate’ to allow extrapolation of data. Default is no extrapolation.
- Returns:
data_out (
numpy.ndarray
,xarray.DataArray
) – Returns the same type of object as inputdata_in
. However, the type of the data in the array may be promoted to that of the coordinates. Shape will be the same as input array except for last two dimensions which will be equal to the coordinates given indata_out
.
Examples
>>> import xarray as xr >>> import numpy as np >>> import geocat.comp >>> data = np.asarray([[1, 2, 3, 4, 5, 99], ... [2, 4, 6, 8, 10, 12]]) >>> lat_in = [0, 1] >>> lon_in = [0, 50, 100, 250, 300, 350] >>> data_in = xr.DataArray(data, ... dims=['lat', 'lon'], ... coords={'lat':lat_in, ... 'lon': lon_in}) >>> data_out = xr.DataArray(dims=['lat', 'lon'], ... coords={'lat': [0, 1], ... 'lon': [0, 50, 360]}) >>> do = interp_multidim(data_in, ... [0, 1], ... [0, 50, 360], ... cyclic=True, ... missing_val=99) >>> print(do) <xarray.DataArray (lat: 2, lon: 3)> array([[ 1., 2., 99.], [ 2., 4., 99.]]) Coordinates: * lat (lat) int64 0 1 * lon (lon) int64 0 50 360
See also
Related External Functions: xarray.DataArray.interp, cartopy.util.add_cyclic_point
Related NCL Function: NCL linint2