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 ground
とVGRD: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でしか見られません)
(オープンデータになったら面白い使い方色々ありそうだなぁ。。。)