Reputation: 83
I'm trying to convert from netCDF4 to scipy.io netcdf as the web page the program is going onto doesn't have the module netCDF4.
The program works perfectly well in netCDF4 retrieving values from a file for temperatures in degK giving me values such as:
[[ 258.77999878 258.77999878 258.77999878 ..., 258.77999878
258.77999878 258.77999878]
[ 259.29998779 259.54998779 259.82000732 ..., 258.3500061
258.70001221 258.97000122]
[ 264.1000061 264.47000122 264.82000732 ..., 262.40002441
263.04998779 263.6000061 ]].
However when using scipy.io netcdf and the same file used in the netCDF4. The program runs it should again give values of temperature in degK but the values come out as:
[[-25403 -25403 -25403 ..., -25403 -25403 -25403]
[-25351 -25326 -25299 ..., -25446 -25411 -25384]
[-24871 -24834 -24799 ..., -25041 -24976 -24921]].
I was just wondering if anyone has come across this problem before and how you solve it so that the scipy.io netcdf program will give the same values.
Upvotes: 0
Views: 4052
Reputation: 682
First off, you need to distinguish wether you are reading a netCDF-3 or netCDF-4 file. The scipy.io.netcdf module can only read netCDF-3, so if it's a netCDF-4 file, then you are out of luck. Not that the difference is that netCDF-4 files use HDF-5 as the file storage. That said, it looks like it read in something from your file, so it's likely that you have a netCDF-3 file.
If this is the case, you will need to look for "scale" and "offset" attributes on your temperature variable and apply those directly when using scipy.io.netcdf. The netCDF-4-python module automagically looks for these attributes and applies them 'behind the scenes' for you, which is why your data look ok when going through that module.
Cheers,
Sean
Upvotes: 3