python 中 netcdf4 变量维度内的值

问题描述 投票:0回答:1

我想更改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()

在全套装备上我有:

what do I get

我想要:

what I would like to have

python netcdf dimension
1个回答
0
投票

您根本没有在输出文件中包含纬度数据。将您的代码更改为如下所示:

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()

当您有一维坐标变量(例如纬度)时,最好将维度命名为相同的名称。它还可以帮助软件更好地了解您在做什么。

© www.soinside.com 2019 - 2024. All rights reserved.