美国gfs数据介绍和解析
最近有個項目需要開發(fā)個氣象信息API,可以通過經(jīng)緯度查找未來幾天的氣象信息。
經(jīng)過幾天的研究,現(xiàn)在簡單總結(jié)一下。
1、數(shù)據(jù)來源
數(shù)據(jù)來源采自美國國家環(huán)境預(yù)報中心的GFS(全球預(yù)報系統(tǒng)),該系統(tǒng)每天發(fā)布4次全球范圍的氣象數(shù)據(jù),分辨率最高可達(dá)到0.25° x 0.25°,精度還是比較可觀的。
2、數(shù)據(jù)下載
GFS數(shù)據(jù)提供FTP下載方式:http://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/
每次發(fā)布的數(shù)據(jù)保存在命名為gfs.YYYYMMDDHH的文件夾中。本次需要的數(shù)據(jù)精度為0.25°(0p25),所以數(shù)據(jù)的文件名為:gfs.t{HH}z.pgrb2.0p25.f{XXX}
其中HH表示發(fā)布的時間,XXX表示未來幾小時的預(yù)報數(shù)據(jù)。例如gfs.t00z.pgrb2.0p25.f001 表示0時發(fā)布的未來1小時氣象數(shù)據(jù)信息。
那么問題來了,這個文件太大了,因為分辨率比較高,每個文件高達(dá)200多MB,不僅下載速度慢,處理慢,對存儲空間也是一個考驗。
于是找到了一個可以在線過濾要下載數(shù)據(jù)的地址:
http://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25.pl
這個網(wǎng)站允許用戶僅下載過濾后的文件,并提供下載網(wǎng)址,這樣文件就會小很多。
例如,在本項目中,僅需要下載降雨數(shù)據(jù)(PWAT),并且經(jīng)緯度范圍為特定區(qū)域,每次發(fā)布的數(shù)據(jù)全部下載下來也才8M多點。
3、wgrib2
GFS的數(shù)據(jù)格式為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文件中的數(shù)據(jù),則需要用到一個軟件wgrib2,,該軟件在ncep網(wǎng)站上提供源碼下載,可以很方便的在Linux下使用gcc進(jìn)行編譯。
以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" 文件以標(biāo)記使用MYSQL(USE_MYSQL=1)。
另外,在編譯的過程中會用到/usr/local/include的頭文件,如果安裝MySQL插件還需要安裝下yum install mysql-devel。
安裝后就可以體驗下wgrib2的解壓并入庫功能了。
4、使用wgrib2解壓文件并load進(jìn)mysql數(shù)據(jù)庫
使用wgrib2裝載數(shù)據(jù)庫,首先要創(chuàng)建對應(yīng)的數(shù)據(jù)庫表
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數(shù)據(jù)放到對應(yīng)的表中。
有了以上基礎(chǔ),就可以寫個腳本每天自動化下載并保存GFS數(shù)據(jù)到我們的數(shù)據(jù)庫了。
總結(jié)
以上是生活随笔為你收集整理的美国gfs数据介绍和解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cannot find symbol [
- 下一篇: js函数注释规范