[gradsusr] need help packing the netcdf data
Lynnes, Christopher S. (GSFC-6102)
christopher.s.lynnes at nasa.gov
Sat Jul 14 14:13:31 EDT 2012
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
More information about the gradsusr
mailing list