NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
On Feb 3, 11:54am, lombardi emanuele wrote: > Dear netcdf people, > > I'm asking your help from Italy. > > I need to save has much space as possible in saving my data so I > decided to normalize data into the range 0-255 so that it can be kept > in a single byte. > In netcdf there are 2 8-bit data types: NC_CHAR and NC_BYTE. > > I started using NC_CHAR data type and > all works fine, but many utilities (ncview, vcs...) do'nt display > CHAR data. So I'm trying to save the normalized data as NC_BYTE which > can be plotted much easier. You should only use NC_CHAR for "text" data. From FORTRAN, this would be type "character". Use the NC_BYTE type for numbers. > BUT netcdf library returns NC_BYTE data as 8-bit signed > integers (instead of 8-bit unsigned integers) > so that NC_BYTE values go from 0 to 127 and then from -128 to -1 > instead of going from 0 to 255 as wanted. This is not just a feature of the netcdf library. For many (most?) of the FORTRAN implementations that support an 8 bit integer type (integer*1, byte, ...), that type is a signed integer. For java, the byte type is signed. In netcdf-3 when we introduced the interfaces which perform automatic conversion from external type to machine type, we had to decide whether the NC_BYTE was signed or unsigned. We chose "signed" for consistancy with the FORTRAN and java, and because it has greater symmetry with the other numeric nctypes. In C, we have a family of put and get functions which "do the right thing" (what you want) with arguments of C language type "unsigned char". Since the FORTRAN language doesn't have such a type, no such functions exist in netcdf FORTRAN interface. > That means that MIN and MAX values are all wrong and that > lookup tables for colors are no more monotonics from 0 to 255 > but must be made of 2 separted parts: the one for numbers from 0 to 127 > and the one for numbers from -128 to -1. > > How can I manage it? > > I'm a FORTRAN programmer, not a C programmer unfortunately! All is not lost, the bits are not getting altered. I can't tell for sure how the situation is causing you problems. Are you using a display utility that requires MIN and MAX attributes, or requires that they be monotonic? > Any help and suggestion will be very apreciated. > Thanks from Italy, > > Emanuele > > -- > Emanuele Lombardi > mail: AMB-GEM-CLIM ENEA Casaccia > I-00060 S.M. di Galeria (RM) > ITALY > mailto:lele@xxxxxxxxxxxxxxxxxxxxxxxxx > tel +39 6 30483366 > fax +39 6 30483591
netcdfgroup
archives: