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

2024-09-27 22:31:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个opendap thredds链接到一个目录,其中保存着来自特拉华州业务预报系统(DBOFS)的许多海洋模型输出文件。历史数据存储在单独的每小时文件中,甚至有些文件跨越多个小时。我想把这些文件当作一个很长的时间序列来看。我在这里遇到了另一个类似的问题:Loop through netcdf files and run calculations - Python or 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

Tags: 文件httpmodelsnoaaopsgovnetcdf4thredds
1条回答
网友
1楼 · 发布于 2024-09-27 22:31:39

正如错误所说,您不能在远程数据集上使用globbing(使用*作为通配符),但是您可以构建一个python数据集url列表并将它们传递给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']

产生:

^{pr2}$

结果表明,实际上,0、6、12和18小时的四个值实际上是由MFDataset聚合而成的。在

相关问题 更多 >

    热门问题