[英]How do I plot GFS grib2 data with Python?
我希望在我的网站上有一个包含接下来几天温度的图表,全球预测系统最符合我的需求。 如何在matplotlib中绘制GRIB2数据并从图中创建PNG图像?
我花了几个小时在互联网上搜索,询问那些知道如何做到这一点的人(他们根本没有帮助),我不知道从哪里开始。 GFS数据可以在这里找到: ftp : //ftp.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/如果可能的话,我希望它是轻量级的,不会丢失太多的服务器空间。
当您考虑使用轻量级数据使用和存储时,您可以考虑使用除GRIB之外的其他数据形式。 GRIB文件通常包含全球数据,当您只想绘制特定域时,这些数据非常无用。
我强烈建议使用NOAA-NCEP opendap数据服务器中的数据。 您可以使用netCDF4从此服务器获取数据。 不幸的是,已知该服务器在某些时候是不稳定的,这可能导致刷新运行和/或格式错误的数据集的延迟。 虽然,在95%的时间里,我可以访问我需要的所有数据。
注意:由于新运行发布后的高人口贩运,此数据服务器可能会很慢。 可以在此处找到数据服务器的访问权限: http : //nomads.ncdc.noaa.gov/data.php?name = access_hires_weather_datasets
使用Matplotlib和Basemap工具包绘制数据非常简单。 一些示例,包括GFS数据集的使用,可以在这里找到: http : //matplotlib.org/basemap/users/examples.html
基本上,有两个步骤:
安装: http : //www.cpc.ncep.noaa.gov/products/wesley/wgrib2/compile_questions.html
技巧: http : //www.ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/tricks.wgrib2
例如,提取温度和湿度:
wgrib2 test.grb2 -s | egrep '(:RH:2 m above ground:|:TMP:2 m above ground:)'|wgrib2 -i test.grb2 -netcdf test.nc
使用Python库来处理NetCDF文件,示例代码可能如下所示:
进口警告
warnings.filterwarnings( “忽略”)
将matplotlib.pyplot导入为plt
导入numpy为np
将pandas导入为pd
%matplotlib内联
来自netCDF4导入数据集
来自mpl_toolkits.basemap导入底图
来自pyproj import Proj
将matplotlib.cm导入为cm
导入日期时间
file =“test.nc”
rootgrp =数据集(文件,“r”)
x = rootgrp ['longitude'] [:]#0-359,step = 1
y = rootgrp ['latitude'] [:]#-90~90,step = 1
tmp = rootgrp ['TMP_2maboveground'] [:] [0] #form(181,360)dt = datetime.datetime(1970,1,1)+ datetime.timedelta(seconds = rootgrp ['time'] [0])
fig = plt.figure(dpi = 150)
m =底图(projection ='mill',lat_ts = 10,llcrnrlon = x.min(),urcrnrlon = x.max(),llcrnrlat = y.min(),urcrnrlat = y.max(),resolution ='c “)
xx,yy = m(* np.meshgrid(x,y))
m.pcolormesh(XX,YY,TMP-273.15,遮光= '平面',CMAP = plt.cm.jet)
m.colorbar(位置= '右')
m.drawcoastlines()
m.drawparallels(np.arange(-90。,120。,30。),labels = [1,0,0,0],fontsize = 10)
m.drawmeridians(np.arange(0。,360。,60。),labels = [0,0,0,1],fontsize = 10)
plt.title(“{},GFS,Temperature(C)”。format(dt.strftime('%Y-%m-%d%H:%M UTC')))
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.