首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用pydap库收集THREDDS数据?

如何使用pydap库收集THREDDS数据?
EN

Stack Overflow用户
提问于 2019-03-06 06:33:32
回答 2查看 504关注 0票数 1

我一直在尝试使用Will Holgren的示例get_nomads.py模块,他非常友好地转发给我。在代码中,调用获取THREDDS数据,如下所示:

代码语言:javascript
复制
from pydap.client import open_url
dataset = open_url('https://nomads.ncdc.noaa.gov/thredds/dodsC/gfs-004/201612/20161201/gfs_4_20161201_0000_003.grb2')

这不起作用,因为(显然)旧的THREDDS服务器已经退役。

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm 2018.2.4\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec
    exec(exp, global_vars, local_vars)
  File "<input>", line 1, in <module>
  File "C:\Users\pmoran\jira\slf\venv\lib\site-packages\pydap\client.py", line 64, in open_url
    dataset = DAPHandler(url, application, session, output_grid).dataset
  File "C:\Users\pmoran\jira\slf\venv\lib\site-packages\pydap\handlers\dap.py", line 51, in __init__
    raise_for_status(r)
  File "C:\Users\pmoran\jira\slf\venv\lib\site-packages\pydap\net.py", line 30, in raise_for_status
    comment=response.body
webob.exc.HTTPError: 404 Not Found

因此,环顾四周,我找不到支持这种数据访问方法的THREDDS服务器。

顺便说一句,我可以获得如下数据:

代码语言:javascript
复制
url = 'http://dtvirt5.deltares.nl:8080/thredds/dodsC/opendap/rijkswaterstaat/jarkus/profiles/transect.nc'
dataset = open_url(url)
<DatasetType with children 'id', 'areacode', 'areaname', 'alongshore', 'cross_shore', 'time', 'time_bounds', 'epsg', 'x', 'y', 'lat', 'lon', 'angle', 'mean_high_water', 'mean_low_water', 'max_cross_shore_measurement', 'min_cross_shore_measurement', 'nsources', 'max_altitude_measurement', 'min_altitude_measurement', 'rsp_x', 'rsp_y', 'rsp_lat', 'rsp_lon', 'time_topo', 'time_bathy', 'origin', 'altitude'>
variable = dataset['id']
print(variable[0:10])
[2000100 2000101 2000102 2000103 2000104 2000105 2000106 2000120 2000140
 2000160]

我还可以手动从https://www.ncei.noaa.gov/thredds/dodsC/gfs-g4-anl-files/201808/20180828/gfsanl_4_20180828_1800_006.grb2.html下载数据

但是我似乎找不到参数格式来使用pydap下载数据。我想我所需要的只是一个指向真正的THREDDS服务器的指针,该服务器在相同的URI位置具有适当的DDS和DAS文件。

有谁知道如何使用pydap客户端获取GFS4 GRB文件吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-03-06 23:05:50

我没有使用pydap进行测试,使用netCDF4进行了测试,这与THREDDS非常相似。

代码语言:javascript
复制
dataset = open_url('http://www.ncei.noaa.gov/thredds/dodsC/gfs-g4-anl-files/201612/20161201/gfsanl_4_20161201_0000_003.grb2')

该文件THREDDS OPeNDAP表单为here:

由YYYYMM/组织的主要目录在:https://www.ncei.noaa.gov/thredds/catalog/gfs-g4-anl-files/catalog.html

可在此处查看所有链接到TDS访问的NCEI GFS数据集:

https://www.ncdc.noaa.gov/data-access/model-data/model-datasets/global-forcast-system-gfs

票数 1
EN

Stack Overflow用户

发布于 2019-03-07 00:03:37

当我尝试你提供给Eric的pydap链接时,我得到了这个错误。

代码语言:javascript
复制
dataset = open_url('http://www.ncei.noaa.gov/thredds/dodsC/gfs-g4-anl-files/201612/20161201/gfsanl_4_20161201_0000_003.grb2')
Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm 2018.2.4\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec
    exec(exp, global_vars, local_vars)
  File "<input>", line 1, in <module>
  File "C:\Users\pmoran\jira\slf\venv\lib\site-packages\pydap\client.py", line 64, in open_url
    dataset = DAPHandler(url, application, session, output_grid).dataset
  File "C:\Users\pmoran\jira\slf\venv\lib\site-packages\pydap\handlers\dap.py", line 64, in __init__
    self.dataset = build_dataset(dds)
  File "C:\Users\pmoran\jira\slf\venv\lib\site-packages\pydap\parsers\dds.py", line 161, in build_dataset
    return DDSParser(dds).parse()
  File "C:\Users\pmoran\jira\slf\venv\lib\site-packages\pydap\parsers\dds.py", line 49, in parse
    self.consume('dataset')
  File "C:\Users\pmoran\jira\slf\venv\lib\site-packages\pydap\parsers\dds.py", line 41, in consume
    token = super(DDSParser, self).consume(regexp)
  File "C:\Users\pmoran\jira\slf\venv\lib\site-packages\pydap\parsers\__init__.py", line 182, in consume
    raise Exception("Unable to parse token: %s" % self.buffer[:10])
Exception: Unable to parse token: <!DOCTYPE 

但是,根据您的建议,我可以使用NETCDF4获取数据。这是我所做的。

代码语言:javascript
复制
>>> import netCDF4
>>> nc = netCDF4.Dataset('http://www.ncei.noaa.gov/thredds/dodsC/gfs-g4-anl-files/201612/20161201/gfsanl_4_20161201_0000_003.grb2')
>>> nc.variables.keys()
odict_keys(['LatLon_Projection', 'lat', 'lon', 'reftime', 'time', 'time_bounds', 
...  
'v-component_of_wind_altitude_above_msl', 'v-component_of_wind_height_above_ground', 'v-component_of_wind_tropopause', 'v-component_of_wind_sigma'])

这似乎很管用。不确定pydap有什么问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55012687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档