Hi
I'm a relatively new netCDF user. Having read the netCDF guide plus
some entries in the support and user forum, I have a burning question
regarding data packing using 'scale_factor' and 'add_offset'. I've seen
fortran code which implement the packing with code like the following
sample snippet:
INTEGER*2 X_PACKED
REAL X, OFFSET, SCALE
X = 10.23456
OFFSET = 9.0
SCALE = 0.23123
X_PACKED = (X-OFFSET)*SCALE
! Then proceed to store X_PACKED in netCDF form.
. . .
What I don't understand is how this can be "correct". When you assign a
REAL to an INTEGER, the value of the REAL gets truncated before being
stored in the INTEGER. Thus, the original value of X cannot be
'reconstructed' from the corresponding INTEGER*2 variable (X_PACKED) in
the netCDF file.
I understand the intent is to store only the 2 bytes that represents the
scaled-down REAL value. But as far as I know, this is not possible in
Fortran -- as far as simply assigning values to variables is concerned.
Or is the above fortran implementation of packing in netCDF completely
off track? Am I missing anything?
What is the common practice of netCDF packing in Fortran?
Any sample Fortran code for netCDF data packing?
Thanks for any explanations or tips.
-Kek
Tropical Marine Sc Institute
Singapore