繁体   English   中英

如何使用MFDataset通过Python NetCDF4模块读取OPeNDAP数据集中的多个文件?

[英]How to use MFDataset to read multiple files in OPeNDAP dataset with Python NetCDF4 module?

我有一个opendap thredds链接,该链接指向一个目录,其中包含特拉华州运营预报系统(DBOFS)的许多海洋学模型输出文件。 历史数据存储在单独的小时文件中,甚至存储在多个小时的文件中。 我想看一下这些文件,就好像它们是一个长时间序列一样。 我遇到另一个问题,在这里问类似的问题: 循环netcdf文件并运行计算-Python或R

使用通配符搜索将返回以下错误:

import netCDF4

f = netCDF4.MFDataset('http://opendap.co-ops.nos.noaa.gov/thredds/dodsC/NOAA/DBOFS/MODELS/201401/nos.dbofs.fields.n001.20140130.*.nc')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-3-a44e21cddbe9> in <module>()
----> 1 f = netCDF4.MFDataset('http://opendap.co-ops.nos.noaa.gov/thredds/dodsC/NOAA/DBOFS/MODELS/201401/nos.dbofs.fields.n001.20140130.*.nc')

C:\Users\cenglert\AppData\Local\Enthought\Canopy32\User\lib\site-packages\netCDF4.pyd in netCDF4.MFDataset.__init__ (netCDF4.c:6458)()

ValueError: cannot using file globbing for remote (OPeNDAP) datasets

就像错误所说的那样,您不能在远程数据集上使用通配符(在通配符上使用* ),但是您可以构建数据集URL的python列表并将其传递给MFDataset 像这样:

import netCDF4

base = 'http://opendap.co-ops.nos.noaa.gov/thredds/dodsC/\
NOAA/DBOFS/MODELS/201401/nos.dbofs.fields.n001.20140130.t%2.2dz.nc'
files = [base % d for d in range(0,24,6)]
nc = netCDF4.MFDataset(files)
print nc.variables['salt']

产生:

<class 'netCDF4._Variable'>
float64 salt('ocean_time', 's_rho', 'eta_rho', 'xi_rho')
    long_name: salinity
    time: ocean_time
    coordinates: lat_rho lon_rho
    field: salinity, scalar, series
unlimited dimensions = ('ocean_time',)
current size = (4, 10, 732, 119)

并表明实际上MFDataset实际上已汇总了MFDataset和18小时的四个值。

暂无
暂无

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

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