<p>基本上有两个步骤:</p>
<ol>
<li>使用wgrib从grib2数据中提取所选变量,并保存到NetCDF文件中。虽然有一些API,比如pygrib,但是我发现直接使用命令行工具比较容易出错。一些有用的链接:</li>
</ol>
<p>安装:<a href="http://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/compile_questions.html" rel="nofollow noreferrer">http://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/compile_questions.html</a><br/>
技巧:<a href="http://www.ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/tricks.wgrib2" rel="nofollow noreferrer">http://www.ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/tricks.wgrib2</a></p>
<p>例如,提取温度和湿度:</p>
<pre><code>wgrib2 test.grb2 -s | egrep '(:RH:2 m above ground:|:TMP:2 m above ground:)'|wgrib2 -i test.grb2 -netcdf test.nc
</code></pre>
<ol start=“2”>
<li><p>使用Python库处理NetCDF文件,示例代码如下所示:</p>
<p>导入警告<br/>
警告。过滤器警告(“忽略”)<br/>
进口matplotlib.pyplot作为plt<br/>
以np形式导入numpy<br/>
将熊猫作为pd导入<br/>
%matplotlib内联<br/>
从netCDF4导入数据集<br/>
来自mpl_工具箱.底图导入底图<br/>
从pyproj导入项目<br/>
进口地图库.cm作为cm<br/>
导入日期时间</p>
<p>文件=“测试.nc“<br/>
rootgrp=数据集(文件,“r”)<br/>
x=rootgrp[“经度”][:0-359,步长=1<br/>
y=rootgrp['latitude'][::]#-90~90,步骤=1<br/>
tmp=rootgrp['tmp_2m地上'][:][0]#形状(181360)
dt=日期时间。日期时间(1970年1月1日)日期时间。时间增量(秒=rootgrp['time'][0])</p>
<p>图=plt.图(dpi=150)<br/>
m=底图(投影='mill',纬度=10,llcrnrlon=x.min(),
urcrnrlon=x.max(),llcrnrlat=y.min(),urcrnlat=y.max(),分辨率='c')</p>
<p>xx,yy=m(*np.meshgrid公司(x,y))<br/>
m、 pcolormesh(xx,yy,tmp-273.15,shading='flat',cmap=plt.cm.喷气式飞机)<br/>
m、 colorbar(location='right')</p>
<p>m.DrawCoasters()<br/>
m、 牵引杆(np.arange公司(-90.,120.,30.),标签=[1,0,0,0],字体大小=10)<br/>
m、 牵伸子午线(np.arange公司(0.,360.,60.),标签=[0,0,0,1],字体大小=10)<br/>
标题(“{},GFS,温度(C)”。格式(dt.STRF时间('%Y-%m-%d%H:%m UTC'))<br/>
表演()</p></li>
</ol>
<p><a href="https://i.stack.imgur.com/Hbi66.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Hbi66.png" alt="example figure"/></a></p>