RRFS Data#

The Rapid Refresh Forecast System (RRFS) is undergoing rapid development. There are prototype products available on the cloud on AWS. Some files have an index file, others do not.

[1]:
from herbie import Herbie
from toolbox import EasyMap, pc
from paint.standard2 import cm_tmp

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
[3]:
H = Herbie("2021-07-23", model="rrfs", fxx=1, member=1)
βœ… Found β”Š model=rrfs β”Š product=mean β”Š 2021-Jul-23 00:00 UTC F01 β”Š GRIB2 @ aws β”Š IDX @ aws
[4]:
H.SOURCES
[4]:
{'aws': 'https://noaa-rrfs-pds.s3.amazonaws.com/rrfs.20210723/00/ensprod/rrfsce.t00z.conus.mean.f01.grib2',
 'aws-mem': 'https://noaa-rrfs-pds.s3.amazonaws.com/rrfs.20210723/00/mem01/rrfs.t00z.mem01.meanf001.grib2'}
[5]:
H.PRODUCTS
[5]:
{'mean': 'ensemble mean',
 'avrg': 'ensemble products: ???',
 'eas': 'ensemble products: ???',
 'ffri': 'ensemble products: ???',
 'lpmm': 'ensemble products: ???',
 'pmmn': 'ensemble products: ???',
 'prob': 'ensemble products: ???',
 'testbed.conus': 'surface grids (one for each member)',
 'na': 'native grids (one for each member)'}
[6]:
ds = H.xarray("TMP:2 m")
πŸ‘¨πŸ»β€πŸ­ Created directory: [C:\Users\blaylock\data\rrfs\20210723\mem01]
C:\Users\blaylock\_GITHUB\Herbie\herbie\archive.py:1041: UserWarning: sorry, on windows I couldn't remove the file.
  warnings.warn("sorry, on windows I couldn't remove the file.")
[7]:
ds
[7]:
<xarray.Dataset>
Dimensions:              (y: 1059, x: 1799)
Coordinates:
    time                 datetime64[ns] 2021-07-23
    step                 timedelta64[ns] 01:00:00
    heightAboveGround    float64 2.0
    latitude             (y, x) float64 21.14 21.14 21.15 ... 47.86 47.85 47.84
    longitude            (y, x) float64 237.3 237.3 237.3 ... 299.0 299.0 299.1
    valid_time           datetime64[ns] 2021-07-23T01:00:00
Dimensions without coordinates: y, x
Data variables:
    t2m                  (y, x) float32 295.3 295.3 295.3 ... 287.7 287.8 287.8
    gribfile_projection  object None
Attributes:
    GRIB_edition:            2
    GRIB_centre:             kwbc
    GRIB_centreDescription:  US National Weather Service - NCEP
    GRIB_subCentre:          2
    Conventions:             CF-1.7
    institution:             US National Weather Service - NCEP
    model:                   rrfs
    product:                 mean
    description:             Rapid Refresh Forecast System (RRFS) Ensemble
    remote_grib:             https://noaa-rrfs-pds.s3.amazonaws.com/rrfs.2021...
    local_grib:              C:\Users\blaylock\data\rrfs\20210723\mem01\subse...
    searchString:            TMP:2 m
[8]:
ax = EasyMap(crs=ds.herbie.crs, figsize=[10, 8]).ax
p = ax.pcolormesh(
    ds.longitude, ds.latitude, ds.t2m, transform=pc, **cm_tmp(units="K").cmap_kwargs
)
plt.colorbar(
    p, ax=ax, orientation="horizontal", pad=0.05, **cm_tmp(units="K").cbar_kwargs
)

ax.set_title(ds.t2m.GRIB_name, loc="right")
ax.set_title(f"{H.model.upper()}: {H.product_description}", loc="left")
[8]:
Text(0.0, 1.0, 'RRFS: ensemble mean')
../../_images/user_guide__model_notebooks_rrfs_7_1.png

Missing index files#

We have to download the full file.

[9]:
H = Herbie(
    "2021-07-23", model="rrfs", product="testbed.conus", member=1, priority="aws-mem"
)
βœ… Found β”Š model=rrfs β”Š product=testbed.conus β”Š 2021-Jul-23 00:00 UTC F00 β”Š GRIB2 @ aws-mem β”Š IDX @ aws-mem
[ ]:
# no index file available. Have to download the full file.
H.download()
βœ… Success! Downloaded RRFS from aws-mem             
        src: https://noaa-rrfs-pds.s3.amazonaws.com/rrfs.20210723/00/mem01/rrfs.t00z.mem01.testbed.conusf000.grib2
        dst: /p/cwfs/blaylock/data/rrfs/20210723/mem01/rrfsce.t00z.conus.testbed.conus.f00.grib2
[ ]:
import xarray
[ ]:
# Since we have the full file, we need to filter by keys to open the
# variable we want with cfgrib
x = xarray.open_dataset(
    H.get_localFilePath(),
    engine="cfgrib",
    backend_kwargs={
        "filter_by_keys": {"shortName": "2t", "typeOfLevel": "heightAboveGround"}
    },
)
[ ]:
ax = EasyMap(crs=x.herbie.crs, figsize=[8, 8]).ax
p = ax.pcolormesh(
    x.longitude, x.latitude, x.t2m, transform=pc, **cm_tmp(units="K").cmap_kwargs
)
plt.colorbar(
    p, ax=ax, orientation="horizontal", pad=0.05, **cm_tmp(units="K").cbar_kwargs
)

ax.set_title(x.t2m.GRIB_name, loc="right")
ax.set_title(f"{H.model.upper()}: member {H.member}", loc="left")
Text(0.0, 1.0, 'RRFS: member 1')
../../_images/user_guide__model_notebooks_rrfs_13_1.png

Grid Mapping#

Herbie attempts to parse the CF grid mapping from the GRIB data if it is available. This can be parsed by metpy.

[10]:
import metpy
[13]:
crs_info = x.metpy.parse_cf().metpy_crs.item()
crs_info.to_cartopy()
[13]:
2021-09-22T23:40:51.346300 image/svg+xml Matplotlib v3.4.2, https://matplotlib.org/
<cartopy.crs.LambertConformal object at 0x2ab37c61ccc0>
[14]:
crs_info.to_pyproj()
[14]:
<Projected CRS: {"$schema": "https://proj.org/schemas/v0.2/projjso ...>
Name: undefined
Axis Info [cartesian]:
- E[east]: Easting (metre)
- N[north]: Northing (metre)
Area of Use:
- undefined
Coordinate Operation:
- name: unknown
- method: Lambert Conic Conformal (2SP)
Datum: World Geodetic System 1984
- Ellipsoid: WGS 84
- Prime Meridian: Greenwich
[ ]: