pygrib code

 avatar
unknown
python
3 years ago
1.9 kB
9
Indexable
import matplotlib.pyplot as plt
import xarray as xr
import requests
import time
import pygrib
import metpy
import numpy as np

datestr = time.strftime('%Y%m%d')

#REQUEST FOR GFS GRIB FILE
gfs_url = 'https://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25_1hr.pl?file=gfs.t00z.pgrb2.0p25.f001&lev_surface=on&var_TMP=on&leftlon=0&rightlon=360&toplat=90&bottomlat=-90&dir=%2Fgfs.'+datestr+'%2F00%2Fatmos'
r = requests.get(gfs_url, allow_redirects=True)
open('gfs.txt', 'wb').write(r.content)

#REQUEST FOR HRRR GRIB FILE
hrrr_url = 'https://nomads.ncep.noaa.gov/cgi-bin/filter_hrrr_2d.pl?file=hrrr.t00z.wrfsfcf01.grib2&lev_surface=on&var_TMP=on&leftlon=0&rightlon=360&toplat=90&bottomlat=-90&dir=%2Fhrrr.'+datestr+'%2Fconus'
r = requests.get(hrrr_url, allow_redirects=True)
open('hrrr.txt', 'wb').write(r.content)

#XARRAY LOAD GRIBS INTO DATASETS
ds = xr.load_dataset("hrrr.grib2", engine="cfgrib",filter_by_keys={'typeOfLevel': 'surface'})
gfs_ds = xr.load_dataset("gfs.grib2", engine="cfgrib",filter_by_keys={'typeOfLevel': 'surface'})

#THIS IS THE LINE GIVING TROUBLE. the error that i'm getting is "AttributeError: module 'pygrib' has no attribute 'open'"
gr = pygrib.open("hrrr.grib2")

#LOAD IN NETCDF DOWNSCALE RATIOS
prism_ds = xr.load_dataset('/Users/clamalo/documents/us/us_prism_0.125_1_area.nc')

air = prism_ds.pratio

#SET UP PLOT PARAMETERS
f, ((ax1, ax2)) = plt.subplots(2, figsize=(160, 192))

#FIRST PLOT (DOWNSCALE RATIOS)
air.plot(ax=ax1, cbar_kwargs={"label": "downscale ratio"},cmap='coolwarm',vmin=0, vmax=2)
ax1.set_title("downscale ratio")
#ax1.margins(x=0, y=-0.25)
ax1.set_xlabel("x grid number")
ax1.set_ylabel("y grid number")

#SECOND PLOT (HRRR AIR TEMP)
air = ds.t
airc = air - 273.15
airc.plot(ax=ax2, cbar_kwargs={"label": "°C"}, cmap='RdBu')
ax2.set_title("HRRR degrees celsius")
ax2.set_xlabel("x grid number")
ax2.set_ylabel("y grid number")

#PLOT DATA
plt.tight_layout()
plt.savefig("test.png")
Editor is loading...