首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >如何获取GFS数据未来一周的预报之温湿廓线

如何获取GFS数据未来一周的预报之温湿廓线

作者头像
用户11172986
发布2024-06-20 18:12:23
发布2024-06-20 18:12:23
5490
举报
文章被收录于专栏:气python风雨气python风雨

温湿廓线

Siphon是一个用于访问大气和海洋数据源的Python库。它提供了易于使用的工具,可以从THREDDS数据服务器中自动获取、解析和检索数据。Siphon库旨在使使用Python进行科学数据分析变得更加容易。

Siphon库主要提供以下功能:

  1. Catalog检索:Siphon可以连接到THREDDS(Thematic Real-time Environmental Distributed Data Services)目录,帮助用户轻松地搜索和发现可用的数据集。
  2. 数据访问:Siphon通过使用NetCDF Subset Service (NCSS)和NetCDF OPeNDAP (DODS)协议从数据服务器中获取数据。
  3. 数据解析:Siphon提供了一组工具来解析获取的数据,并将其转换为NumPy数组或Pandas数据框。
  4. 数据检验:Siphon提供了一些工具,可以帮助用户验证数据是否满足预期格式和要求。

Siphon库广泛应用于气象和海洋学领域,以及其他需要使用大量科学数据的领域。它简化了数据获取和处理的过程,使得用户可以更高效地进行科学研究和分析。

总之,Siphon是一个强大的Python库,为科学家和工程师提供了从THREDDS目录和数据服务器中获取数据的简单方法,并提供了工具来解析、检验和分析这些数据。

下面基于官方示例略作修改,修改主要因过时而报错的代码 进行数据索引与作图

数据索引

In [20]:

代码语言:javascript
复制
代码语言:javascript
复制
from datetime import datetime

import matplotlib.pyplot as plt

from siphon.catalog import TDSCatalog
代码语言:javascript
复制

In [21]:

代码语言:javascript
复制
代码语言:javascript
复制
best_gfs = TDSCatalog('http://thredds.ucar.edu/thredds/catalog/grib/NCEP/GFS/'
                      'Global_0p5deg/catalog.xml?dataset=grib/NCEP/GFS/Global_0p5deg/Best')
print(best_gfs.datasets)
代码语言:javascript
复制
代码语言:javascript
复制
['Best GFS Half Degree Forecast Time Series']

In [22]:

代码语言:javascript
复制
代码语言:javascript
复制
best_ds = best_gfs.datasets[0]
ncss = best_ds.subset()
代码语言:javascript
复制

然后,我们可以使用“ncss”对象创建一个新的查询对象,该对象 便于向服务器请求数据。 设置坐标为 115E 40N

In [23]:

代码语言:javascript
复制
代码语言:javascript
复制
query = ncss.query()
query.lonlat_point(115, 40).time(datetime.utcnow())
query.accept('netcdf4')
query.variables('Temperature_isobaric', 'Relative_humidity_isobaric')
代码语言:javascript
复制
代码语言:javascript
复制
var=Temperature_isobaric&var=Relative_humidity_isobaric&time=2024-02-11T08%3A39%3A29.333010&longitude=115&latitude=40&accept=netcdf4

In [24]:

代码语言:javascript
复制
data = ncss.get_data(query)
list(data.variables)
代码语言:javascript
复制
['latitude',
 'longitude',
 'stationAltitude',
 'station_id',
 'station_description',
 'profileId',
 'nobs',
 'profileTime',
 'stationIndex',
 'altitude',
 'Temperature_isobaric',
 'Relative_humidity_isobaric']

我们将提取要使用的变量以及压力值。要获取 压力的正确变量的名称(与温度和 相对湿度,我们看一下“坐标”属性。最后一个变量 “坐标”中列出的是压力维度。

In [25]:

代码语言:javascript
复制
代码语言:javascript
复制
temp = data.variables['Temperature_isobaric']
relh = data.variables['Relative_humidity_isobaric']
press_name = relh.coordinates.split()[-1]
press = data.variables[press_name]
press_vals = press[:].squeeze()
代码语言:javascript
复制

作图

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气python风雨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 温湿廓线
    • 数据索引
    • 作图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档