前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >气象数据的常用格式以及处理的工具

气象数据的常用格式以及处理的工具

作者头像
MeteoAI
发布2019-07-24 15:55:29
10.2K0
发布2019-07-24 15:55:29
举报
文章被收录于专栏:MeteoAIMeteoAI

  这次我们来简单了解下气象数据常用的格式以及处理的工具,常用的数据格式包括普通的二进制格式、文本数据、NetCDF、HDF4/5以及GRIB1/2数据。我们可以利用编程语言例如python、matlab以及c语言,根据数据的说明文档或者相应的数据api开发文档进行读取,此外我们也可以根据提供的command命令行进行高效提取数据。

二进制文件和文本数据

  气象中的二进制文件是指利用ASCII及扩展ASCII字符编写的数据或程序指令的文件,一般没有格式,用文本编辑器打开只能看到无意义的乱码,需要特定的解码说明才能使用,例如气象雷达的数据;文本数据的以记录的形式存在,每一条记录是以ASCIIVS的回车符CR(OD)加换行符LF(OA)来结束的,可以用文本编辑器查看,但也需要变量的说明文档,例如NOAA提供的ghcn以及isd数据都需要进行处理提取数据 IR000407540.dly 文本数据 IR000407540194406PRCP -9999 -9999 10 S 0 S-9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 - python

代码语言:javascript
复制
With open("IR000407540.dly") as file:
    lines = file.readlines()
    for line in lines:
    if (line[17:21] == "PRCP"):
        SID = line[0:11]
        YEAR_MON = line[11:17]

linux/unix cat IR000407540.dly | awk -F' ' '{print($1)}'

NetCDF(Network Common Data Form)

  NetCDF数据是常用的气象和卫星数据存储的数据格式,结构形式包含维数、变量、属性和数据四个子域,公众号前几期有过利用python对netCDF数据处理的介绍,有感兴趣的同学可以关注公众号查看历史精彩文章使用python处理NetCDF格式文件,这里介绍大家利用CDO如何处理netCDF格式的文件   CDO(Climate Data Operators)是用来处理气候数据的命令行的集合,支持netCDF3/4以及Grib1/2数据格式,常用功能:

代码语言:javascript
复制
cdo info a.nc  ###查看文件信息
cdo -f grb copy a.nc a.grb
cdo -f nc copy a.grb a.nc ###grb和nc文件转换
cdo mergetime *nc test.nc ###合并netCDF文件
cdo -selyear,2019 -selmonth,01 -selday,25 -seltime,08:00 -remapnn,lon=121_lat=43 a.nc ###选择特定时间特定点的数据
cdo -outputtab,loa,lat,date,value a.nc > a.txt ###以表格形式江nc文件输出 
代码语言:javascript
复制
#python调用cdo
from cdo import *
cdo=Cdo()
cdo.infov(input=ifile)
cdo.showlevel(input=ifile)

GRIB1和GRIB2文件

  GRIB(GRIdded Binary)和GRIB2(General Regularly-distributed Information in Binary Form)是与计算机无关的压缩的二进制编码,主要用来存放数值天气分析和预报产品资料。处理grib文件的常用工具包pygrib,Grib格式数据处理有详细介绍,gribapi也自带python接口,可以通过ECMWF提供的ecCodes或cgrib安装包进行安装使用。此外利用wgrib以及wgrib2命令行工具也可以高效处理grib文件。

代码语言:javascript
复制
###wgrib2命令行
wgrib2 -d 56 a.grb2 -netcdf a.nc ###将grib文件转位nc文件
wgrib2 a.grb2 -d 1 -s -lon 249 39 -lon 255 33 ###提取过后经纬度点的数值
wgrib2 a.grb2 -set_grib_type c2 -small_grib 109:110 35:37 a_china.grb2 ###将文件裁剪到中国区域范围
代码语言:javascript
复制
###eccodes包
import eccodes
import gribapi
with GribFile(filename) as grib:
    len(grib)
    for msg in grib:
        print(msg[key_name])
代码语言:javascript
复制
###cfgrib包
import cfgrib
ds = cfgrib.open_file('era5-levels-members.grib')
ds.attributes['GRIB_edition']
代码语言:javascript
复制
###利用xarray和cfgrib直接读取为数组
import xarray as xr
ds = xr.open_dataset('era5-levels-members.grib', engine='cfgrib')

HDF、HDF-EOS、HDF5和HDF-EOS5

  HDF(Hierarchical Data Format)数据格式是一种具有自描述性、可扩展性、自我组织形的数据存储格式。HDF5数据克服了HDF4的不足,可以支持超过2G大小的文件,以及并行I/O;HDF-EOS是NASA开发专门处理EOS产品,可以有效的存储地理定位数据。HDF、HDF-EOS、HDF5和HDF-EOS5数据多用于卫星资料的存储和发布。

代码语言:javascript
复制
###读取NASA AIRS HDF-EOS2文件
from pyhdf.SD import SD, SDC
# Open file.
FILE_NAME = 'AIRS.2002.08.01.L3.RetStd_H031.v4.0.21.0.G06104133732.hdf'
with SD(FILE_NAME, SDC.READ) as hdf:
    # List available SDS datasets.
    print(hdf.datasets())
    # Read dataset.
    DATAFIELD_NAME='RelHumid_A'
    data3D = hdf.select(DATAFIELD_NAME)
    data = data3D[11,:,:]
    # Read geolocation dataset.
    lat = hdf.select('Latitude')
    latitude = lat[:,:]
    lon = hdf.select('Longitude')
    longitude = lon[:,:]
代码语言:javascript
复制
###读取 OMI L3 version 2 product HDF-EOS5的数据
import h5py
FILE_NAME = 'OMI-Aura_L3-OMTO3e_2005m1214_v002-2006m0929t143855.he5'
DATAFIELD_NAME = '/HDFEOS/GRIDS/OMI Column Amount O3/Data Fields/ColumnAmountO3'
with h5py.File(FILE_NAME, mode='r') as f: 
    #List available datasets.
    print(f.keys())
    # Read dataset.
    dset = f[DATAFIELD_NAME]
    data = dset[:]

常用气象格式的数据读取及可视化 https://code.mpimet.mpg.de/projects/cdo/wiki https://confluence.ecmwf.int/pages/viewpage.action?pageId=7374715 https://hdfeos.org/index.php

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MeteoAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二进制文件和文本数据
  • NetCDF(Network Common Data Form)
  • GRIB1和GRIB2文件
  • HDF、HDF-EOS、HDF5和HDF-EOS5
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档