爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索

[经验总结] python计算单层和整层水汽物理量

  [复制链接]

新浪微博达人勋

发表于 2023-2-15 14:47:37 | 显示全部楼层
谢谢分享 学习一下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-2-16 01:23:40 | 显示全部楼层
哇这张图竟然比NCL画的好看 impressive
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-2-16 08:32:02 | 显示全部楼层
厉害了,学习学习!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-2-16 21:07:01 | 显示全部楼层
学习,正好需要
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-2-17 14:43:57 | 显示全部楼层
学习学习
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2023-2-18 15:05:18 | 显示全部楼层
大家可以帮忙看看这段代码吗?这是单层水汽通量的,但不知是哪里错了。
import xarray as xr
import numpy as np
import matplotlib.pyplot as plt

import matplotlib.ticker as mticker

import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
import cartopy.mpl.ticker as cticker
import cartopy.io.shapereader as shpreader
from cartopy.io.shapereader import Reader

plt.rcParams['font.sans-serif'] = ['Times New Roman']
f_shum = xr.open_dataset('E:/shum.nc')

f_u = xr.open_dataset('E:/uwnd.nc')

f_v = xr.open_dataset('E:/vwnd.nc')

time = f_u['time'].loc['2020-7-15':'2021-01-15']


def water_vapor(day, lev):
    # for j in pd.date_range(data1.loc[i]['start_day'],data1.loc[i]['end_day'],freq='D'):
    fu = f_u['uwnd'].loc[day, :, 90:10, -10:180].sel(level=lev)
    fv = f_v['vwnd'].loc[day, :, 90:10, -10:180].sel(level=lev)

    fq = f_shum['shum'].loc[day, :, 90:10, -10:180].sel(level=lev)

    lon = fu['lon']
    lat = fu['lat']
    qv_u_gc = np.zeros((np.size(lat), np.size(lon)))
    qv_v_gc = np.zeros((np.size(lat), np.size(lon)))
    qv_u_gc[:, :] = (fu * fq / 9.8 * 100).mean(axis=0)
    qv_v_gc[:, :] = (fv * fq / 9.8 * 100).mean(axis=0)

    return lon, lat, qv_u_gc, qv_v_gc


def contour_map(fig):
    leftlon, rightlon, lowerlat, upperlat = (90, 150, 10, 60)
    img_extent = [leftlon, rightlon, lowerlat, upperlat]
    fig.set_extent(img_extent, crs=ccrs.PlateCarree())

    spec1 = 10
    spec2 = 10
    shp_path = r'E:\shp'
    yellow = cfeature.ShapelyFeature(
        Reader(shp_path +'Export.shp').geometries(),
        ccrs.PlateCarree(), edgecolor='b',
        facecolor='none'
    )

    fig.add_feature(yellow, linewidth=1.5, zorder=2)

    fig.add_feature(cfeature.COASTLINE.with_scale('50m'), linewidth=0.6, zorder=2)
    fig.set_xticks(np.arange(leftlon, rightlon + spec1, spec1), crs=ccrs.PlateCarree())
    fig.set_yticks(np.arange(lowerlat, upperlat + spec2, spec2), crs=ccrs.PlateCarree())
    fig.xaxis.set_major_formatter(LONGITUDE_FORMATTER)
    fig.yaxis.set_major_formatter(LATITUDE_FORMATTER)
    fig.xaxis.set_minor_locator(plt.MultipleLocator(5))
    fig.yaxis.set_minor_locator(plt.MultipleLocator(2))  # 数字表示分刻度大小
    fig.tick_params(axis='both', labelsize=12, length=6, width=1, direction='out')
    fig.set_extent(img_extent, crs=ccrs.PlateCarree())
    fig.spines['geo'].set_linewidth(1)


# 创建画布
fig = plt.figure(figsize=(12, 16))
proj = ccrs.PlateCarree()

f_ax = fig.add_axes([0.1, 0.1, 0.4, 0.25], projection=proj)
contour_map(f_ax)
lons, lats, qu, qv, = water_vapor(time, 850)
v = f_ax.quiver(lons, lats, qu, qv, pivot='mid', width=0.006, headwidth=2.5, scale=25, transform=ccrs.PlateCarree())
f_ax.quiverkey(
    v,
    X=0.15, Y=0.95, U=3,
    label='300 kg/(m$\cdot$ s)',
    labelpos='E',
    fontproperties={'size': 12}
)

fig.savefig('E:/graduate/water_vapor.jpg', transparent='True', dpi=300, bbox_inches='tight', pad_inches=0)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-2-19 21:30:35 | 显示全部楼层
好东西,学习下,感谢分享
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-2-19 21:33:08 | 显示全部楼层
{:eb511:{:eb511:}
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-2-21 11:01:52 | 显示全部楼层
学习学习新知识
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-2-21 13:21:35 | 显示全部楼层
libai001 发表于 2023-2-18 15:05
大家可以帮忙看看这段代码吗?这是单层水汽通量的,但不知是哪里错了。
import xarray as xr
import nump ...

提示什么错误?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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