TypechoJoeTheme

MetMan's Blog

网站页面

Wgrib2提取小区域数据

MetMan博 主
2024-07-31
/
0 评论
/
42 阅读
/
506 个字
/
百度已收录
07/31
本文最后更新于 2024年07月31日,已超过 50天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

对于GRIB2数据处理,常见的一个需求是提取全场区域内一个子区域数据。wgrib2提供了几种处理方法。

GRIB2数据提取方法

wgrib2主要通过两种方法限制提取范围,一是根据格点索引范围;二是通过经纬度范围进行指定。

  • -ijbox

根据格点索引范围截取数据区域。

-ijbox           out  X..Z,A grid values in bounding box X=i1:i2[:di] Y=j1:j2[:dj] Z=file A=[bin|text|spread]

该选项需要四个参数,第一个是X方向索引范围:起始i1,结束i2,可选步长间隔di;第二个是Y方向范围,用法类似;第三个是写出文件名;第四个参数指定生成文件格式,支持bin/text/spread。

  • -lola

根据经纬度范围截取数据区域。

-lola            out  X..Z,A lon-lat grid values X=lon0:nlon:dlon Y=lat0:nlat:dlat Z=file A=[bin|text|spread|grib]

该选项需要四个参数,第一个是经度范围:起始经度lon0,经线数nlon,经线间隔dlon;第二个是维度范围,用法类似;第三个是写出文件名;第四个参数指定生成文件格式,支持bin/text/spread/grib。

  • -ijsmall_grib

根据索引范围截取数据区域生成grib数据。

-ijsmall_grib    out  X Y Z  make small domain grib file X=ix0:ix1 Y=iy0:iy1 Z=file

该选项需要三个参数,第一个是X方向索引范围:起始ix0,结束ix1;第二个是Y方向范围,用法类似;第三个是写出文件名。

  • -small_grib

根据索经纬度范围截取数据区域生成grib数据。

-small_grib      out  X Y Z  make small domain grib file X=lonW:lonE Y=latS:latN Z=file

该选项需要三个参数,第一个是经度范围,从西到东;第二个是纬度范围,从南到北;第三个是写出文件名。

示例

样例数据是NCEP GFS 0.5°预报场数据gfs.t00z.pgrb2.0p50.f000,数据范围是(lon: 0:395.5:0.5, lat: -90:90:0.5)。

需求:提取70-135E,0-54N范围地表温度场数据。对应的索引范围是X方向141-271,Y方向是181-289。

# 使用-ijbox
$ wgrib2 gfs.t00z.pgrb2.0p50.f000 -match "TMP:surface" -ijbox 141:271 181:289 out1.bin bin

# 使用-lola
$ wgrib2 gfs.t00z.pgrb2.0p50.f000 -match "TMP:surface" -lola 70:131:0.5 0:109:0.5 out2.grb2 grib 
$ wgrib2 out2.grb2 -grid 
1:0:grid_template=0:winds(N/S):
        lat-lon grid:(131 x 109) units 1e-06 input WE:SN output WE:SN res 48
        lat 0.000000 to 54.000000 by 0.500000
        lon 70.000000 to 135.000000 by 0.500000 #points=14279

# 使用-ijsmall_grib
$ wgrib2 gfs.t00z.pgrb2.0p50.f000 -match "TMP:surface" -ijsmall_grib 141:271 181:289 out3.grb2 

# 使用-small_grib
$ wgrib2 gfs.t00z.pgrb2.0p50.f000 -match "TMP:surface" -small_grib 70:135 0:54 out4.grb2

Regridding插值

当需要生成不同分辨率数据或者不同网格数据时,需要进行插值处理。wgrib2提供-new_grid及相关的选项(-new_grid_winds-new_grid_interpolation),可以处理不同网格、不同分辨率、不同插值方法、矢量标量类型数据。

  • -new_grid
-new_grid        out  X..Z,A bilinear interpolate: X=projection Y=x0:nx:dx Z=y0:ny:dy A=grib_file alpha

比如经纬度网格插值

-new_grid latlon lon0:nlon:dlon lat0:nlat:dlat outfile

示例

前面样例数据相同范围插值到1°分辨率数据。

$ wgrib2 gfs.t00z.pgrb2.0p50.f000 -match "TMP:surface" -new_grid latlon 70:66:1.0 0:55:1.0 out5.grb2
$ wgrib2 out5.grb2 -grid 
1:0:grid_template=0:winds(N/S):
        lat-lon grid:(66 x 55) units 1e-06 input WE:SN output WE:SN res 48
        lat 0.000000 to 54.000000 by 1.000000
        lon 70.000000 to 135.000000 by 1.000000 #points=3630

参考资料

https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/new_grid.html

https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/new_grid_interpolation.html

iogrib
朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

MetMan's Blog

本文链接:

https://blog.metman.top/index.php/archives/118/(转载时请注明本文出处及文章链接)

评论 (0)

互动读者

标签云

最新回复

暂无回复

登录
X
用户名
密码