基于GFS数据开发行业气象信息API(II)
2017-07-05 10:48
453 查看
上一篇文章详细介绍了如何从NCEP网站下载GFS数据,有了这个基础就可以开发基于Linux的shell脚本以及对应的API程序以实现查询功能了。
1)查看服务器目前最新的日期是哪个。
2)下载日期对应的文件。
3)创建对应的表。
4)通过wgrib2装载数据到表中。
代码如下:
根据项目需要,这俩设置的是每天运行4次,分别在北京时间1:30, 7:30, 13:30和19:30运行。
据观察,每次大约运行需要10分钟,基本可以保证在北京时间2时、8时、14时、20时数据可用。
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时数据可用。
相关文章推荐
- 基于ARM+CPLD的气象信息数据采集方案
- 基于地图开发控件GMap.Net 使用 (六) 中文显示详细街道数据信息
- GIS+=地理信息+行业+大数据——基于云环境流处理平台下的实时交通创新型app
- GIS+=地理信息+行业+大数据——Spark集群下SPARK SQL开发测试介绍
- GIS+=地理信息+行业+大数据——基于云环境流处理平台下的实时交通创新型app
- iOS项目开发实战——使用用户首选项数据API存储信息
- ArcGis开发(二)—基于FlexAPI-Tile数据
- 基于RIA Flex Flash 平台开发的进销存企业信息管理系统开发经验
- 基于RIA Flex Flash 平台开发的进销存企业信息管理系统开发经验
- Rational Edge: 利用基于 RUP 的方法开发数据仓库 —— 第 1 部分:初始阶段
- WindowsCE 应用程序开发常用功能的api(基于EVC)
- 基于微软Office Communicator 2007 Automation API开发应用
- 基于华为CMPP2.0 API开发短信平台
- 基于Mozilla ThunderBird的扩展开发(三)---如何获取邮件的完整信息
- 基于开源BI平台Openi的数据仓库系统的设计开发
- 基于 Web 的数据挖掘 (自动抽取用 HTML、XML 和 Java 编写的信息)
- 关于基于sharepoint开发信息发布系统的功能规划
- 探索 Word 2007 开发 II(二):引用 Amazon 图书信息
- 基于VS.Net 2003的Symbian开发环境的准备-II
- 基于DWR的数据列表GRID的开发1