{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Regrid between rectilinear grids\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import cartopy.crs as ccrs\n", "import numpy as np\n", "import xarray as xr\n", "import xesmf as xe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prepare data\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Input data\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We regrid xarray's built-in demo data. This data is also used by\n", "[xarray plotting tutorial](http://xarray.pydata.org/en/stable/plotting.html).\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
<xarray.Dataset>\n",
"Dimensions: (lat: 25, time: 2920, lon: 53)\n",
"Coordinates:\n",
" * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n",
" * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n",
" * time (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00\n",
"Data variables:\n",
" air (time, lat, lon) float32 ...\n",
"Attributes:\n",
" Conventions: COARDS\n",
" title: 4x daily NMC reanalysis (1948)\n",
" description: Data is from NMC initialized reanalysis\\n(4x/day). These a...\n",
" platform: Model\n",
" references: http://www.esrl.noaa.gov/psd/data/gridded/data.ncep.reanaly...<xarray.Dataset>\n",
"Dimensions: (lat: 59, lon: 87)\n",
"Coordinates:\n",
" * lat (lat) float64 16.0 17.0 18.0 19.0 20.0 ... 70.0 71.0 72.0 73.0 74.0\n",
" * lon (lon) float64 200.0 201.5 203.0 204.5 ... 324.5 326.0 327.5 329.0\n",
"Data variables:\n",
" *empty*<xarray.DataArray 'air' (time: 2920, lat: 59, lon: 87)>\n",
"array([[[296.1936 , 296.4933 , 296.64383, ..., 296.6239 , 296.57 ,\n",
" 296.35767],\n",
" [295.9 , 296.09998, 296.19998, ..., 295.9 , 295.9 ,\n",
" 295.43332],\n",
" [295.9 , 296.09998, 296.19998, ..., 295.9 , 295.9 ,\n",
" 295.43332],\n",
" ...,\n",
" [243.79999, 244.26666, 244.5 , ..., 233.63335, 235.29999,\n",
" 237.96663],\n",
" [243.79999, 244.26666, 244.5 , ..., 233.63335, 235.29999,\n",
" 237.96663],\n",
" [241.87102, 242.6313 , 243.01498, ..., 233.68292, 235.44838,\n",
" 237.66943]],\n",
"\n",
" [[296.26776, 296.8064 , 297.0761 , ..., 296.19287, 296.17752,\n",
" 296.2103 ],\n",
" [296.19998, 296.53333, 296.69998, ..., 295.56668, 295.5 ,\n",
" 295.23334],\n",
" [296.19998, 296.53333, 296.69998, ..., 295.56668, 295.5 ,\n",
" 295.23334],\n",
"...\n",
" [249.89 , 249.49 , 249.29 , ..., 241.69 , 242.48999,\n",
" 243.68997],\n",
" [249.89 , 249.49 , 249.29 , ..., 241.69 , 242.48999,\n",
" 243.68997],\n",
" [246.84814, 246.2443 , 245.9487 , ..., 243.05266, 243.60286,\n",
" 244.30954]],\n",
"\n",
" [[297.2945 , 297.6252 , 297.79266, ..., 296.21606, 296.0664 ,\n",
" 295.7324 ],\n",
" [296.09 , 296.62332, 296.88998, ..., 295.69 , 295.69 ,\n",
" 295.35666],\n",
" [296.09 , 296.62332, 296.88998, ..., 295.69 , 295.69 ,\n",
" 295.35666],\n",
" ...,\n",
" [249.89 , 249.49 , 249.29 , ..., 239.82333, 240.29 ,\n",
" 241.22331],\n",
" [249.89 , 249.49 , 249.29 , ..., 239.82333, 240.29 ,\n",
" 241.22331],\n",
" [246.3288 , 245.82306, 245.57744, ..., 241.16115, 241.18028,\n",
" 241.57034]]], dtype=float32)\n",
"Coordinates:\n",
" * time (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00\n",
" * lon (lon) float64 200.0 201.5 203.0 204.5 ... 324.5 326.0 327.5 329.0\n",
" * lat (lat) float64 16.0 17.0 18.0 19.0 20.0 ... 70.0 71.0 72.0 73.0 74.0\n",
"Attributes:\n",
" long_name: 4xDaily Air temperature at sigma level 995\n",
" units: degK\n",
" precision: 2\n",
" GRIB_id: 11\n",
" GRIB_name: TMP\n",
" var_desc: Air temperature\n",
" dataset: NMC Reanalysis\n",
" level_desc: Surface\n",
" statistic: Individual Obs\n",
" parent_stat: Other\n",
" actual_range: [185.16 322.1 ]\n",
" regrid_method: conservative<xarray.DataArray 'time' (time: 2920)>\n",
"array(['2013-01-01T00:00:00.000000000', '2013-01-01T06:00:00.000000000',\n",
" '2013-01-01T12:00:00.000000000', ..., '2014-12-31T06:00:00.000000000',\n",
" '2014-12-31T12:00:00.000000000', '2014-12-31T18:00:00.000000000'],\n",
" dtype='datetime64[ns]')\n",
"Coordinates:\n",
" * time (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00\n",
"Attributes:\n",
" standard_name: time\n",
" long_name: Time