爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 167|回复: 3

[求助] python绘制探空图后,计算的cape值和micaps不同

[复制链接]
发表于 前天 16:47 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 圈圈圆圆 于 2025-5-8 16:55 编辑

计算得出的cape、cin和micaps的结果差别比较大,请问问题出在哪里?分别附上我的代码,绘制的探空图,micaps探空图:

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
import pandas as pd
import metpy.calc as mpcalc
from metpy.plots import Hodograph, SkewT
from metpy.units import units
import re  # 导入正则表达式模块


# 读取文件
file_path = '南宁(59431)层结资料.csv'
data = pd.read_csv(file_path, delimiter=',', na_values='-')


# 按气压从高到低排序并去除NaN值
sorted_data = data.sort_values(by='层次', ascending=False).dropna(subset=['层次', '温度', '露点', '风速', '风向'])
p = sorted_data['层次'].values * units.hPa
T = sorted_data['温度'].values * units.degC
Td = sorted_data['露点'].values * units.degC
wind_speed = sorted_data['风速'].values * units.knots
wind_dir = sorted_data['风向'].values * units.degrees
u, v = mpcalc.wind_components(wind_speed, wind_dir)


# 计算凝结抬升高度 (LCL)
lcl_pressure, lcl_temperature = mpcalc.lcl(p[0], T[0], Td[0])


# 计算气块状态曲线
parcel_prof = mpcalc.parcel_profile(p, T[0], Td[0]).to('degC')


# 计算 CAPE 和 CIN
cape, cin = mpcalc.cape_cin(p, T, Td, parcel_prof, which_lfc='bottom', which_el='top')
print(cape,cin)


# 创建 SkewT 图
fig = plt.figure(figsize=(9, 9))
skew = SkewT(fig, rotation=30)


# 绘制层结曲线和露点曲线
skew.plot(p, T, 'r', linewidth=2)   # 绘制层结曲线(红色实线)
skew.plot(p, Td, 'g', linewidth=2)  # 绘制等饱和混合比线(绿色实线)


# 绘制风羽
skew.plot_barbs(p, u, v)


# 绘制凝结抬升高度(黑点)
skew.plot(lcl_pressure, lcl_temperature, 'ko', markerfacecolor='black')


# 绘制气块状态曲线(黑线)
skew.plot(p, parcel_prof, 'k', linewidth=2)


# 阴影绘制 CIN 和 CAPE
skew.shade_cin(p, T, parcel_prof, Td, color='blue', alpha=0.2)  # CIN 阴影(蓝色)
skew.shade_cape(p, T, parcel_prof, color='red', alpha=0.2)      # CAPE 阴影(红色)


# 添加参考曲线
skew.plot_dry_adiabats(color='orangered', linestyle='--', linewidth=1)  # 干绝热线(红色虚线)
skew.plot_moist_adiabats(color='dodgerblue', linestyle='--', linewidth=1)  # 湿绝热线(蓝色虚线)
skew.plot_mixing_lines(color='mediumseagreen', linestyle='--', linewidth=1)  # 等饱和混合比线(绿色虚线)


# 设置坐标轴范围
skew.ax.set_ylim(1000, 200)
skew.ax.set_xlim(-40, 40)


# 添加网格线
skew.ax.grid(True)


# 添加标题和注释
#plt.title("Sounding Chart for Station 59211 (BAISE, China) at 00 UTC 27 May 2024")
plt.text(-13.5, 1300, f'CAPE = {cape:.2f} J/kg', fontsize=12, color='red')
plt.text(-15, 1200, f'CIN = {cin:.2f} J/kg', fontsize=12, color='blue')


# 显示图像
output_path = r'D:\python\dyy\5_27rainstorm\TInp.png'
plt.savefig(output_path)
plt.show()





TInp.png

micaps探空

micaps探空
密码修改失败请联系微信:mofangbao
发表于 前天 19:22 来自手机 | 显示全部楼层
算法不同,抬升凝结高度估算方法不同,所用假相当位温计算方式不同,积分步长不同,任何两个平台系统软件之间,计算的CAPE都有差异(包括各种数值预报模式、再分析资料输出的CAPE),只要趋势正确即可,85%定量使用也没问题。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 19:35 | 显示全部楼层
edwardli 发表于 2025-5-8 19:22
算法不同,抬升凝结高度估算方法不同,所用假相当位温计算方式不同,积分步长不同,任何两个平台系统软件之 ...

好的,谢谢老师
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 昨天 08:27 | 显示全部楼层
多谢楼主和大佬分享,学习一个
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表