一覧に戻る

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

#GDAL#TypeScript#GIS#grib2#気象データ

TL;DR

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

気象庁GRIB2データ

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

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

https://www.data.jma.go.jp/add/suishin/cgi-bin/catalogue/make_product_page.cgi?id=ZenModel

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

https://www.data.jma.go.jp/developer/gpv_sample.html

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のナゾ

https://qiita.com/vpcf/items/b680f504cfe8b6a64222#%E8%A7%A3%E6%9E%90%E9%9B%A8%E9%87%8F%E3%82%92python%E3%81%A7%E8%AA%AD%E3%81%BF%E3%81%9F%E3%81%84

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

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

2022-12-06追記

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

https://www.osgeo.jp/events/foss4g-2022/foss4g-2022-japan-online/foss4g-japan-2022-online-core-day#sponsor3

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

https://github.com/Kanahiro/japan-windmap-example

https://kanahiro.github.io/japan-windmap-example/

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