• 美国gfs数据介绍和解析


    最近有个项目需要开发个气象信息API,可以通过经纬度查找未来几天的气象信息。

    经过几天的研究,现在简单总结一下。

    1、数据来源
    数据来源采自美国国家环境预报中心的GFS(全球预报系统),该系统每天发布4次全球范围的气象数据,分辨率最高可达到0.25° x 0.25°,精度还是比较可观的。

    2、数据下载
    GFS数据提供FTP下载方式:http://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/

    每次发布的数据保存在命名为gfs.YYYYMMDDHH的文件夹中。本次需要的数据精度为0.25°(0p25),所以数据的文件名为:gfs.t{HH}z.pgrb2.0p25.f{XXX}

    其中HH表示发布的时间,XXX表示未来几小时的预报数据。例如gfs.t00z.pgrb2.0p25.f001 表示0时发布的未来1小时气象数据信息。

    那么问题来了,这个文件太大了,因为分辨率比较高,每个文件高达200多MB,不仅下载速度慢,处理慢,对存储空间也是一个考验。

    于是找到了一个可以在线过滤要下载数据的地址:

    http://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25.pl

    这个网站允许用户仅下载过滤后的文件,并提供下载网址,这样文件就会小很多。

    例如,在本项目中,仅需要下载降雨数据(PWAT),并且经纬度范围为特定区域,每次发布的数据全部下载下来也才8M多点。

    3、wgrib2
    GFS的数据格式为GRIB,那么什么是GRIB呢? 官方的解释如下:

    GRIB is a WMO format for gridded data. GRIB is used by the operational meteorological centers for storage and the exchange of gridded fields. GRIB's major advantages are files are typically 1/2 to 1/3 of the size of normal binary files (floats), the fields are self describing, and GRIB is an open, international standard.

    那么要想获得GRIB文件中的数据,则需要用到一个软件wgrib2,,该软件在ncep网站上提供源码下载,可以很方便的在Linux下使用gcc进行编译。

    以CentOS为例,需要首先安装gcc和gfortran编译器。

    # yum install gcc
    # yum install gcc-gfortran

    然后就可以下载并安装wgrib2了。

    1) Download ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgrib2.tgz
    2) untar wgrib2.tgz:  tar -xzvf wgrib2.tgz   (use gnu tar)
    3) cd to main directory:  cd grib2
    4) define the C and fortran compilers and make
       Bash:
         export CC=gcc
         export FC=gfortran
         make
         make lib                        only if you want the ftn_api
       Csh
         setenv CC gcc
         setenv FC gfortran
         make
         make lib                        only if you want the ftn_api
    5) See if wgrib2 was compiled
         wgrib2/wgrib2 -config

    需要注意的是,wgrib2以插件的形式提供了mysql入库功能,但是需要在make之前编辑"makefile" 文件以标记使用MYSQL(USE_MYSQL=1)。

    另外,在编译的过程中会用到/usr/local/include的头文件,如果安装MySQL插件还需要安装下yum install mysql-devel。

    安装后就可以体验下wgrib2的解压并入库功能了。

    4、使用wgrib2解压文件并load进mysql数据库
    使用wgrib2装载数据库,首先要创建对应的数据库表
    create table wgrib2 (rt datetime, vt datetime, lat double, lon double, param varchar(80), level varchar(30), value double); 

    这里各列的含义如下:
    rt: run time
    vt: valid time
    lat: latitude
    lon: longitude
    param: parameter
    level: level/layer
    value: value

    命令也很简单:
    # ./wgrib2 gfs.2017061900/gfs.t00z.pgrb2.1p00.f000 -if ":PWAT" -mysql <server_ip> <username> <password> <dbname> <tablename>

    该命令会将文件中的全部PWAT数据放到对应的表中。

    有了以上基础,就可以写个脚本每天自动化下载并保存GFS数据到我们的数据库了。

  • 相关阅读:
    如何对ArcSDE空间网格大小进行优化?
    关于ArcGis的拓扑分析
    开发人员一定要加入收藏夹的网站
    c#+ArcEngine93实现实时显示测距结果功能
    获得ArcEngine图标和arcengine的汉化方法
    深入理解游标Cursors,实现数据的快速查找,插入,删除,更新
    如何调用ITopologicalOperator.Union方法成功地merge polygon
    地图分幅算法实现
    ArcSDE工作机制
    arcengine 空间查询SpatialRelDescription使用
  • 原文地址:https://www.cnblogs.com/tiandi/p/11045602.html
Copyright © 2020-2023  润新知