[gradsusr] need help packing the netcdf data

Kishore Babu kishoreragi at gmail.com
Sun Jul 15 04:28:50 EDT 2012


Dear Dr. Christopher,

It is great command-line utility for packing .nc file. It was of great help
for me...

Thank you sir,

Sincerely,
Kishore

On Sat, Jul 14, 2012 at 11:43 PM, Lynnes, Christopher S. (GSFC-6102) <
christopher.s.lynnes at nasa.gov> wrote:

> The nco package (http://nco.sourceforge.net/) has a command-line utility
> called ncpdq that can pack netcdf data.
>
> On Jul 14, 2012, at 11:17 AM, Reto Stauffer wrote:
>
> >
> > Hy Kishore
> >
> > I was working on that today for about 5 hours using Python.
> > I can say some words to the python procedure but it is nearly the same
> > in all other packages i guess.
> >
> > # - Open new netCdf file
> > ncf = pupynere.NetCDFFile(outfile+".nc",'w')
> >
> > # - Then you have to define the dimensions.
> > #   If you have e.g. some surface data and only
> > #   one timestep you need just "longitude" and "latitude"
> > #   but there is the option to store 3-D or 4-D fields
> > #   with additional time and vertical coordinate.
> > #   I am creating all 4 dimensions.
> > londim  = ncf.createDimension('longitude',longitude.shape[0]);
> > latdim  = ncf.createDimension('latitude',latitude.shape[0]);
> > levdim  = ncf.createDimension('levelist',len(unique_levels));
> > timedim = ncf.createDimension('time',len(unique_times));
> >
> > # - Then store the dimension variables into the created
> > #   Dimensions (e.g. level vector or longitude vector)
> > #   and setting some additional attributes.
> > # - IMPORTANT there is no default unit for time and
> > #   for model level. You have to define it (hPa in my case)
> > # - Longitude vector
> > nclon  = ncf.createVariable('longitude','f',('longitude',))
> > setattr(nclon,'long_name','longitude')
> > setattr(nclon,'units','degrees_east')
> > # - Latitude vector
> > nclat  = ncf.createVariable('latitude','f',('latitude',))
> > setattr(nclat,'long_name','latitude')
> > setattr(nclat,'units','degrees_north')
> > # - Level vector
> > nclev  = ncf.createVariable('levelist','f',('levelist',))
> > setattr(nclev,'long_name','model_level_number')
> > setattr(nclev,'units','hPa')
> > # - Time.
> > nctime = ncf.createVariable('time','f',('time',))
> > setattr(nctime,'long_name','time')
> > # - Setting those variables
> > print "* Write long, lat, levelist and time to nc file"
> > nclon[:]  = longitude;
> > nclat[:]  = latitude;
> > nclev[:]  = np.array( unique_levels );
> > nctime[:] = np.array( unique_times );
> >
> >
> >
> > # - Now all the dimensions are defined and you can
> > #   create your data variables now. First: define
> > #   variable with sutable dimension.
> > #   It is possible to mix fields (i am using a few
> > #   with long/lat/time only and others with
> > #   long/lat/level/time. But either all levels are
> > #   in there or just one. I guess it is not possible
> > #   to define different numbers of vertical levels
> > #   for every single variable.
> >
> > # - As an example: create one variable and
> > #   store data into it. In this case i am creating
> > #   a variable with all 4 dimensions. So the "data"
> > #   variable i store at the end has to have the
> > #   same dimension
> > ncvar   =
> >
> ncf.createVariable(str(var),'f',('latitude','longitude','levelist','time'))
> > setattr(ncvar,'_FillValue',0.)
> > setattr(ncvar,'missing_value',-999.)
> > setattr(ncvar,'add_offset','0')
> > setattr(ncvar,'long_name',str(nc_desc[var]))
> > setattr(ncvar,'scale_factor',1.)
> > setattr(ncvar,'units','scaled radiance')
> > ncvar[:] = np.int32(data)
> >
> > # - Syncing netcdf file (write)"
> > ncf.sync();
> >
> > # - Close netcdf file"
> > ncf.close();
> >
> >
> > Probably it is getting a little bit more transparent for you. I am
> > using the pupynere package (pure python netcdf reader) but in newer
> > scipy versions it is allready included (scipy.netcdf i guess).
> >
> > As checklist
> > - define variables (with attributes for time or levels!)
> > - u dont need a vertical dimension when you only have "surface" fields
> > (2-d-fields)
> > - store dimension values into created dimensions
> > - create variable (2,3,4-dimensional?
> > - store data with same size into that
> > - write all the stuff into the netcdf file
> >
> > Greets from Austria
> > Reto
> >
> >
> > Zitat von Kishore Babu <kishoreragi at gmail.com>:
> >
> >> Dear GrADS users,
> >>
> >> Could anyone tell me how to pack the netcdf data? I do understand
> >> scale_factor and add_offset , but I don't know how to do with them.
> >>
> >> help will greatly save my time to do that. I have already spent a lot of
> >> time to do that...
> >>
> >>
> >> Thank you in advance,
> >>
> >> Kishore
> >>
> >
> >
> > _______________________________________________
> > gradsusr mailing list
> > gradsusr at gradsusr.org
> > http://gradsusr.org/mailman/listinfo/gradsusr
>
> --
> Dr. Christopher Lynnes     NASA/GSFC, Code 610.2    phone: 301-614-5185
>
>
>
> _______________________________________________
> gradsusr mailing list
> gradsusr at gradsusr.org
> http://gradsusr.org/mailman/listinfo/gradsusr
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://gradsusr.org/pipermail/gradsusr/attachments/20120715/41d1016d/attachment-0003.html 


More information about the gradsusr mailing list