我想更改variableDimension的值,即我的维度是3,但我想要一个数组的维度及其值。
lats=[10,9,6]
|lats| value |
|----|-------|
| 10 | 3 |
| 9 | 4 |
| 6 | 6 |
这是我的代码:
from netCDF4 import Dataset
import numpy as np
from cftime import num2date, date2num
ndvi_nc = Dataset("ndvi.nc", "w")
lats = np.array([10,9,6])
NDVInew = np.array([3,4,6])
time = ndvi_nc.createDimension("time", 1)
y = ndvi_nc.createDimension("y", 1)
x = ndvi_nc.createDimension("x", 3)
times = ndvi_nc.createVariable("time", "f8", ("time",))
ndvi = ndvi_nc.createVariable("ndvi", "f4", ("y", "x"))
ndvi_nc.description = "NDVI dataset"
ndvi_nc.source = "netCDF4 python module tutorial"
ndvi.units = "dimensionless"
times.units = "seconds since 1970-1-1"
ndvi[:] = NDVInew
times[:] = 1303939211
ndvi_nc.close()
在全套装备上我有:
我想要:
您根本没有在输出文件中包含纬度数据。将您的代码更改为如下所示:
from netCDF4 import Dataset
import numpy as np
from cftime import num2date, date2num
ndvi_nc = Dataset("ndvi.nc", "w")
lat_vals = np.array([10,9,6])
ndvi_vals = np.array([3,4,6])
timedim = ndvi_nc.createDimension("time", 1)
latdim = ndvi_nc.createDimension("lat", 3)
timevar = ndvi_nc.createVariable("time", "f8", ("time",))
latvar = ndvi_nc.createVariable("lat", "f4", ("lat"))
ndvivar = ndvi_nc.createVariable("ndvi", "f4", ("time", "lat"))
ndvi_nc.description = "NDVI dataset"
ndvi_nc.source = "netCDF4 python module tutorial"
timevar.units = "seconds since 1970-1-1"
latvar.units = "degrees_north"
ndvivar.units = "dimensionless"
timevar[:] = 1303939211
latvar[:] = lat_vals
ndvivar[:] = ndvi_vals
ndvi_nc.close()
当您有一维坐标变量(例如纬度)时,最好将维度命名为相同的名称。它还可以帮助软件更好地了解您在做什么。