繁体   English   中英

在Python中将变量添加到现有的netcdf4文件

[英]Add variable to exisiting netcdf4 file in Python

我有一个netcdf格式的MODIS卫星图像。 我已使用该图像中的某些变量作为模型创建模型npp 此数组的大小与原始文件的纬度和经度相同(888,1368) 我想将npp作为新变量添加到原始文件中,但是我不清楚自己在做什么错?

import netCDF4 as nc
from netCDF4 import Dataset

# Load input file 
file_input = nc.Dataset('A2018066.5d.L3m_OC.nc', 'w', format='NETCDF4')
# view dimensions 
print(file_input.dimensions)

"OrderedDict([('lat', <class 'netCDF4._netCDF4.Dimension'>: name = 'lat', size = 888
), ('lon', <class 'netCDF4._netCDF4.Dimension'>: name = 'lon', size = 1368
), ('rgb', <class 'netCDF4._netCDF4.Dimension'>: name = 'rgb', size = 3
), ('eightbitcolor', <class 'netCDF4._netCDF4.Dimension'>: name = 'eightbitcolor', size = 256
)])"

# input file variables.keys
print(file_input.variables.keys())

"odict_keys(['aot_869', 'angstrom', 'Rrs_412', 'Rrs_443', 'Rrs_469', 'Rrs_488', 'Rrs_531', 'Rrs_547', 'Rrs_555', 'Rrs_645', 'Rrs_667', 'Rrs_678', 'chlor_a', 'chl_ocx', 'Kd_490', 'pic', 'poc', 'ipar', 'nflh', 'par', 'lat', 'lon', 'palette'])"

# add npp to input file 
file_input.createDimension('latitude',888)
file_input.createDimension('longitude', 1368)

nppvariable = file_input.createVariable('npp', 'int16',('latitude', 'longitude'))
nppvariable[:] = npp[:,:]

但这似乎覆盖了所有现有变量,而丢失了所有其他数据?

file_input.variables.keys()

"odict_keys(['npp'])```

道歉,这是我第一次处理在Python netcdf4,但为什么我失去了所有的其他变量,当我使用createvariable()而不是npp被添加为新的变量到原始文件? 我错过了一步吗?

写入模式w确实会覆盖您现有的NetCDF文件,在该位置创建一个全新的文件。

您正在寻找ar+附加模式:

file_input = nc.Dataset('A2018066.5d.L3m_OC.nc', 'r+', format='NETCDF4')

https://unidata.github.io/netcdf4-python/netCDF4/index.html#netCDF4.Dataset

访问模式。 r表示只读; 无法修改任何数据。 w表示写; 创建一个新文件,删除具有相同名称的现有文件。 ar+表示追加(类似于串行文件); 打开现有文件进行读写。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM