WRFOUT 位温剖面和位温单格点高度图
前言
WRF (Weather Research and Forecasting Model) 是一种广泛用于天气预报和气候模拟的数值大气模式。通过分析WRF模型的输出数据,我们可以获得各种天气变量的空间分布及其随时间的演变情况。
在分析WRF模型输出数据时,常常需要绘制位温(Potential Temperature)剖面和位温单格点的高度图。位温是指将气块从参考高度(通常为1000 hPa)抬升或降低到某个特定高度后的温度,它是大气中的一个重要物理量,能够反映气块的垂直运动特征。
绘制位温剖面可以帮助我们理解大气的垂直结构和稳定性情况。通过观察不同高度上的位温值,我们可以推断出对流层中的温度递减率、大气边界层的稳定性等信息。而绘制位温单格点的高度图,则能够更直观地展示不同位置的位温分布及其随高度的变化趋势。
在本文中,我们将使用WRF模型的输出数据,利用Python编程语言以及相关库(如wrf-python、numpy和matplotlib)绘制位温剖面和位温单格点的高度图。我们将根据指定的站点位置和要绘制的高度层,获取相应的位温数据,并将其在图像中进行可视化展示。通过这样的绘图分析过程,我们可以更好地理解大气垂直结构以及不同位置的温度特征,为天气预报和气候研究提供有价值的参考。
位温剖面
导入库与读数据
from wrf importto_np, getvar, interplevel, get_cartopy, latlon_coords,ALL_TIMES,CoordPair,vertcross,interpline,ll_to_xy
import numpy as np
from netCDF4 import Dataset
import xarray as xr
from metpy.units import units
import matplotlib.pyplot as plt
from matplotlib.cm import get_cmap
from matplotlib.colors import from_levels_and_colors
import cmaps
from glob import glob
import metpy.calc as mpcalc
import metpy.constants as constants
import os
# 定义 WRF 文件夹路径和文件名前缀
wrfout_path = "/home/mw/input/wrfout3385/"
filename_prefix = "wrfout_d02_"
wrf_files = sorted()
wrf_list =
使用函数插值剖面
cross_start = CoordPair(lat=29, lon=105)
cross_end = CoordPair(lat=32, lon=105)
theta = getvar(wrf_list, 'theta')
ht = getvar(wrf_list, "z")
ter = getvar(wrf_list, "ter")
theta_cross = vertcross(theta, ht, wrfin=wrf_list,
start_point=cross_start,
end_point=cross_end,
latlon=True, meta=True)
ter_line = interpline(ter, wrfin=wrf_list, start_point=cross_start,
end_point=cross_end)
# Get the height coordinate values
xs = np.arange(0, theta_cross.shape[-1], 1)
ys = to_np(theta_cross.coords["vertical"])
绘图部分(无填充版本)
# Get the height coordinate values
xs = np.arange(0, theta_cross.shape[-1], 1)
ys = to_np(theta_cross.coords["vertical"])
# Create the figure
fig, ax = plt.subplots(figsize=(8, 6))
# Plot the theta cross section
contours = ax.contourf(xs,ys,
to_np(theta_cross),
levels=np.arange(300,500,10),
cmap=cmaps.temp_19lev)
# Fill in the mountain area
ht_fill = ax.fill_between(xs, 0, to_np(ter_line),
facecolor="saddlebrown")
# Set the x-ticks to use latitude and longitude labels
coord_pairs = to_np(theta_cross.coords["xy_loc"])
x_ticks = np.arange(coord_pairs.shape)
x_labels =
# Set the desired number of x ticks below
num_ticks = 5
thin = int((len(x_ticks) / num_ticks) + .5)
ax.set_xticks(x_ticks[::thin])
ax.set_xticklabels(x_labels[::thin], rotation=45, fontsize=8)
# Set the x-axis andy-axis labels
ax.set_xlabel("Latitude, Longitude", fontsize=12)
ax.set_ylabel("Height (m)", fontsize=12)
# Add a title
ax.set_title("Cross-Section of Potential Temperature", fontsize=14)
plt.show()/opt/conda/lib/python3.7/site-packages/cmaps/cmaps.py:3869: UserWarning: Trying to register the cmap 'temp_19lev' which already exists.
matplotlib.cm.register_cmap(name=cname, cmap=cmap)
绘图部分(填充版本)
# Get the height coordinate values
xs = np.arange(0, theta_cross.shape[-1], 1)
ys = to_np(theta_cross.coords["vertical"])
# Create the figure
fig, ax = plt.subplots(figsize=(8, 6))
# Plot the theta cross section
contours = ax.contourf(xs,ys,
to_np(theta_cross_filled),
levels=np.arange(300,500,10),
cmap=cmaps.temp_19lev)
# Fill in the mountain area
ht_fill = ax.fill_between(xs, 0, to_np(ter_line),
facecolor="saddlebrown")
# Set the x-ticks to use latitude and longitude labels
coord_pairs = to_np(theta_cross.coords["xy_loc"])
x_ticks = np.arange(coord_pairs.shape)
x_labels =
# Set the desired number of x ticks below
num_ticks = 5
thin = int((len(x_ticks) / num_ticks) + .5)
ax.set_xticks(x_ticks[::thin])
ax.set_xticklabels(x_labels[::thin], rotation=45, fontsize=8)
# Set the x-axis andy-axis labels
ax.set_xlabel("Latitude, Longitude", fontsize=12)
ax.set_ylabel("Height (m)", fontsize=12)
# Add a title
ax.set_title("Cross-Section of Potential Temperature", fontsize=14)
plt.show()
位温格点高度图
方法一
theta_s = theta_cross[:,20]
theta_s
可以看出从剖面取出的值还是有对应的经纬度,可直接绘制单格点高度分布
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(theta_s,ys)
ax.set_xlabel("theta(K) at lon 105.00 lat 30.77 ", fontsize=12)
ax.set_ylabel("Height (m)", fontsize=12)
Text(0, 0.5, 'Height (m)')
方法二
#指定要提取的经纬度坐标点
lat_lon =
#将经纬度坐标转换为模型坐标系(x, y)
x_y = ll_to_xy(wrf_list, lat_lon, lat_lon)
#读取数据
theta_s2 = getvar(wrf_list, "theta", timeidx=0)[:, x_y, x_y] * units.degC
h = getvar(wrf_list, "height", timeidx=0)[:, x_y, x_y] * units.degC
# plot
fig, ax2 = plt.subplots(figsize=(8, 6))
ax2.plot(theta_s2,h)
ax2.set_xlabel("theta(K) at lon 105.00 lat 30.77 ", fontsize=12)
ax2.set_ylabel("Height (m)", fontsize=12)Text(0, 0.5, 'Height (m)')
差别
乍一看没差别,实际上两者的shape是不同的theta_s.shape,theta_s2.shape((100,), (49,))
剖面取的点是插值之后的,层数达100,而直接取的单格点仅有模式设置的49层。
这单点高度图只是随手之作,大家有更好的办法可以评论区讨论讨论。
小结
做得仓促,没有细化绘图。从剖面再取格点貌似绕了远路(难道我会告诉你只是剖面图的副产物吗)
这时候有同学要问了,这地形图怎么这么难看啊?都说是仓促作图。废话少说赶紧点赞。
完整代码与文件在此
文章来源于公众号:气python风雨
OLanelig
Hey there, I think your site might be having browser compatibility issues. When I look at your blog site in Chrome, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, awesome blog!
<a href=http://arusak-attestats24.com>www.arusak-attestats24.com</a>
Hey this is kind of of off topic but I was wondering if blogs use WYSIWYG editors or if you have to manually code with HTML. I'm starting a blog soon but have no coding expertise so I wanted to get advice from someone with experience. Any help would be greatly appreciated!
darkmarket 2024 ztzzp
Shanelig ??? 2024-6-14 21:37Hey there, I think your site might be having browser compatibility issues. When I look at your blo ...
cryptomarkets darknetxbi onion dark website sso darkmarket 2024nsg cryptomarkets darknetkxb tor markets 2024 qtz darknet sitesstd tor markets 2024pmd dark web sitespnd darkmarketfbf dark market linkijr dark web drug marketplaceciu darknet markets 2024dms darknet market listofm tor drug marketsvz dark marketsaco darknet drugsedl dark websitessfv cryptomarkets darknetymm darkmarket linkcym dark web market urls dark web sitesamu dark web market urls gng darkmarket 2024rhl darkmarketsvpb darkmarket url ilq darknet websitesgmo darknet markets onion addressylt dark web markethym dark web marketplacesyai dark market linkcxb dark web sitesuhe darkmarket urlwzr dark web siteslpk onion dark websiterdy dark web marketwjr dark web marketsflw dark web drug marketplacelsc dark web marketsnka darknet markets onion addressfdd bitcoin dark web
tor markets 2024 darknet markets darknet drug market darknet market lists dark web drug marketplace darknet markets onion darknet drug store dark web link darknet websites darknet drug market darknet market list dark market url dark web market list darknet marketplace dark web marketplaces dark web market list darkmarket url darknet site dark web marketplaces darknet markets onion address darknet market dark web markets darknet drugs dark websites darkmarket dark web sites tor drug market darknet market list darknet markets 2024 darknet magazine dark web drug marketplace darknet sites darknet markets onion address tor drug market dark web market urls darknet magazine tor markets 2024 onion dark website dark web markets darkmarket 2024 darknet site dark market link darknet markets links dark markets 2024 dark web drug marketplace best darknet markets darkmarket darknet magazine dark web sites darkmarket list darknet markets url dark market list dark web market list darkmarket dark markets 2024 darknet market links darkmarket darkmarket url darknet market list dark market
https://darkmarkets2022.comdark market list https://drugmarketsdarkwebs.comdarknet markets url https://drugsmarketsdarkweb.comdark web sites https://darknet-drugstore.comdarknet site https://dark-onion-markets.comdark web market list https://darksitemarket.comdark market link https://tor-markets2022.comdark markets 2024 https://deepwebdrugmarkets.comdark web market links https://darknetshoplists.comdarknet markets onion https://tormarkets22.comcryptomarkets darknet
Python基础学习进度如何?.
请问大家在学习Python基础知识方面遇到了哪些困难?是否有什么建议或技巧可以分享?city shop
мега ссылка
DadddyVow ??? 2024-7-10 06:55cryptomarkets darknetxbi onion dark website sso darkmarket 2024nsg cryptomarkets darkn ...
Готовы к изменениям в сфере интернет-торговли? Mega - это платформа, где важны удобство и безопасность! Благодаря новейшим мерам защиты и легкому способу регистрации <a href=https://xn--megsb-5wa.com>mega dark market</a> обеспечивает беспрепятственный шопинг. Ознакомьтесь с множеством товарных категорий и воспользуйтесь гибкими способами оплаты. Присоединяйтесь к <a href=https://xn--megsb-5wa.com>мега даркнет маркет ссылка на сайт</a> без промедления и воплотите в жизнь будущее онлайн-шопинга.
мега сайт даркнет ссылка: https://mega-active-links.com
anniversary годовщина
Maybe these are here too? DavidTumhttps://vocal.media/authors/sosua-kupit-boshki-gashish-shishki
Estherinput
https://fliphtml5.com/homepage/jjjdm/Савёлки-купить-Мефедрон,-Скорость-альфа-пвп/
be over закончиться 64_6102
https://gravatar.com/milkshakeenthusiasticallye63eb01e4e
CarolynMic
https://www.penname.me/@twylastimmel_gl/
KristiHom
https://pubhtml5.com/homepage/dwdnn
boot сапог ботинок
https://gravatar.com/instantlyinventive9289b4350f
Maryannvax
https://www.penname.me/@dechuyesid_hl/
Vivianwof
https://www.penname.me/@winnifredpollot_gl/
https://boosty.to/a5ajulianafujii1
Ethelastow
belong to принадлежать
https://boersen.oeh-salzburg.at/author/IoberEsopuwaz
AnitaAgoni
https://imageevent.com/chtountaxes/qdzpm
Soniatrery orArinatrery here?
Is there a user SoniaTum and ArinaTum here?
bully задира задирать
Maybe these are here too? DavidTumhttps://boosty.to/e3awolgastnina6
Estherinput
https://conifer.rhizome.org/erahjihoo/
allot выделять отводить ca46e6c
https://anyflip.com/homepage/ppmnr
CarolynMic
https://conifer.rhizome.org/ylimanatuzuj/
KristiHom
https://pubhtml5.com/homepage/tivgf
bullet пуля
https://www.penname.me/@viapianosarita_gl/
Maryannvax
https://www.penname.me/@Vanantwerpeio4_gl/
Vivianwof
https://anyflip.com/homepage/sedoj
https://vocal.media/authors/oryol-kupit-mefedron-skorost-shishki
Ethelastow
be on fire гореть
https://pubhtml5.com/homepage/axeoe
AnitaAgoni
https://anyflip.com/homepage/zouht
bless благословлять
Is there a user SoniaTum and ArinaTum here?
arbitrary произвольный
Maybe these are here too? DavidTumhttps://vocal.media/authors/karaganda-kupit-mefedron-skorost-shishki
Estherinput
https://gravatar.com/clearee25ea74ac
appear появиться 6c892c5
https://www.cdt.cl/user/satyaveer871brady82yolanda/
CarolynMic
https://gitlab.pavlovia.org/thyifizimi1983
KristiHom
https://conifer.rhizome.org/mesackjunju/
breast грудь
https://www.penname.me/@MelonyFreilinoliw5_gl/
Maryannvax
https://anyflip.com/homepage/agggm
Vivianwof
https://anyflip.com/homepage/hiond
https://1businessworld.com/pro/eatijetivityqa
Ethelastow
benevolent благожелательный
https://www.slideserve.com/sookkoelling55
AnitaAgoni
https://boersen.oeh-salzburg.at/author/bethanyeckel7777
Sonialix orArinalix here?
Is there a user SoniaTum and ArinaTum here?
darknet markets onion ilbje
dark market listuvr dark web sites idz dark web market urlswut dark web market urlsgna darkmarket list mod darknet drug storercw darknet markets urlwxs cryptomarkets darknetyxu onion dark websitevdp darknet marketbsv darknet market listsvnn dark market onionqer dark marketpjq darknet markets onionalh dark markets 2024zvv darknet drug storebcd best darknet marketsywt bitcoin dark webafu darknet marketspyi darknet marketplace dark web market urlszxy darknet markets url upx dark market linkixd darknet magazineibq dark markets yiq tor drug marketpwe darknet marketsnro darknet marketplacesvf onion dark websiteumd darknet drugstyp darknet drug storecta dark market onionlwz darkmarket linkevx darknet marketstdh darknet markets urlaiw best darknet marketsycd dark marketsycn cryptomarkets darkneteef dark web market listhbu dark market oniondark web drug marketplace dark markets darknet site darkmarket list darknet magazine darknet markets onion address dark market url dark web drug marketplace darknet markets onion darkmarket link dark web market urls darknet markets onion darknet drugs dark web market urls darknet drug links darknet drug market dark web market list dark market onion dark websites darknet markets darkmarket list darkmarket darkmarket link darknet sites darkmarket onion dark website dark market 2024 darknet markets links dark web drug marketplace darknet marketplace onion dark website darknet site darknet markets onion darkmarkets darknet market links bitcoin dark web dark web market urls darknet market lists darknet markets onion address dark market url dark market link tor drug market darknet marketplace bitcoin dark web dark web sites darknet market lists darknet market darknet drug market darknet markets url darknet markets onion address darkmarket list darkmarket link darknet drug links darknet marketplace darknet markets links darknet market links dark web sites darknet marketplace darkmarket cryptomarkets darknet
https://tor-dark.combitcoin dark web https://darkmarketwww.onlinedarknet magazine https://btcdarkweb.comtor drug market https://drugsmarketonion.comdark web sites https://heinekenexpresdarknet.linkdark market https://drugmarketsweb.comdark web market https://darknet-drugstore.comdarknet markets onion address https://darkwebmarketlink.comdarkmarket 2024 https://darknetsdrugstore.comdark web sites https://tordarkwebs.comdarkmarket link
advantage преимущество
ThelmaWex ??? 2024-8-20 12:05Maybe these are here too? DavidTum
https://boosty.to/e3awolgastnina6
Maybe these are here too? DavidTum
https://barbershop-style.ru
https://fabrika-okon48.ru
benefit польза создавать пользу 5565_19
https://estetica-dental.ru
Ghtherinput
https://juztattoo.ru
https://freefaucet.ru
affect воздействовать
https://evraziaservis.ru
Ikherinput
https://marshrutke.ru
https://vosstanovite.ru
Svererinput
https://soul-murino.ru
https://rgc-online.ru
appeal обращаться взывать
https://platiezhe.ru
https://proektgpm.ru
Laserinput
https://snowlion-ul.ru
arrogant высокомерный
https://artro-flex.ru
EJierinput