您的位置:首页 > 其它

基于GFS数据开发行业气象信息API(II)

2017-07-05 10:48 453 查看
上一篇文章详细介绍了如何从NCEP网站下载GFS数据,有了这个基础就可以开发基于Linux的shell脚本以及对应的API程序以实现查询功能了。

1、Shell脚本开发

Shell脚本主要是为了实现以下功能:
1)查看服务器目前最新的日期是哪个。
2)下载日期对应的文件。
3)创建对应的表。
4)通过wgrib2装载数据到表中。

代码如下:
#!/bin/sh

MTH=`date +%Y%m`

if [ $# -lt 1 ]; then
DIRNAME=`curl -l -s ftp://ftp.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/ | grep gfs.${MTH} | tail -n 1`
else
DIRNAME=$1
fi

echo `date` 'GFS Extract Script Started'

# Found the directory to be downloaded
cd /u01/wgrib2
echo 'Found directory:' ${DIRNAME}
rm -rf gfs/${DIRNAME}
mkdir gfs/${DIRNAME}

HR=`echo ${DIRNAME} | awk '{print substr($0,13,2)}'`
echo 'Runtime Hour:' ${HR}

echo `date` 'Downloading pgrb2 files...'

# Download files
FILELIST=`curl -l -s ftp://ftp.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/${DIRNAME}/ | grep gfs.t${HR}z.pgrb2.0p25.f | grep -v idx`
echo ${FILELIST} | awk '{split($0,a," ");for(i in a) print a[i]}' | while read FILE
do
echo `date` 'Downloading' ${FILE}
curl -s -o gfs/${DIRNAME}/${FILE} 'http://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25.pl?file='${FILE}'&all_lev=on&var_PWAT=on&subregion=&leftlon=73&rightlon=136&toplat=54&bottomlat=18&dir=%2F'${DIRNAME}
done

# Create table
TBNAME=`echo ${DIRNAME} | awk '{print "t_"substr($0,1,3)"_"substr($0,5,10)}'`
/alidata/server/mysql/bin/mysql -hlocalhost -uroot -proot -e "
use wgrib2
drop table if exists ${TBNAME};
create table ${TBNAME} (rt datetime, vt datetime, lat double, lon double, param varchar(80), level varchar(30), value double);
quit"

# Run wgrib2
rm -f gfs/${DIRNAME}/*.idx
for FILE in gfs/${DIRNAME}/*
do
if test -f ${FILE}
then
echo `date` 'Loading' ${FILE}
grib2/wgrib2/wgrib2 ${FILE} -if ":PWAT" -mysql localhost root root wgrib2 ${TBNAME}
fi
done

# Optimatize table
/alidata/server/mysql/bin/mysql -hlocalhost -uroot -proot -e "
use wgrib2
alter table ${TBNAME} drop column level;
alter table ${TBNAME} drop column rt;
alter table ${TBNAME} drop column param;
create index ${TBNAME}_idx1 on ${TBNAME} (vt,lat,lon);
quit"

# Clean up tmp files
rm -f wgrib2_mysql*

echo `date` 'GFS Extract Script Finished'

2、自动运行

有了shell脚本后,就可以在服务器上设置cron进行自动运行了。
根据项目需要,这俩设置的是每天运行4次,分别在北京时间1:30, 7:30, 13:30和19:30运行。

30 1 * * * /u01/wgrib2/extract.sh >> /u01/wgrib2/extract.log
30 7 * * * /u01/wgrib2/extract.sh >> /u01/wgrib2/extract.log
30 13 * * * /u01/wgrib2/extract.sh >> /u01/wgrib2/extract.log
30 19 * * * /u01/wgrib2/extract.sh >> /u01/wgrib2/extract.log


据观察,每次大约运行需要10分钟,基本可以保证在北京时间2时、8时、14时、20时数据可用。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: