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

ncview: Specify and correct displayed variable range

我用 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

您的 netcdf 示例文件中的 dirN 变量有许多 -32766 个值,并且 ncview 在计算最小值和最大值时被混淆了。

使用以下方法更改默认的 ncview 策略以计算最小值和最大值:

 $ ncview -minmax all Sample.nc