Combining Multiple Files Using the ‘cat’ Method
from __future__ import print_function
from netCDF4 import Dataset
from wrf import getvar, ALL_TIMES
# Creating a simple test list with three timesteps
wrflist = [Dataset("wrfout_d01_2016-10-07_00_00_00"),
Dataset("wrfout_d01_2016-10-07_01_00_00"),
Dataset("wrfout_d01_2016-10-07_02_00_00")]
# Extract the 'P' variable for all times
p_cat = getvar(wrflist, "P", timeidx=ALL_TIMES, method="cat")
print(p_cat)
from __future__ import print_function
from glob import glob
from netCDF4 import Dataset as nc
from wrf import getvar, ALL_TIMES, get_cartopy, cartopy_xlim, cartopy_ylim
# Get all of the domain 02 WRF output files
wrf_filenames = glob("wrf_files/wrf_vortex_multi/wrfout_d02_*")
ncfiles = [nc(x) for x in wrf_filenames]
# Use SLP as the example variable and include all times
slp = getvar(ncfiles, "slp", timeidx=ALL_TIMES)
# Get the cartopy mapping object
cart_proj = get_cartopy(slp)
print (cart_proj)
print ("\n")
# Get the array of axes x-limits
xlims = cartopy_xlim(slp)
print (xlims)
print ("\n")
# Get the array of axes y-limits
ylims = cartopy_ylim(slp)
print (ylims)
from netCDF4 import MFDataset
https://github.com/Unidata/netcdf4-python/blob/master/examples/writing_netCDF.ipynb
我认为错误非常清楚,但有办法避免它。
https://cloud.tencent.com/developer/ask/184134/answer/289045
1 /您可以使用例如nccopy将NetCDF4中的NetCDF文件转换为经典格式:
nccopy -k classic nc4_file.nc ncclassic_file.nc
2 / xarray有一个类似的方法(称为open_mfdataset
),它能够处理NetCDF4文件。快速测试:
import netCDF4 as nc4
test = nc4.MFDataset(['test0.nc','test1.nc'])
这给了我同样的错误(“MFNetCDF4仅适用于...”),与xarray相同,没有任何问题:
import xarray as xr
test = xr.open_mfdataset(['test0.nc', 'test1.nc'])<
Python: How to use MFdataset in netCDF4
Example usage (See netCDF4.MFDataset.__init__
for more details):
:::python
>>> import numpy as np
>>> # create a series of netCDF files with a variable sharing
>>> # the same unlimited dimension.
>>> for nf in range(10):
>>> f = Dataset("mftest%s.nc" % nf,"w",format='NETCDF4_CLASSIC')
>>> f.createDimension("x",None)
>>> x = f.createVariable("x","i",("x",))
>>> x[0:10] = np.arange(nf10,10(nf+1))
>>> f.close()
>>> # now read all those files in at once, in one Dataset.
>>> f = MFDataset("mftest*nc")
>>> print f.variables["x"][:]
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99]
"""
Note that netCDF4.MFDataset
can only be used to read, not write, multi-file
datasets.