如何用Python绘制GFS grib2数据?

2024-10-01 11:41:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在我的网站上有一张未来几天的气温图,全球预报系统最能满足我的需求。Grimatb2如何从图像中创建绘图?在

我花了几个小时在互联网上搜索,问那些知道如何做的人(他们在哪里一点帮助都没有),我不知道从哪里开始。 GFS数据可以在这里找到:ftp://ftp.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/ 如果可能的话,我希望它是轻量级的,并且不会丢失太多的服务器空间。在


Tags: 数据图像绘图网站系统ftp互联网noaa
2条回答

当您考虑数据使用和存储的轻量级时,可以考虑使用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

基本上有两个步骤:

  1. 使用wgrib从grib2数据中提取所选变量,并保存到NetCDF文件中。虽然有一些API,比如pygrib,但是我发现直接使用命令行工具比较容易出错。一些有用的链接:

安装: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
  1. 使用Python库处理NetCDF文件,示例代码如下所示:

    导入警告
    警告。过滤器警告(“忽略”)
    进口matplotlib.pyplot作为plt
    以np形式导入numpy
    将熊猫作为pd导入
    %matplotlib内联
    从netCDF4导入数据集
    来自mpl_工具箱.底图导入底图
    从pyproj导入项目
    进口地图库.cm作为cm
    导入日期时间

    文件=“测试.nc“
    rootgrp=数据集(文件,“r”)
    x=rootgrp[“经度”][:0-359,步长=1
    y=rootgrp['latitude'][::]#-90~90,步骤=1
    tmp=rootgrp['tmp_2m地上'][:][0]#形状(181360) dt=日期时间。日期时间(1970年1月1日)日期时间。时间增量(秒=rootgrp['time'][0])

    图=plt.图(dpi=150)
    m=底图(投影='mill',纬度=10,llcrnrlon=x.min(), urcrnrlon=x.max(),llcrnrlat=y.min(),urcrnlat=y.max(),分辨率='c')

    xx,yy=m(*np.meshgrid公司(x,y))
    m、 pcolormesh(xx,yy,tmp-273.15,shading='flat',cmap=plt.cm.喷气式飞机)
    m、 colorbar(location='right')

    m.DrawCoasters()
    m、 牵引杆(np.arange公司(-90.,120.,30.),标签=[1,0,0,0],字体大小=10)
    m、 牵伸子午线(np.arange公司(0.,360.,60.),标签=[0,0,0,1],字体大小=10)
    标题(“{},GFS,温度(C)”。格式(dt.STRF时间('%Y-%m-%d%H:%m UTC'))
    表演()

example figure

相关问题 更多 >