如何从 NCEI THREDDS 服务器下载和子集 netCDF 文件

问题描述

我正在尝试下载位于此处的文件并对其进行子集化:https://www.ncei.noaa.gov/thredds-ocean/catalog/ncei/archive/data/0129374/daily/catalog.html,但我不确定是我做错了什么还是链接有问题。这是我第一次从该服务下载数据,所以我无法确切判断。

如果我将鼠标悬停在我看到的第一个文件链接上:https://www.ncei.noaa.gov/thredds-ocean/catalog/ncei/archive/data/0129374/daily/catalog.html?dataset=ncei/archive/data/0129374/daily/livneh_NAmerExt_15Oct2014.195001.nc

我试过用 pydap 打开这个网址:

from pydap.client import open_url

open_url('https://www.ncei.noaa.gov/thredds-ocean/catalog/ncei/archive/data/0129374/daily/catalog.html?dataset=ncei/archive/data/0129374/daily/livneh_NAmerExt_15Oct2014.195001.nc')

但我收到错误

webob.exc.HTTPError: 404 Not Found

如果我使用 netCDF4 库,则会出现不同的错误

import netCDF4

netCDF4.Dataset('https://www.ncei.noaa.gov/thredds-ocean/catalog/ncei/archive/data/0129374/daily/livneh_NAmerExt_15Oct2014.195001.nc')

这给了我:

OSError:[Errno -75] NetCDF:格式错误或意外约束: b'https://www.ncei.noaa.gov/thredds-ocean/catalog/ncei/archive/data/0129374/daily/catalog.html?dataset=ncei/archive/data/0129374/daily/livneh_NAmerExt_15Oct2014.195001. nc'

链接可能有问题吗?如何下载这些数据并对其进行子集化处理?

解决方法

目前您使用的文件有误。您需要使用 OPENDAP 链接:https://www.ncei.noaa.gov/thredds-ocean/dodsC/ncei/archive/data/0129374/daily/livneh_NAmerExt_15Oct2014.195001.nc.html。然后删除其中的html部分。

我已经使用我的 nctoolkit 包对此进行了测试,它似乎工作正常:

import nctoolkit as nc
ds = nc.open_thredds("https://www.ncei.noaa.gov/thredds-ocean/dodsC/ncei/archive/data/0129374/daily/livneh_NAmerExt_15Oct2014.195001.nc")
ds.select(time = 0)
ds.plot()