2013-03-15 9 views
5

So che c'è software come wgrib2 che converte grib e grib2 file in formato a NetCDF, ma ho bisogno di andare nella direzione opposta, NetCDF-grib2, perché gli uffici meteorologici locali qui può consumare gridded solo i dati nel formato grib2.Conversione NetCDF a GRIB2

Sembra che una soluzione potrebbe essere in Python, utilizzando il NetCDF4-Python library (o altro) per leggere i file NetCDF e utilizzando pygrib scrivere grib2.

C'è un modo migliore?

risposta

5

Dopo ulteriori ricerche, ho finito per utilizzare il pacchetto "Iris" di Met Office britannico (http://scitools.org.uk/iris/docs/latest/index.html) che può leggere NetCDF e OPeNDAP, GRIB e diversi altri formati e consente di salvare come NetCDF o GRIB.

In pratica il codice è simile:

import iris 

cubes = iris.load('input.nc')  # each variable in the netcdf file is a cube 
iris.save(cubes[0],'output.grib2') # save a specific variable to grib 

Ma se il file netcdf non contiene metadati sufficiente, potrebbe essere necessario aggiungere esso, che si può anche fare con Iris. Ecco un esempio di lavoro completo:

https://github.com/rsignell-usgs/ipython-notebooks/blob/master/files/Iris_CFSR_wave_wind.ipynb

3

Si può anche utilizzare gli operatori di dati climatici (CDO) per il compito - https://code.zmaw.de/projects/cdo/wiki

ma necessario installare il software con tutte le librerie aggiuntive.

+0

Wow, sembra abbastanza esteso. L'hai mai usato per convertire NetCDF4 in GRIB2? –

+0

Questo è davvero il modo migliore per farlo. Quando si tratta di file netCDF, prima o poi CDO e/o NCO saranno molto utili. Sono veloci e affidabili, mantengono i metadati, sono gratuiti ed estremamente versatili. Una volta appreso CDO e NCO, è possibile eseguire qualsiasi manipolazione sui file grigliati. I due sono di gran lunga le soluzioni più complete per lavorare con file grigliati senza bisogno di codice (R, Python sono più versatili ma di solito più lenti). – AF7

+0

In risposta a Rich, l'output GRIB2 è possibile usando il flag -f grb2, vedi sotto per il comando completo –

0

ECMWF dispone di uno strumento basato su riga di comando per fare proprio questo: https://software.ecmwf.int/wiki/display/GRIB/grib_to_netcdf

+1

la domanda era su netcdf su grib, non grib su netcdf –

+0

Vero, ma N1B4 è corretto per indicare che ECMWF ha un set di strumenti accurato per la gestione di grib/netcdf, anche se credo che grib_api sia stato appena rimpiazzato. –

0

So CDO è menzionato sopra, ma ho pensato che sarebbe stato utile per dare il pieno comando

cdo -f grb2 copy in.nc out.grb