[ncl-talk] Convert unpacked netCDF file to packed one

Dennis Shea shea at ucar.edu
Mon Jan 11 13:05:42 MST 2021


I was just typing a response that contained the same information as Dave's.

Likely, you have no control "the model I am running only accept packed nc
file with scale factor."
As noted by DaveA, the file you are using is netCDF-4
[ Perhaps too much info but netCDF-4's compression is described *here ]*
<https://www.unidata.ucar.edu/blogs/developer/entry/netcdf_compression>
===============

%> *ncdump -k* air.2019.nc
netCDF-4 classic model

In fact, I believe *all* the netCDF files created by "NCEP-DOE AMIP-II
Reanalysis" (and others) will be netCDF-4.

Maybe you could have the model developers alter the code.
Really, they should have checked if the 'scale_factor' and/or 'add_offset'
attributes are present.
If not, use the variable directly.
====================

            f = addfile("air.2019.nc","r")
            x = f->air
            printVarSummary(x)                 ; full uncompressed values
                                                             ; *** LOOK AT
THE SIZE****
                                                             ; It is MUCH
LARGER than the ENTIRE netCDF file

      xShort   = *pack_values*(xFloat, "short", False)
      *printVarSummary*
<http://www.ncl.ucar.edu/Document/Functions/Built-in/printVarSummary.shtml>(xShort)

      xShort   = pack_values(x, "short", False)
      printVarSummary(xShort)  ; *** LOOK AT THE SIZE****
                               ; HALF the size of 'x'
                               ; but much larger than the compressed value!

 The use (say) the following to write 'xShort' a new (much larger)
file that the original

*http://www.ncl.ucar.edu/Applications/method_1.shtml*
<http://www.ncl.ucar.edu/Applications/method_1.shtml>

Then use that new file for the model.

Likely,* EVERY *variable will have to be done like this for the "model
you are using


*===*



*It is much easier for the model code to be altered.*


*Good Luck*


On Mon, Jan 11, 2021 at 12:46 PM Dave Allured - NOAA Affiliate via ncl-talk
<ncl-talk at mailman.ucar.edu> wrote:

> I see.  I suggest the best solution would be a simple upgrade to the model
> code, so that it could read both packed and unpacked air temp files.  This
> will enable the model to use future data updates without extra processing.
>
> In fortran, this would be an if statement to check whether there is a
> scale_factor attribute.  If not, then skip reading scale_factor and
> add_offset, also skip the unpacking statement or loop that converts packed
> data values to unpacked.  Just read in the unpacked values directly.  You
> would need two read statements, the original one for the packed data type,
> and a new one for the unpacked data type (fortran real).
>
> If something prevents you from changing the model code, then just convert
> the air temp file to packed using the NCL *pack_values* function.  See
> the general documentation for how to read and write a netcdf file.
>
>
> On Mon, Jan 11, 2021 at 12:00 PM Setareh Rahimi <setareh.rahimi at gmail.com>
> wrote:
>
>> Dear Dave,
>> Thank you for your reply. Yes I am sure, because the model I am running
>> only accept packed nc file with scale factor.
>> Please have a look at attached file showing the error I face while
>> running the model with mentioned nc file.
>> Best regard
>>
>> On Mon, Jan 11, 2021 at 22:20 Dave Allured - NOAA Affiliate <
>> dave.allured at noaa.gov> wrote:
>>
>>> That file is already compressed to 31% of its natural array size, using
>>> netcdf-4 internal compression.  Are you sure you want to do that?  If yes,
>>> then use the NCL function *pack_values*.
>>>
>>>
>>> On Mon, Jan 11, 2021 at 11:07 AM Setareh Rahimi via ncl-talk <
>>> ncl-talk at mailman.ucar.edu> wrote:
>>>
>>>> Dear all,
>>>> I need to convert an unpacked netCDF file to a packed one (
>>>> ftp://ftp2.psl.noaa.gov/Datasets/ncep.reanalysis2/pressure/air.2019.nc),
>>>> I wonder if this possible using NCL?
>>>> Many thanks in advance,
>>>> Best wishes,
>>>> --
>>>> S.Rahimi
>>>>
>>> _______________________________________________
> ncl-talk mailing list
> ncl-talk at mailman.ucar.edu
> List instructions, subscriber options, unsubscribe:
> https://mailman.ucar.edu/mailman/listinfo/ncl-talk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20210111/03e379c1/attachment.html>


More information about the ncl-talk mailing list