GRIB2のファイルをNetCDFに変換し、QGISを使って任意時間のデータをGeoTIFFとしてエクスポートするメモ

最近、気象業務支援センターから提供されている気象データを触る必要があったのですが、扱いかたを何処かに記録しておかないと忘れそうなのでそのためのメモです。

概要

grib2のままだと扱いづらいので、wgrib2を使ってnetCDFに変換します。また、QGISに読み込ませ任意の時間のデータをGeoTiffとしてエクスポートします。

ちなみにコマンドラインでの作業はWindows WSL2(Ubuntu)上で行ってます。

用語

  • GRIB2 – GRIB2は、気象データの格子点バイナリ形式で、圧縮されたデータで効率的に気象予報情報を格納・交換するための標準的なデータフォーマットです。
  • NetCDF – NetCDFは、多次元配列データを扱うための自己記述型のバイナリファイル形式で、気象学や地球科学で広く利用されています。
  • wgrib2 – wgrib2は、GRIB2(GRIdded Binary version 2)ファイルの操作、データ抽出、変換に使用されるコマンドラインツールです。

参考サイト

サンプルデータ

気象庁の「GPVサンプルデータの一覧」からダウンロードします。この記事では「全球数値予報モデルGPV (GSM全球域・日本域)」の日本域データを使います。

zipを解凍するとファイルが2つはいっていますが、この記事ではZ__C_RJTD_20221013000000_GSM_GPV_Rjp_Gll0p1deg_Lsurf_FD0000-0100_grib2.binを使用します。

wgrib2をインストールする

下記記事を参考とさせていただきました。

GRIB2形式データを処理するプログラムwgrib2(入門編)

公式サイトのページ下のほうから「wgrib2.tgz」をダウンロードします。

ビルドするためにはcmakeが必要なのでインストールします。

ビルドします。

ビルドが通ったらコマンドとして実行できるようにパスを通します。([RCファイル]というのは.bashrcとか.zshrcです)

実行してみてヘルプが表示されればOKです

netCDFに変換する

wgrib2を使ってgrib2ファイルをnetCDF形式に変換します。

とりあえず、サンプルデータの中身をwgrib2で確認してみます。

実行するとこんな感じでデータの内容が表示されます。

ひとまず、ちゃんとデータが読み取れていることと、気象項目にどんなものがあるかが確認できればOKです。

ダウンロードしたgrib2ファイルの中にどんな気象項目があるのか単位がなにかを調べたいときは-Vオプションをつけて実行すると詳細を確認できます。

このままだと分かりづらいので気象項目と単位を確認するために整形して出力します。

  • HGT : ジオポテンシャル高度 単位:gpm
  • RH : 相対湿度 単位:%
  • TMP: 温度 単位:K
  • UGRD: 東西風 単位:m/s
  • VGRD: 南北風 単位:m/s
  • VVEL: 鉛直風 単位:Pa/s

これでどんなデータが含まれているのかがわかりました。

いよいよ、netCDFに変換します。

grib2ファイルごとnetCDFに変換することもできますが気象項目毎に変換した方がのちのち扱いやすいので、ここでは「気温(TMP)」と「東西風(UGRD) & 南北風(VGRD)」のデータをnetCDFに変換します。

netCDFへの変換には-netcdfオプションを、気象項目での絞り込みにはwgrib2 の-matchオプションを使用します。

・気温データをnetCDFに変換

・風速データをnetCDFに変換

以上でnetCDFへの変換は完了です。

netCDFデータはQGISにメッシュデータとして読み込んだり、cdoというコマンドツールを使って操作することができます。

以下は、codコマンドをつかって作成したnetCDFデータの内容を確認しています。

netCDFファイルをQGIS読み込んでアニメーションさせる

作成したnetCDFファイルをQGISに読み込みます。

QGISのメーニューから「ベクター」→「メッシュレイヤーを追加」でnetCDFファイルを追加します。

レイヤーパネルで「?」マークが表示されているのでこれを解決します。

「?」マークをクリックして座標参照系にEGS84(EPSG:4326)を指定します。

「?」マークが消えればOKです。

時系列でアニメーションさせてみます。

「ビュー」→「パネル」→「時系列コントローラー」を選択して操作パネルを表示します。

再生ボタンを押せばアニメーションされます。

任意時間のデータをGeoTIFFに変換する

「ビュー」→「パネル」から「プロセッシングツールを表示する」を選択します。

表示されたプロセシングツールから「メッシュ」→「メッシュデータをラスタライズ」を選択します。

ダイアログにて以下の設定を行います。

  • 入力メッシュ:エクスポート対象とするメッシュレイヤー
  • データセットグループ:「現在アクティブなデータセットグループ」を選択
  • データセットの時間:任意の時間を選択
  • 領域:「レイヤーから計算」→対象とするレイヤーを選択
  • ピクセルサイズ:0.01程度、小さくするほど処理が重くなる
  • 出力座標系:EPSG4326 – WGS 84

以上を設定して「実行」すると、ラスタレイヤーが追加されます。

あとは、通常通りレイヤーのエクスポートを行ってください。

カテゴリー: QGIS