import pygrib import matplotlib.pyplot as plt import matplotlib.colors as colors from mpl_toolkits.basemap import Basemap from mpl_toolkits.basemap import shiftgrid import numpy as np plt.figure(figsize=(12,8)) grib = 'cams_aod.grib' # Set the file name of your input GRIB file grbs = pygrib.open(grib) grb = grbs.select()[0] data = grb.values # need to shift data grid longitudes from (0..360) to (-180..180) lons = np.linspace(float(grb['longitudeOfFirstGridPointInDegrees']), \ float(grb['longitudeOfLastGridPointInDegrees']), int(grb['Ni']) ) lats = np.linspace(float(grb['latitudeOfFirstGridPointInDegrees']), \ float(grb['latitudeOfLastGridPointInDegrees']), int(grb['Nj']) ) data, lons = shiftgrid(180., data, lons, start=False) grid_lon, grid_lat = np.meshgrid(lons, lats) #regularly spaced 2D grid m = Basemap(projection='cyl', llcrnrlon=-180, \ urcrnrlon=180.,llcrnrlat=lats.min(),urcrnrlat=lats.max(), \ resolution='c') x, y = m(grid_lon, grid_lat) cs = m.pcolormesh(x,y,data,shading='flat',cmap=plt.cm.gist_stern_r) m.drawcoastlines() m.drawmapboundary() m.drawparallels(np.arange(-90.,120.,30.),labels=[1,0,0,0]) m.drawmeridians(np.arange(-180.,180.,60.),labels=[0,0,0,1]) plt.colorbar(cs,orientation='vertical', shrink=0.5) plt.title('CAMS AOD forecast') # Set the name of the variable to plot plt.savefig(grib+'.png') # Set the output file name |
Before plotting the field you can use the cdo software to conservatively regrid the data, for example from 0.1˘x0.1˘ to 0.5˘x0.5˘ regular latitude-longitude grid:
cdo -s gencon,grid.R720x360.txt frp_01.grb remapweights.rencon.R3600x1800.to.R720x360.grb cdo -s remap,grid.R720x360.txt,remapweights.rencon.R3600x1800.to.R720x360.grb frp_01.grb frp_05.grb |
The content of grid definition file (grid.R720x360.txt) is:
# # gridID 2 # gridtype = lonlat gridsize = 259200 xname = lon xlongname = longitude xunits = degrees_east yname = lat ylongname = latitude yunits = degrees_north xsize = 720 ysize = 360 xfirst = 0.25 xinc = 0.5 yfirst = 89.75 yinc = -0.5 |
This document has been produced in the context of the Copernicus Atmosphere Monitoring Service (CAMS) and Copernicus Climate Change Service (C3S). The activities leading to these results have been contracted by the European Centre for Medium-Range Weather Forecasts, operator of CAMS and C3S on behalf of the European Union (Delegation Agreement signed on 11/11/2014 and Contribution Agreement signed on 22/07/2021). All information in this document is provided "as is" and no guarantee or warranty is given that the information is fit for any particular purpose. The users thereof use the information at their sole risk and liability. For the avoidance of all doubt , the European Commission and the European Centre for Medium - Range Weather Forecasts have no liability in respect of this document, which is merely representing the author's view. |
Related articles appear here based on the labels you select. Click to edit the macro and add or change labels.
|