2024-10-01 11:41:51 发布
网友
我想在我的网站上有一张未来几天的气温图,全球预报系统最能满足我的需求。Grimatb2如何从图像中创建绘图?在
我花了几个小时在互联网上搜索,问那些知道如何做的人(他们在哪里一点帮助都没有),我不知道从哪里开始。 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文件,示例代码如下所示:
导入警告 警告。过滤器警告(“忽略”) 进口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')) 表演()
当您考虑数据使用和存储的轻量级时,可以考虑使用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
例如,提取温度和湿度:
使用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'))
表演()
相关问题 更多 >
编程相关推荐