在对全球环境进行研究中,我们总会遇到欧洲中期预报中(European Centre for Medium-Range Weather Forecasts)等发布的气象再分析数据,例如,我在ESA官网上下的全球逐日开放水体蒸散数据,都是以GRIB格式结尾的。(以ubuntu 18.04为例)

首先要下载

https://confluence.ecmwf.int//display/ECC/Releases

https://confluence.ecmwf.int/download/attachments/45757960/eccodes-2.18.0-Source.tar.gz?api=v2 (下载最新版文件)

mkdir build

tar -xvf eccodes-2.18.0-Source.tar.gz

cd build

cmake ../eccodes-2.18.0-Source -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_C_COMPILER=gcc -DCMAKE_Fortran_COMPILER=gfortran-9

ldconfig (这个命令是必须的,不然找不到libecodes.so错误就会出现,前面那个 gfortan-9记得加上去,因为gfortan版本也在变,用哪个版本的fortan就加哪个数字在后面)

下载cdo最新版本

https://code.mpimet.mpg.de/projects/cdo

wget https://code.mpimet.mpg.de/attachments/22390/cdo-1.9.9rc6.tar.gz

tar -xvf cdo-1.9.9rc6.tar.gz

cd cdo-1.9.9rc6

mkdir build

./configure --with-netcdf --with-eccodes=/usr/local

make && make install

然后可以使用cdo info **.grib查看文件信息是否可以读取

在python下面使用可以使用参考

https://github.com/ecmwf/cfgrib 使用xarray来读grib文件,但有个问题是同样速度会很慢的,这里介绍另外一种方式。因为,我们研究区域通常会很小,可以考虑使用

cdo -sellonlatbox 命令 (不多说了,直接上代码)

import geopandas as gpd #使用geopandas读取全球湖泊水库矢量

df = gpd.read_file(r"./shapefilegallery/Export_Output.shp")

df.crs = {'init': 'epsg:4326', 'no_defs': True}

df = df.to_crs("EPSG:4326") # 都转换成EPSG:4326

lake_reserviro = utility.getmaxreserviors_lakes()

#print(lake_reserviro[1])

lakes = lake_reserviro[1][:] # 假定这个是所有湖泊编号

input_grib_file = **.grib #假定这个是要读取的XX.grib文件

for specify_which_reservior in lakes:

the_geometry = df.loc[df['GLWD_ID']==specify_which_reservior,'geometry'].iloc[0]

print(the_geometry.bounds)

lowlon = the_geometry.bounds[0]

uplong = the_geometry.bounds[2]

lowlat = the_geometry.bounds[1]

uplat = the_geometry.bounds[3]

output_name = os.path.join("./",str(specify_which_reservior)+"xx"+ ".grib")

command = " cdo -sellonlatbox," + str(lowlon) + ","+ str(uplong) + ","+str(lowlat) + ","+str(uplat)

command = command + " " + input_grib_file+" "+output_name

os.system(command) #用该命令输出指定湖泊范围内的grid文件

接着,我们可以使用grib_get_data 获取指定时间段的气象数据,然后将结果存放到csv文件中

year = the_time.year

month = the_time.month

day = the_time.day

the_query_date = str(year)+str(month).rjust(2,'0')+str(day).rjust(2,'0')

output_name = os.path.join("./",the_query_date+"_precipitation"+ ".csv")

command = " grib_get_data " + " -w dataDate=" + the_query_date + " " + the_grib_file + " > "

command = command + output_name

os.system(command)

这里的the_query_date 一般采用年月日形式传递,例如20090101

后面,我们会继续分享,如何得到指定湖泊区域100公里范围内的气象再分析数据。本文来自于善睐科技-黄伟。谢谢大家持续关注我们~~~~

sklearn 读取csv_气象数据再分析数据的读取方式(GRIB格式为例)相关推荐

  1. python学习记录—— 利用再分析数据绘制天气图

    1 方法数据 1.1数据 数据采用1°*1°的NCEP/NCAR的再分析数据,数据格式为grib2. 数据下载地址:FNL1*1 说明:需要用邮箱注册账号,之后按需求下载具体日期的数据,每日4个时次, ...

  2. NCEP再分析数据(FNL)Python下载

    NCEP再分析数据(FNL)Python下载 楼主第一次接触WRF模型,最近在摸索该如何使用WRF和相关数据如何下载,简单记录一下. 数据网址: https://rda.ucar.edu/datase ...

  3. ERA5再分析数据(一)

    ERA5 数据集介绍 ERA5数据集大家庭 ERA5 ERA5.1 ERA5-Land ERA5数据集大家庭 ERA5 ERA5是一种综合性的再分析数据,ECMWF的Integrated Foreca ...

  4. 医疗数据治理——构建高质量医疗大数据智能分析数据基础

    医疗数据治理--构建高质量医疗大数据智能分析数据基础 阮彤,邱加辉,张知行,叶琪 华东理工大学计算机科学与技术系,上海 200237   摘要:以专病真实世界研究为背景,分析了医疗数据治理和数据可用性 ...

  5. WRF中使用ERA5再分析数据

       本人在做一些实例时,需要用到最新的ERA5再分析数据集.我下载的是ERA5 hourly data on pressure levels form 1979 to present和ERA5 ho ...

  6. 从EarthData网站上下载MERRA2再分析数据

    这里写目录标题 一.注册登陆([https://urs.earthdata.nasa.gov/home](https://urs.earthdata.nasa.gov/home)) 二.给GES DI ...

  7. python怎么清洗数据_Python分析数据之:清洗数据全攻略

    前两天翻了翻数据分析的招聘简历,看到好多公司在招聘数据分析师的时候,不管前面要求什么,都会在最后加一句:能够会Python是加分项.那Python是有多好用?今儿一篇文章教会你用Python来分析数据 ...

  8. ERA5再分析数据根区土壤水分下载

    最近在下载ERA5的根区土壤水分数据,ERA5有两种数据一个是ERA5(1979至今,)和ERA5-LAND(1981至今),该数据根区层分为了四层(0~7cm,7~28,28~100和100~289 ...

  9. ERA5再分析数据(二)

    如何下载ERA5数据集 本文介绍了用户如何通过气候数据存储(CDS)基础结构访问ERA5数据集. ERA5数据可以通过CDS 网站界面或使用CDS API服务以编程方式下载. 1.通过CDS 网站界面 ...

最新文章

  1. 深度对话林元庆:AI创业历史性窗口到来,将诞生下个BAT
  2. MySQL批量检查表的脚本
  3. 一款N-沟道耗尽型JFET晶体管 MPF102
  4. mysql 自动重启 计划_解决MYSQL死机,定时重启MYSQL,wdcp计划任务设定方法,
  5. shell获取ip的值
  6. java 输出三位数和n位数的每一位的数
  7. karaf内嵌文件服务器,关于OSGI(Karaf) Classloader的几点说明
  8. 简单有趣的web项目_有趣而简单的电子项目书
  9. malloc calloc realloc
  10. C语言解决迭代递推问题
  11. 基础01类与对象、封装、构造方法
  12. 【JavaScript基础笔记】数据类型转换、false值、内存图、垃圾回收和深浅拷贝简易概念...
  13. 《基于双阶段支持向量机的电力系统暂态稳定预测及控制》总结
  14. 随笔记录使用DNK时遇到的几个问题
  15. 【容器】Podman容器快速上手
  16. 在桌面右键菜单添加【切换电源计划-卓越性能】选项
  17. 数据库(MySQL)基础
  18. 编码转换--字符映射表
  19. 对于自定义element 弹出框 文字提示样式
  20. 恶意融资与上市公司的股权结构研究

热门文章

  1. 《微信小程序》 开源项目
  2. Win10如何开启TLS1.3
  3. NetTerm共享文件
  4. vue组件走马灯_vue文字横向滚动走马灯公告代码示例
  5. Ubuntu16.04 安装配置深度学习配置:GPU加速 Cuda+cudnn+opencv+caffe
  6. 钳形万用表使用方法,如何测量电压、电流、电阻?
  7. png转jpg背景颜色改变的问题
  8. 详解五种最短路径算法及其区别(c++)
  9. manjaro安装tim
  10. php购物商城,基于PHP的网上商城