ncview:指定并更正显示的变量范围

时间:2018-01-06 17:44:29

标签: python netcdf netcdf4

我使用python 3.6和netCDF4模块创建了一个netcdf文件。当视觉浏览器ncview显示时,除了一个变量外,其他一切都正常。此变量的范围为0到1000,但显示的范围保持接近0且图像饱和。其他变量使用相同的代码正确绘制。

可能是问题的原因是什么?

我用来将数据存储为打包数据。通过限制精度和使用比原始数据更小的数据类型将打包数据存储在netCDF文件中,例如,将双精度(64位)值打包为短(16位)整数

我的代码:

from netCDF4 import Dataset  
import numpy as np
....
nc_fid = Dataset(fname, 'w', clobber=True, format='NETCDF4')
....
nc_var = nc_fid.createVariable('Test', 'i2', ('time', 'Y', 'X'))

pack_range = np.array([-32766,32767], dtype=np.int16)
data_range = np.array([np.min(MyVar), np.max(MyVar)], dtype=np.float32)
pr = np.float32(pack_range)
dr = data_range
off = ((dr[0]*pr[1])-(dr[1]*pr[0]))/(pr[1]-pr[0])
fac = (dr[1]-dr[0])/(pr[1]-pr[0])

off, fac = calc_scale(var['dirN'] 
nc_var.setncatts({'scale_factor': fac,\
                    'add_offset': off,\
                    '_FillValue': np.int16(-32767),\
                    'missing_value': np.int16(-32767) })
nc_var[:] = MyVar
nc_fid.close()

我上传了文件here的简短版本。

1 个答案:

答案 0 :(得分:1)

netcdf示例文件中的dirN变量具有许多 -32766值,并且在计算最小值和最大值时,ncview会感到困惑。

使用以下命令更改默认的ncview策略以计算最小值和最大值

 $ ncview -minmax all Sample.nc