在Python的netCDF4中使用scale_factor和add_offset的示例?

时间:2019-02-22 09:34:46

标签: python compression netcdf4

从netCDF4的文档中: http://unidata.github.io/netcdf4-python/#netCDF4.Variable

谁能给我一个使用Python中的scale_factor和add_offset参数编写数据的简单示例?

1 个答案:

答案 0 :(得分:1)

如果您想知道如何使用(?<!\S)\1(?!\S)add_offset参数来打包或解压缩scale_factor文件中的数据,则可以阅读here。 当您使用python(download NCEP reanalysis I data for example)读取netCDF4文件时,可以引用以下代码:

.nc

我们要读取>>> import netCDF4 as nc >>> file_obj = nc.Dataset('./air.mon.mean.nc') >>> file_obj.variables.keys() odict_keys(['lat', 'lon', 'time', 'air']) 变量并通过

进行检查
air

它将显示:

file_obj.variables['air']

我们可以通过

阅读<class 'netCDF4._netCDF4.Variable'> float32 air(time, lat, lon) long_name: Monthly Mean Air Temperature at sigma level 0.995 valid_range: [-2000. 2000.] units: degC add_offset: 0.0 scale_factor: 1.0 missing_value: -9.96921e+36 precision: 1 least_significant_digit: 0 var_desc: Air Temperature level_desc: Surface statistic: Mean parent_stat: Individual Obs dataset: NCEP Reanalysis Derived Products actual_range: [-73.78001 42.14595] unlimited dimensions: time current shape = (848, 73, 144) filling on, default _FillValue of 9.969209968386869e+36 used add_offset
scale_factor

然后读取

的packed_value
>>> add_offset = file_obj.variables['air'].add_offset
>>> scale_factor = file_obj.variables['air'].scale_factor

最后,我们可以使用pack表达式计算upacked_value(实际值),

>>> packed_value = file_obj.variables['air'][:]

结果:

>>> unpacked_value = packed_value * scale_factor + add_offset