python 将垂直速度从压力坐标系转为高度坐标系(pa/s转为m/s)

简介: 最近在计算一下涡度的垂直项时,发现一个问题,如果使用笛卡尔坐标系下的涡度计算公式,会发现对于我们从ERA5下载的垂向速度ω,它的单位是:pa/s,而对于水平的速度u、v来说,它们的单位是:m/s,这在计算速度的旋度时就会出现问题,由于单位不一致引起计算无法进行,对于后续数据处理造成干扰。

前言



最近在计算一下涡度的垂直项时,发现一个问题,如果使用笛卡尔坐标系下的涡度计算公式,会发现对于我们从ERA5下载的垂向速度ω,它的单位是:pa/s,而对于水平的速度u、v来说,它们的单位是:m/s,这在计算速度的旋度时就会出现问题,由于单位不一致引起计算无法进行,对于后续数据处理造成干扰。


本来我在网上搜寻解决方案时,发现大部分的解答都只提供了解决思路(由公式转换),往往比较冗杂,不够简单。所辛,我在metpy这个工具包中发现了包装好的函数,只需要提供相应的数据,即可成功转换!


这里展示由压力坐标向高度坐标转换的例子,(metpy也提供了反向转换的函数,可以尝试)


函数如下:官方链接在这

metpy.calc.vertical_velocity(omega, pressure, temperature, mixing_ratio=0)


需要传入三个参数:压力坐标系下的垂向速度ω、压力p、气温t,混合比(默认为0)


omega (pint.Quantity) – Vertical velocity in terms of pressure
pressure (pint.Quantity) – Total atmospheric pressure
temperature (pint.Quantity) – Air temperature
mixing_ratio (pint.Quantity, optional) – Mixing ratio of air


还是比较容易理解的,下面给出了一个示例,仅供参考:


import xarray as xr
import numpy as np
from metpy.units import units
import metpy.constants as constants
import metpy.calc as mpcalc
#########################################################
path1=r'D:\PV\down_hourly.nc'
f = xr.open_dataset(path1).sortby('latitude')
path3=r'D:/PV/tem.200406.nc'
f_t=xr.open_dataset(path3).sortby('latitude').transpose('time','level','latitude','longitude')
#########################################################
t=f_t.t
f = f.transpose('time','level','latitude','longitude')
f_u = f.u
f_v = f.v
f_w = f.w
#########################################################
lat =  f_u.latitude
lon =  f_u.longitude
time = f_u.time
lev = f_u.level
pressure = lev*units.hPa
#########################################################
#height=mpcalc.pressure_to_height_std( pressure)
w = mpcalc.vertical_velocity(f_w, lev, t, mixing_ratio=0)


计算之后发现w的单位已经转换成功了:


92a2ab7a1c3b42cca2a2fe1e54843846.png


有兴趣的小伙伴快去试试吧~

相关文章
|
6月前
|
数据采集 搜索推荐 数据管理
基于Python爬虫的垂直搜索引擎设计与实现
基于Python爬虫的垂直搜索引擎设计与实现
146 1
|
6月前
|
数据可视化 JavaScript 前端开发
Python数据可视化 坐标系
Python数据可视化 坐标系
47 2
|
数据挖掘 Python
【python数据分析】绘制双Y轴坐标系
前言 Matplotlib绘制出的图形中会存在一些问题,例如:如何绘制双Y轴坐标系?如何去掉图形默认的边框?以及如何移动坐标到指定位置?下面我们就来看看如何解决
【python数据分析】绘制双Y轴坐标系
|
程序员 Python
Python Qt GUI设计:QScrollBar类实现窗口水平或垂直滑动条效果(拓展篇—4)
使用QScrollBar可以在窗口控件提供了水平的或垂直的滚动条,这样可以扩大当前窗口的有效装载面积,从而装载更多的控件。
|
数据挖掘 Python
【Python数据分析 - 2】:多个坐标系的绘制
【Python数据分析 - 2】:多个坐标系的绘制
122 0
【Python数据分析 - 2】:多个坐标系的绘制
python表达式求解 - 垂直上抛小球位置计算
python表达式求解 - 垂直上抛小球位置计算
|
存储 安全 Serverless
【Python】面试官:元组列表都分不清,回去等通知pa
处在于元组的元素是不能被修改的。不可改变的序列,它里面的内容是不可以被改变的。列表中除了增加、修改和删除的相关操作,其它的都是适用于元组的。 注意:列表的定义是使用方括号"[]",元组的定义是使用小括号"()"。这个是最本质的区别。 元组创建很简单,只需要在括号中添加元素,并
193 0
【Python】面试官:元组列表都分不清,回去等通知pa
|
编解码 数据可视化 数据挖掘
Python可视化学习(饼状图,坐标系...)
Python可视化学习(饼状图,坐标系...)
175 0
Python可视化学习(饼状图,坐标系...)
|
8天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
下一篇
无影云桌面