python--由wrfouput的数据计算位势涡度,并插值到指定压力层

简介: 近日,需要对wrf模式输出的数据进行计算位涡,并绘图分析。发现模式本身输出的数据中虽然不包含位涡,但wrf-python 提供了函数可以通过其他变量计算得到位涡。顺便记录一下计算的过程以及将位涡插值到压力层的过程

近日,需要对wrf模式输出的数据进行计算位涡,并绘图分析。发现模式本身输出的数据中虽然不包含位涡,但wrf-python 提供了函数可以通过其他变量计算得到位涡。顺便记录一下计算的过程以及将位涡插值到压力层的过程


位涡的计算主要通过wrf-python这个库中的wrf.pvo这个函数,官网链接如下:

wrf-pvo

wrf.pvo(ustag, vstag, theta, pres, msfu, msfv, msfm, cor, dx, dy, meta=True)


计算位涡需要用到的变量包括:

  • 纬向风速U
  • 经向风速V
  • 位势温度T
  • 压力P
  • 几个其他参数:msfu、msfv、msfm、cor
  • x格点之间的距离:dx
  • y格点之间的距离:dy
    函数计算返回的就是位涡,单位为(puv)1 PVU = 1.0 x 10^(-6) m^2 s^(-1) K kg^(-1)


比较了一下ncl中的计算函数wrf_pvo()中计算过程是需要将:位涡+300 的,但是wrf-python中的没有体现,按道理应该是以ncl中的为准。


后来发现,通过getvar("T")得到的位温,它是perturbation potential temperature theta-t0,加上300才是 total potential temperature


下面给出定义的函数,直接输入文件路径,即可得到计算得到的位涡:


def cal_interp(file):
   ########################################################################
    ####通过函数计算位涡
   #######################################################################
    ncfile = Dataset(filelist[0])
    U = getvar(ncfile, "U")
    V = getvar(ncfile, "V")
    Theta = getvar(ncfile, "T")
    P = getvar(ncfile, "P")
    PB = getvar(ncfile, "PB")
    MSFU = getvar(ncfile, "MAPFAC_U")
    MSFV = getvar(ncfile, "MAPFAC_V")
    MSFM = getvar(ncfile, "MAPFAC_M")
    COR = getvar(ncfile, "F")
    DX = ncfile.DX
    DY = ncfile.DY
    THETA = Theta  + 300
    P     = P + PB
    pv = pvo(U, V, THETA, P, MSFU, MSFV, MSFM, COR, DX, DY, 0)
   ########################################################################
    ####下面将得到的位涡插值到等压面上,选取常用的27层压力层进行插值
   #######################################################################
    pre = getvar(ncfile, "pressure")
    level =np.array( [100,125,
                      150,175,200,
                      225,250,300,
                      350,400,450,
                      500,550,600,
                      650,700,750,
                      775,800,825,
                      850,875,900,
                      925,950,975,
                      1000]
            )
    level=level[::-1]
    plevs =level*units.hPa
    pv_interp = np.array(interplevel(pv, pre, plevs))
    potential_vorticity=pv_interp*units['K m**2 kg**-1 s**-1']
    return  potential_vorticity


使用函数:


path=r'/wrfout/'
filelist = glob.glob(path+'*')
filelist.sort()
pv = cal_interp(filelist[0])


这样就得到一个文件的位涡啦

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
4月前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
4月前
|
数据可视化 关系型数据库 MySQL
基于python大数据的的海洋气象数据可视化平台
针对海洋气象数据量大、维度多的挑战,设计基于ECharts的可视化平台,结合Python、Django与MySQL,实现数据高效展示与交互分析,提升科研与决策效率。
|
4月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
2713 1
|
4月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
587 0
|
4月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
4月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。

推荐镜像

更多