python 如何利用Metpy计算水汽通量散度

简介: 本文介绍如何在python中通过metpy计算水汽通量散度。

MetPy是一个Python工具集合库,用于阅读、可视化和执行天气数据的计算。

本文介绍如何在python中通过metpy计算水汽通量散度。


数据:



  • 1、比湿数据
  • 2、风速分量U
  • 3、风速分量V


主要函数:



  • 1、metpy.calc.divergence(u, v, *, dx=None, dy=None, x_dim=- 1, y_dim=- 2)
    计算矢量的水平散度。
  • 2、metpy.calc.lat_lon_grid_deltas(longitude, latitude, x_dim=- 1, y_dim=- 2, geod=None)计算纬度/经度格式的网格点之间的实际增量。


ea2f1060eac74662801b386acecfa453.png


注意点



  • 1、使用merpy计算过程中需要带上单位
  • 2、最好先选取部分区域进行测试,然后再对全球进行循环
  • 3、注意及时保存数据,避免浪费时间
  • 4、数据的分辨率保持一致


代码:



# -*- coding: utf-8 -*-
"""
introduction : keep learning althongh walk slowly
"""
# # # import package
import xarray as xr
import numpy as np
from metpy import units
import metpy.constants as constants
import metpy.calc as mpcalc
# # # read data
p1=r'D:/sph.nc'
p2=r'D:/u.nc'
p3=r'D:/v.nc'
f_u = xr.open_dataset(p2)
f_v = xr.open_dataset(p3)
f_q = xr.open_dataset(p1)
# # # read variables
u = f_u.u
v = f_v.v
q = f_q.q
lat = q.lat
lon = q.lon
lev = q.level
time=q.time
# # #
qv_u = u*q/constants.g
qv_v = v*q/constants.g
# # # 
dx, dy = mpcalc.lat_lon_grid_deltas(lon, lat)
div_qv = np.zeros((q.time.shape[0],lev.shape[0],lat.shape[0],lon.shape[0]))
for j in range(q.time.shape[0]): 
    print(j)
    for i in range(lev.shape[0]):
        div_qv[j,i] = mpcalc.divergence(u = qv_u[j,i],v = qv_v[j,i],dx = dx ,dy = dy)
# # # 计算整层水汽通量散度
total_div_qv = np.trapz(div_qv[::-1],lev[::-1],axis=1)
# # # save  data  
div_qv_nc = xr.Dataset(
    {
        "mfd":(("time",'level',"lat","lon"), div_qv)
    },
    coords={
        'level':lev,
        "time":time,
        "lat":lat,
        "lon":lon,
    }
)
div_qv_nc.attrs["long_name"] = "div-qv"
div_qv_nc.to_netcdf("qiv-qv.nc")    
total_qv_nc = xr.Dataset(
    {
        "total_mfd":(("time","lat","lon"), total_div_qv)
    },
    coords={
        "time":time,
        "lat":lat,
        "lon":lon,
    }
)
total_qv_nc.attrs["long_name"] = "total-div-qv"
total_qv_nc.to_netcdf("total-qiv-qv.nc") 


                          一个努力学习python的海洋
                          水平有限,欢迎指正!!!
                            欢迎评论、收藏、点赞、转发、关注。
                            关注我不后悔,记录学习进步的过程~~


相关文章
|
1月前
|
Python
【10月更文挑战第10天】「Mac上学Python 19」小学奥数篇5 - 圆和矩形的面积计算
本篇将通过 Python 和 Cangjie 双语解决简单的几何问题:计算圆的面积和矩形的面积。通过这道题,学生将掌握如何使用公式解决几何问题,并学会用编程实现数学公式。
160 60
|
1月前
|
Python
Datetime模块应用:Python计算上周周几对应的日期
Datetime模块应用:Python计算上周周几对应的日期
|
16天前
|
机器学习/深度学习 算法 编译器
Python程序到计算图一键转化,详解清华开源深度学习编译器MagPy
【10月更文挑战第26天】MagPy是一款由清华大学研发的开源深度学习编译器,可将Python程序一键转化为计算图,简化模型构建和优化过程。它支持多种深度学习框架,具备自动化、灵活性、优化性能好和易于扩展等特点,适用于模型构建、迁移、部署及教学研究。尽管MagPy具有诸多优势,但在算子支持、优化策略等方面仍面临挑战。
42 3
|
27天前
|
Python
【10月更文挑战第15天】「Mac上学Python 26」小学奥数篇12 - 图形变换与坐标计算
本篇将通过 Python 和 Cangjie 双语实现图形变换与坐标计算。这个题目帮助学生理解平面几何中的旋转、平移和对称变换,并学会用编程实现坐标变化。
63 1
|
1月前
|
机器学习/深度学习 移动开发 Python
【10月更文挑战第11天】「Mac上学Python 22」小学奥数篇8 - 排列组合计算
本篇将通过 Python 和 Cangjie 双语讲解如何计算排列与组合。这道题目旨在让学生学会使用排列组合公式解决实际问题,并加深对数学知识和编程逻辑的理解。
60 4
|
1月前
|
数据可视化 Python
【10月更文挑战第12天】「Mac上学Python 23」小学奥数篇9 - 基础概率计算
本篇将通过 Python 和 Cangjie 双语实现基础概率的计算,帮助学生学习如何解决简单的概率问题,并培养逻辑推理和编程思维。
48 1
|
1月前
|
存储 自然语言处理 数据处理
使用Python计算多个集合的交集详解
使用Python计算多个集合的交集详解
38 1
|
1月前
|
Python
使用python计算两个日期之前的相差天数,周数
使用python计算两个日期之前的相差天数,周数
35 0
|
1月前
|
索引 Python
Excel学习笔记(一):python读写excel,并完成计算平均成绩、成绩等级划分、每个同学分数大于70的次数、找最优成绩
这篇文章是关于如何使用Python读取Excel文件中的学生成绩数据,并进行计算平均成绩、成绩等级划分、统计分数大于70的次数以及找出最优成绩等操作的教程。
59 0
|
1月前
|
机器学习/深度学习 算法 数据挖掘
Python 中的计算与应用
Python 中的计算与应用