pythonnetcdf:从地理区域创建离散坐标变量

2024-03-29 14:56:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望创建一个netCDF4文件,'area'nc',包含时间维度和离散的字母数字区号,例如'A0'、'A1'、'A2'、'B0'等,它不适合常规网格(而不是纬度/经度)。在

NetCDF Climate and Forecast (CF) Metadata Conventionspdf建议这可以在第4.5节中完成,但我找不到任何示例。在

有办法吗?在

到目前为止,我尝试过:

import netCDF4 as nc

area_nc = nc.Dataset('area.nc', 'w')

area_nc.createDimension('time', None)
area_nc.createDimension('nhood', 6)

time = area_nc.createVariable('time', int, ('time'))
nhood = area_nc.createVariable('nhood', str, ('nhood'))

in_temp = area_nc.createVariable('in_temp', int, ('time', 'nhood'))

nhood[:] = ['A0', 'A1', 'A2', 'B0', 'B1', 'B2']

但我得到了一个错误:

^{pr2}$

为了实现这一点,我想将数据添加到文件中,使用此代码作为引用,而不是整数切片,例如:

^{3}$

谢谢!在


Tags: 文件ina2timea1areab0a0
1条回答
网友
1楼 · 发布于 2024-03-29 14:56:13

问题的第一部分,错误: 错误表明python认为您的维度是可变长度(VLEN)。解决方法在于更好地定义维度。解决方案是改变你的两条线:

nhood = area_nc.createVariable('nhood', str, ('nhood')) ->
nhood = area_nc.createVariable('nhood', '<U13', ('nhood'))

nhood[:] = ['A0', 'A1', 'A2', 'B0', 'B1', 'B2'] ->
nhood[:] = np.array(['A0', 'A1', 'A2', 'B0', 'B1', 'B2'])

不幸的是,你的最后一行还不能用。我可以想出以下解决方法:

^{pr2}$

相关问题 更多 >