14
4

More than 1 year has passed since last update.

気象庁GRIB2データをGDALで引っ叩くための下ごしらえ・可視化例

Last updated at Posted at 2022-02-19

TL;DR

  • 気象庁のGRIB2データはGDALで読む事は出来ない
  • wgrib2なら気象庁GRIB2データをNetCDFデータに変換出来る
  • GDALはNetCDFデータなら読める

気象庁GRIB2データ

気象データといえばGRIB2形式らしい。
気象庁からいろんなデータがGRIB2で配布されている。

一般財団法人気象業務支援センターにお金払わないと使えないのが実態

サンプルは以下からダウンロード出来る

GDALで開いてみる

GISでラスターデータいじるならGDALでしょう、GRIB2にも対応しているし…

gdalinfo hogehoge_grib2.bin 

hogehoge_grib2.bin is a grib file, but no raster dataset was successfully identified.
gdalinfo failed - unable to open 'hogehoge_grib2.bin'.

えぇ…
GIS屋さんとしてはGDALで使えないとうれしくない!

気象庁GRIBのナゾ

上記によると独自の圧縮形式らしいので、GDALでは読めなかった訳ですね。

世間一般のフォーマットから逸脱しているのかと思いきや、後述のwgrib2では読めるのでなんだかよくわからない

2022-12-06追記

FOSS4G Japan 2022 Onlineの@honjoさんによる発表でその理由が解説されておりました。気象庁が配布しているGRIB2は「ランレングス圧縮」されていますが、GDALがこの圧縮方式のデコードに対応していない、というのが真相でした。↓続きはウェブで↓

wgrib2でNetCDFに変換

GRIB2データをいじる時の気象クラスタ御用達(らしい)ソフトウェアであるwgrib2は、そんな独自圧縮(らしい)気象庁GRIB2を開くことができ、NetCDFに変換する事ができます。NetCDFはGDALで読み込むことが出来るのでうれしい!

wgrib2の環境構築はこちらを参考にしつつ

上記のサンプルサイトからテキトーなGRIB2データを取得し(下記では毎時大気解析)、wgrib2で開いてみます

# データ名の一覧を取得出来ます
wgrib2 ./Z__C_RJTD_20170217000000_QMA_GPV_Rjp_ANAL_grib2.bin

1.1:0:d=2017021700:UGRD:10 m above ground:anl:
1.2:0:d=2017021700:VGRD:10 m above ground:anl:
1.3:0:d=2017021700:TMP:1.5 m above ground:anl:
1.4:0:d=2017021700:UGRD:1000 mb:anl:
1.5:0:d=2017021700:VGRD:1000 mb:anl:
1.6:0:d=2017021700:TMP:1000 mb:anl:
1.7:0:d=2017021700:UGRD:975 mb:anl:
1.8:0:d=2017021700:VGRD:975 mb:anl:
// 以下略

仕様書から、地表面の風速はUGRD:10 m above groundVGRD:10 m above groundだとわかるので

wgrib2 ./Z__C_RJTD_20170217000000_QMA_GPV_Rjp_ANAL_grib2.bin -match '10 m above ground' -netcdf wind.nc

とするとwind.ncというファイル名でNetCDFデータが得られるので、QGISで開いてみる

QGISは内部的にGDALを使っているので、QGISで読めればGDALで読めるということです

スクリーンショット 2022-02-19 22.43.14.png

gdalinfo wind.nc

Driver: netCDF/Network Common Data Format
Files: wind.nc
       wind.nc.aux.xml
Size is 512, 512
Metadata:
  NC_GLOBAL#Conventions=COARDS
  NC_GLOBAL#GRIB2_grid_template=0
  NC_GLOBAL#History=created by wgrib2
Subdatasets:
  SUBDATASET_1_NAME=NETCDF:"wind.nc":UGRD_10maboveground
  SUBDATASET_1_DESC=[1x505x481] UGRD_10maboveground (32-bit floating-point)
  SUBDATASET_2_NAME=NETCDF:"wind.nc":VGRD_10maboveground
  SUBDATASET_2_DESC=[1x505x481] VGRD_10maboveground (32-bit floating-point)
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0,  512.0)
Upper Right (  512.0,    0.0)
Lower Right (  512.0,  512.0)
Center      (  256.0,  256.0)

(CRSはセットされていないものの)内部的な位置情報も正しいまま、GRIB2をGDALで読む事ができましたうれしい!
あとは煮るなり焼くなりお好きにどうぞ

可視化例

煮るなり焼くなりしてみました(PCでしか見られません)

スクリーンショット 2022-02-20 23.44.25.png

(オープンデータになったら面白い使い方色々ありそうだなぁ。。。)

14
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
4