{ "cells": [ { "cell_type": "markdown", "id": "boxed-driving", "metadata": {}, "source": [ "# Using cartopy and projections for plotting" ] }, { "cell_type": "code", "execution_count": 1, "id": "smooth-gates", "metadata": {}, "outputs": [], "source": [ "import s3fs\n", "import xarray as xr\n", "import cartopy.crs as ccrs\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "id": "weekly-immunology", "metadata": {}, "source": [ "## Open ERA5 dataset" ] }, { "cell_type": "code", "execution_count": 2, "id": "pretty-clock", "metadata": {}, "outputs": [], "source": [ "fs = s3fs.S3FileSystem(anon=True, default_fill_cache=False, \n", " config_kwargs = {'max_pool_connections': 20})" ] }, { "cell_type": "code", "execution_count": 3, "id": "pending-young", "metadata": {}, "outputs": [], "source": [ "files_mapper = [s3fs.S3Map('era5-pds/zarr/2020/06/data/air_temperature_at_2_metres.zarr/', s3=fs)]" ] }, { "cell_type": "code", "execution_count": 5, "id": "fatal-flower", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 312 ms, sys: 14.4 ms, total: 327 ms\n", "Wall time: 5.24 s\n" ] } ], "source": [ "%%time\n", "dset = xr.open_mfdataset(files_mapper, engine='zarr', \n", " concat_dim='time0', combine='nested', \n", " coords='minimal', compat='override', parallel=True)" ] }, { "cell_type": "markdown", "id": "strong-ethiopia", "metadata": {}, "source": [ "## Get metadata " ] }, { "cell_type": "code", "execution_count": 6, "id": "occupational-indianapolis", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
<xarray.Dataset>\n", "Dimensions: (lat: 721, lon: 1440, time0: 720)\n", "Coordinates:\n", " * lat (lat) float32 90.0 89.75 89.5 ... -89.75 -90.0\n", " * lon (lon) float32 0.0 0.25 0.5 ... 359.5 359.8\n", " * time0 (time0) datetime64[ns] 2020-06-01 ... 2020-0...\n", "Data variables:\n", " air_temperature_at_2_metres (time0, lat, lon) float32 dask.array<chunksize=(372, 150, 150), meta=np.ndarray>\n", "Attributes:\n", " institution: ECMWF\n", " source: Reanalysis\n", " title: ERA5 forecasts
array([ 90. , 89.75, 89.5 , ..., -89.5 , -89.75, -90. ], dtype=float32)
array([0.0000e+00, 2.5000e-01, 5.0000e-01, ..., 3.5925e+02, 3.5950e+02,\n", " 3.5975e+02], dtype=float32)
array(['2020-06-01T00:00:00.000000000', '2020-06-01T01:00:00.000000000',\n", " '2020-06-01T02:00:00.000000000', ..., '2020-06-30T21:00:00.000000000',\n", " '2020-06-30T22:00:00.000000000', '2020-06-30T23:00:00.000000000'],\n", " dtype='datetime64[ns]')
\n",
"
| \n",
"\n", "\n", " | \n", "
<xarray.DataArray 'air_temperature_at_2_metres' (time0: 720, lat: 721, lon: 1440)>\n", "dask.array<xarray-air_temperature_at_2_metres, shape=(720, 721, 1440), dtype=float32, chunksize=(372, 150, 150), chunktype=numpy.ndarray>\n", "Coordinates:\n", " * lat (lat) float32 90.0 89.75 89.5 89.25 ... -89.25 -89.5 -89.75 -90.0\n", " * lon (lon) float32 0.0 0.25 0.5 0.75 1.0 ... 359.0 359.2 359.5 359.8\n", " * time0 (time0) datetime64[ns] 2020-06-01 ... 2020-06-30T23:00:00\n", "Attributes:\n", " long_name: 2 metre temperature\n", " nameCDM: 2_metre_temperature_surface\n", " nameECMWF: 2 metre temperature\n", " product_type: analysis\n", " shortNameECMWF: 2t\n", " standard_name: air_temperature\n", " units: K
\n",
"
| \n",
"\n", "\n", " | \n", "
array([ 90. , 89.75, 89.5 , ..., -89.5 , -89.75, -90. ], dtype=float32)
array([0.0000e+00, 2.5000e-01, 5.0000e-01, ..., 3.5925e+02, 3.5950e+02,\n", " 3.5975e+02], dtype=float32)
array(['2020-06-01T00:00:00.000000000', '2020-06-01T01:00:00.000000000',\n", " '2020-06-01T02:00:00.000000000', ..., '2020-06-30T21:00:00.000000000',\n", " '2020-06-30T22:00:00.000000000', '2020-06-30T23:00:00.000000000'],\n", " dtype='datetime64[ns]')
<xarray.DataArray 'air_temperature_at_2_metres' (lat: 721, lon: 1440)>\n", "dask.array<getitem, shape=(721, 1440), dtype=float32, chunksize=(150, 150), chunktype=numpy.ndarray>\n", "Coordinates:\n", " * lat (lat) float32 90.0 89.75 89.5 89.25 ... -89.25 -89.5 -89.75 -90.0\n", " * lon (lon) float32 0.0 0.25 0.5 0.75 1.0 ... 359.0 359.2 359.5 359.8\n", " time0 datetime64[ns] 2020-06-30T21:00:00\n", "Attributes:\n", " long_name: 2 metre temperature\n", " nameCDM: 2_metre_temperature_surface\n", " nameECMWF: 2 metre temperature\n", " product_type: analysis\n", " shortNameECMWF: 2t\n", " standard_name: air_temperature\n", " units: K
\n",
"
| \n",
"\n", "\n", " | \n", "
array([ 90. , 89.75, 89.5 , ..., -89.5 , -89.75, -90. ], dtype=float32)
array([0.0000e+00, 2.5000e-01, 5.0000e-01, ..., 3.5925e+02, 3.5950e+02,\n", " 3.5975e+02], dtype=float32)
array('2020-06-30T21:00:00.000000000', dtype='datetime64[ns]')