ungrib.exe不能处理较大的grib文件,利用Wgrib2拆分美国天气预报的方法

   ungrib.exe不能处理较大的grib文件(如:美国1度的数值预报文件为1.1G,0.5度的是3.5G).所以需要把大文件做拆分。   

     美国天气预报可以在http://motherlode.ucar.edu/native/grid/NCEP/GFS/Global_onedeg/  (1度)  http://motherlode.ucar.edu/native/grid/NCEP/GFS/Global_0p5deg/ (0.5度) 下载,文件比较大,每个1.1G/3.5G,是全球范围的。
     0.5度的文件需要在64位环境下拆分,否则wgrib2会运行出错。不是下载的文件坏了,而是32位地址空间小的缘故。

一、安装 wgrib2

      1、fedora上安装:

           yum install wget2 命令就可以。

      2、redhat5.6上安装:

           在http://download.opensuse.org/repositories/home:/gbvalor/RHEL_5/i386/ 里下载如下文件:

         wgrib2-1.9.1c-3.1.i386.rpm

         wgrib2-debug-1.9.1c-3.1.i386.rpm

         wgrib2-utils-1.9.1c-3.1.i386.rpm

         然后逐个安装就可以了。

          

二、分解文件    

      下载天气预报文件后,我们常常需要拆解文件。比如:

      1、按照经纬度范围拆出一个块。以下以拆解出中国部分为例。

           首选,我们需要确定中国部分的经纬度范围(这里是元朝的中国,呵呵):经度范围( 135,70) ,纬度范围:(12 ,55)。

           执行命令格式为: wgrib2  /data/XXXX.grib2  -small_grib 70:135 12:55 /out/XXXXXX.grib2

           XXXX.grib2 是需要拆解的grib2文件如:GFS_Global_onedeg_20110416_0000.grib2

          XXXXXX.grib2 是输出文件名称如:20110416_00.grib2

 

         拆解GFS_Global_onedeg_20110416_0000.grib2文件的命令为:

      

        #wgrib2  /data/GFS_Global_onedeg_20110416_0000.grib2   -small_grib 70:135 12:55 /out/20110416_00.grib2

    

     2、以下是我写的一个小脚本,按照预报未来的小时拆解。

          

          如果只需要前72小时的预报(美国天气预报,预报未来八天,我这里只需3天),且每3个小时的生成一个文件。
        

         可执行脚本如下:

#! /bin/bash
USA_WF_PATH=/
USA_WF_FILE=*.grib2
echo "请输入grib2文件所在的目录:"
read USA_WF_PATH
echo "你输入的目录: $USA_WF_PATH "
echo "请输入grib2文件名称:"
read USA_WF_FILE
echo "你输入的文件: $USA_WF_FILE "
echo "请输入grib2文件的时间[YYYYMMDD]:"
read USA_FILE_DATA
echo "你输入文件的时间: $USA_FILE_DATA "
echo "请输入的预报的小时[HH]: "
read USA_FILE_HOUR
echo "你输入的文件: $USA_FILE_HOUR "
echo " 开始提取数据请等候...... "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | grep ":anl:" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-00.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-00.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-00.grib2 成功! 它属于第 0小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":3 hour|:3-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-03.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-03.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-03.grib2 成功! 它属于第 3小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":6 hour|:6-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-06.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-06.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-06.grib2 成功! 它属于第 6小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":9 hour|:9-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-09.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-09.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-09.grib2 成功! 它属于第 9小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":12 hour|:12-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-12.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-12.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-12.grib2 成功! 它属于第 12小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":15 hour|:15-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-15.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-15.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-15.grib2 成功! 它属于第 15小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":18 hour|:18-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-18.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-18.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-18.grib2 成功! 它属于第 18小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":21 hour|:21-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-21.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-21.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-21.grib2 成功! 它属于第 21小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":24 hour|:24-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-24.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-24.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-24.grib2 成功! 它属于第 24小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":27 hour|:27-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-27.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-27.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-27.grib2 成功! 它属于第 27小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":30 hour|:30-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-30.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-30.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-30.grib2 成功! 它属于第 30小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":33 hour|:33-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-33.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-33.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-33.grib2 成功! 它属于第 33小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":36 hour|:36-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-36.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-36.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-36.grib2 成功! 它属于第 36小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":39 hour|:39-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-39.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-39.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-39.grib2 成功! 它属于第 39小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":42 hour|:42-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-42.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-42.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-42.grib2 成功! 它属于第 42小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":45 hour|:45-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-45.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-45.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-45.grib2 成功! 它属于第 45小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":48 hour|:48-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-48.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-48.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-48.grib2 成功! 它属于第 48小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":51 hour|:51-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-51.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-51.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-51.grib2 成功! 它属于第 51小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":54 hour|:54-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-54.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-54.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-54.grib2 成功! 它属于第 54小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":57 hour|:57-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-57.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-57.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-57.grib2 成功! 它属于第 57小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":60 hour|:60-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-60.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-60.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-60.grib2 成功! 它属于第 60小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":63 hour|:63-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-63.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-63.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-63.grib2 成功! 它属于第 63小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":66 hour|:66-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-66.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-66.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-66.grib2 成功! 它属于第 66小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":69 hour|:69-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-69.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-69.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-69.grib2 成功! 它属于第 69小时发布的数据。 "
wgrib2 $USA_WF_PATH/$USA_WF_FILE -v | egrep ":72 hour|:72-.. hour" | wgrib2 -i $USA_WF_PATH/$USA_WF_FILE -grib   $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-72.grib2 > $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-72.log
echo "导出文件 $USA_WF_PATH/$USA_FILE_DATA-$USA_FILE_HOUR-72.grib2 成功! 它属于第 72小时发布的数据。 "

        

        

       

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值