气象学家公众号 发表于 2024-4-2 23:15:35

Siphon使用IGRA2为数据源画探空图

Siphon 还提供了 Integrated Global Radiosonde Archive (IGRA2)为数据源的数据管道。在修改完uwyo的代码后,顺便来看看另一个数据集的。使用的话我感觉还是怀俄明哪个比较好,它更新快,基本上国际时间00,12时一过半小时就可以访问最新的数据;而且国内访问也快(不翻墙也能使用);绘图代码简单易懂,也便于气象工作者根据自己的需要再次修改。IGRA2的更新比较慢,反正是3月份这回的中国区基本都是提示无数据;访问也很慢,不清楚是墙的原因还是网站本身技术的原因,和Matlab启动速度有的一拼;代码比怀俄明的那个稍微复杂些,因为他提供的数据参量更多,像位温,假位温这样的都有,怀俄明的只有一个露点。需要精细化比对探空数据的可能需要IGRA2的数据,需要快速分析天气的更喜欢怀俄明。 IGRA2 Upper Air Data Request 官网文档给出了具体用法,和怀俄明的那个模块很相似

带入模块
from datetime import datetime
from siphon.simplewebservice.igra2 import IGRAUpperAir
设置站好和时间
date = datetime(2014, 9, 10, 0)
station = 'USM00070026'
发送请求,获取数据
df, header = IGRAUpperAir.request_data(date, station)这里有两点需要注意


[*]站点编号。IGRA2目前收录了2700多个站点的数据(如上图密密麻麻的红点),为了便于管理,给各个站点都做了统一编号,这个编号的组成大约是’国家代码‘+’000‘+’原站点编号‘。这里的原站点编号就是怀俄明网站上各个站点的5位数编号,像青岛原本用ZSQD表示的就是54857,四位字母编号一般是省市级的站点才有。而IGRA2官方也提供了一份详细的全球站点统一编号列表,包含每个站点的编号,位置(经纬度),网络关联,站点名称和记录周期。
[*]获取格式中的header。header表示的相当于nc文件的头文件,用于描述这段数据的一些特征。而df才是爬到的数据。

而IGRA2的数据也与怀俄明的不一样
dfIGRA2.keys()
---
Out:
Index(['pressure', 'reported_height', 'calculated_height', 'temperature',
       'temperature_gradient', 'potential_temperature',
       'potential_temperature_gradient', 'virtual_temperature',
       'virtual_potential_temperature', 'vapor_pressure',
       'saturation_vapor_pressure', 'reported_relative_humidity',
       'calculated_relative_humidity', 'u_wind', 'u_wind_gradient', 'v_wind',
       'v_wind_gradient', 'refractive_index', 'date'],
      dtype='object')
==========================
dfuwyo.keys()
---
Out:
Index(['pressure', 'height', 'temperature', 'dewpoint', 'direction', 'speed',
       'u_wind', 'v_wind', 'station', 'station_number', 'time', 'latitude',
       'longitude', 'elevation'],
      dtype='object')比较麻烦的是IGRA2的数据没有露点的数据,而这个数据有是绘图必须的。好在Metpy库提供了calc的计算模块,专门处理大气科学上的这些乱七八糟的计算。这里用metpy.calc.dewpoint这个功能实现从水汽分压计算露点。官方也给出了一个示例,可以直接用。虽然功能上说是用水汽分压计算,但是只要有表面压强就可以计算了。
mixing = 10 * units('g/kg')
e = mpcalc.vapor_pressure(list(df['pressure'])* units.mbar, mixing)
df['dewpoint'] = mpcalc.dewpoint(e)最后还有风速和风向这两个参数没有解决,calc也提供了模块搞定这个问题。怀俄明的代码是用风速和风向算u,v分矢量,而IGRA2恰好反过来。
df['u_wind'], df['v_wind'] = mpcalc.wind_components(df['speed'],np.deg2rad(df['direction']))
---
df['speed']=mpcalc.wind_speed(df['u_wind'], df['v_wind'])
df['direction']=mpcalc.wind_direction(df['u_wind'], df['v_wind'])calc还有其他功能,可以查阅官方文档了解。
添加如下代码:可以使程序运行,但是风向的转换似乎有问题,而官方的calc的包也总是报错,暂时不管了,先这么滴吧,还是用怀俄明的数据吧。
f, header= IGRAUpperAir.request_data(date, station, derived=True)
df['speed']=mpcalc.wind_speed(df['u_wind'], df['v_wind'])

def mydirection(u,v):
    theta=np.arctan2(u, v)
    mydirection=np.rad2deg(theta)+180
    return mydirection

df['direction']=mydirection(df['u_wind'], df['v_wind'])

mixing = 10 * units('g/kg')
e = mpcalc.vapor_pressure(list(df['pressure'])* units.mbar, mixing)
df['dewpoint'] = mpcalc.dewpoint(e)
转载请注:Siphon使用IGRA2为数据源画探空图 - Bugatii100Peagle

更多详见:https://zhuanlan.zhihu.com/p/102032217



文章来源于微信公众号:气象学家

Gregoryroata 发表于 8 小时前

сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт
页: [1]
查看完整版本: Siphon使用IGRA2为数据源画探空图