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


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では読めるのでなんだかよくわからない

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で読めるということです

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でしか見られません)

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