如何在python中使用netcdf flag_meanings属性

时间:2016-03-18 02:00:16

标签: python netcdf

我正在python中创建一个netcdf文件,并希望将“flag_values”和“flag_meanings”属性分配给其中一个变量。变量名称为'cs',flag_values应为(0,1),flag_meanings应为('STRATIFORM','CONVECTIVE')。

要在python中进行这些分配,我使用了:

cs.flag_values = numpy.array((0,1))
cs.flag_meanings = numpy.array(['STRATIFORM','CONVECTIVE'])

'flag_values'赋值工作正常,但'flag_meanings'赋值给了我两个输入值的连接字符串,我无法弄清楚如何将字符串作为单独的实体。这是输出文件中ncdump的一部分:

cs:flag_values = 0L, 1L ;
cs:flag_meanings = "STRATIFORMCONVECTIVE" ;

当我尝试创建一个字符串数组并打印它时,我没有问题:

>>> a = np.array(['STRATIFORM','CONVECTIVE'])
>>> print a
['STRATIFORM' 'CONVECTIVE']

那么秘密是什么?

3 个答案:

答案 0 :(得分:0)

我认为netCDF4仅支持字符串数组 - 在创建文件时是否使用了正确的模块和正确的标志。您想使用netcdf4-python模块(https://github.com/Unidata/netcdf4-python),您需要将文件创建为:

from netCDF4 import Dataset
nc = Dataset('test.nc', 'w', format='NETCDF4')

NETCDF4应该是默认格式,但是如果它被覆盖(或者你没有使用netcdf4库),我认为不支持字符串数组。

答案 1 :(得分:0)

我知道这是一篇旧帖子,但供将来参考。

尝试,

cs.flag_meaning = "Convective, Stratiform"

答案 2 :(得分:0)

根据CF-conventions (Section 3.5, “Flags”)flag_meanings是一个字符串,其中的含义以空格(空格)分隔:

  

flag_meanings属性是一个字符串,其值是描述性单词或短语的空白分隔列表,每个标志值一个。每个单词或短语应由字母数字集和以下五个字符组成:' _',' - ','。',' +',' @'。如果使用多词短语来描述标志值,则短语中的单词应与下划线连接。

所以定义应该是

cs.flag_meaning = "convective stratiform"