「全球及び日本域150年連続実験データ」を可視化する その5ー統合プログラム全球60km150年連続実験データから温度変化のアニメーションを作成・表示する。

はじめに

前回は60km格子の全球気候情報を使って世界的な温暖化傾予測データをアニメーション化しました。

ただ、全球で同じ気温スケールを使用しているため、高緯度域と低緯度域で色の変化域が異なり、気温がどう上がっていくかを直感的に把握するのはちょっと難しい。

同様のアニメーションを検索すると、NASAの公開する1880~2022年の全球温暖化アニメーションが引っかかります。

youtu.be

このアニメーションでは、1951-1980年を基準(ゼロ)とし、そこからどの程度、温度が変化するかを描いています。

これを真似させてもらって、150年連続実験データの温度変化のアニメーションを作成してみましょう。

温度変化データの作成

全球60km150年連続実験データの1951-1980年の平均気温マップを作成し、一律に引くことで温度変化を計算します。

# ライブラリのインポート
import os
import pathlib
import numpy as np
import pandas as pd
import xarray as xr
import affine
import rioxarray

# 年平均データの読み込み
os.chdir("/mnt/c/Users/hoge/ONEFIFTY")
year_mean_ds = xr.open_dataset("GCM60_RCP85_tmp_sfc_avr_year.nc")

# 1951~1980の平均を計算
mean_da = year_mean_ds["temperature"].sel(time=slice('1951','1980')).mean(dim="time")

# 温度変化を計算
temprature_change_ds = year_mean_ds - mean_da 

このままマップ化するとグリニッジを中心とした世界地図になり、一番描きたい日本周辺が東端に追いやられてしまうので、東経135度を中心としたデータに作り直してからnetCDF形式で出力します。

# 温度変化データの配列を取り出す
tc_arr = temprature_change_ds["temperature"].data

# 西経45度で切り、左右を入れ替える
JP_tc_arr = np.concatenate([tc_arr[:,:,240:],tc_arr[:,:,:240]],axis=2)

# 格子の緯度情報、経度情報を作成
FLON_vec = (np.arange(640) -79.5) * 0.56250 
FLAT_vec = (np.arange(320) -159.5 ) * 0.5616063492063492

# Xarrayのデータセットを作成
JP_tc_ds = xr.Dataset(
    {
        "temperature": (["time", "y","x" ],JP_tc_arr)
    },
    coords={
        "y": ("y", FLAT_vec),
        "x": ("x", FLON_vec),
        "time": temprature_change_ds["time"].data,
        "reference_time": pd.Timestamp("1950-01-01"),
    },
)

# 投影情報を設定
JP_tc_ds = JP_tc_ds.rio.write_crs("+proj=longlat +over +a=6371000 +b=6371000 +no_defs")
JP_tc_ds = JP_tc_ds.rio.write_transform()

# netCDFへ保存
JP_tc_ds.to_netcdf("GCM60_RCP85_tmpchange_sfc_avr_year.nc")

QGISでアニメーション

QGISのメッシュレイヤに読み込み、アニメーションしてみます。

QGISに読み込む

「レイヤ」→「レイヤを追加」→「メッシュレイヤを追加」

ソース:メッシュデータセットに"GGCM60_RCP85_tmpchange_sfc_avr_year.nc"を指定して「追加」


カラーランプを編集

レイヤパネルの「GGCM60_RCP85_tmpchange_sfc_avr_year.nc」を右クリックし、レイヤプロパティを立ち上げます。

「シンボロジ」タブ→「等高線」タブを選択し、以下の項目を設定し、適用します。

  • 最小: -5.0
  • 最大: 20.0
  • リサンプリング方法:隣接平均
  • 補間方法:線形(Linear)色が連続的に変化

カラーランプのプルダウンから「カラーランプを新規作成」を選択します。

「勾配グリッド(Gradient)」を選択してOK

色1に青(RGB:0,0,255)、色2に黒(RGB:0,0,0)を設定。

カラーバーをダブルクリックしてグラディエーションストップを追加し、相対位置と色を設定。

  • 相対位置:20% 色:淡黄(RGB:255,255:225)
  • 相対位置:60% 色:赤(RGB:255,0,0)


投影法の変更

NASAのアニメーションはロビンソン図法で描かれているので、そのように変更します。

投影法の登録

「設定」→「カスタム投影法」で”オプション-ユーザ定義CRS”を開き、以下の投影法を追加します。

  • 名前:JP_robin
  • 形式:Proj文字列(非推奨)
  • パラメータ:+proj=robin +lon_0=135 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs
プロジェクトの投影法の変更

右下の「現在のCRS」をクリック

「あらかじめ定義されたCRS」エリアの「ユーザー定義の座標系」から「JP_robin」を選択して「OK」

ロビンソン図法で表示されます。

アニメーション表示

時系列コントローラを利用してアニメーションできます。

年によって暑くなったり、寒くなったり、変動しながらだんだん世界的に気温が上がっていく様子がアニメーション化できました。

他の気象要素についても同様に作成することができます。

「全球及び日本域150年連続実験データ」の全球60km150年連続実験データの温度変化をアニメーションする方法を紹介しました。試してみてくださいね~。

※本記事では文部科学省「統合的気候モデル高度化研究プログラム」において、地球シミュレータを用いて作成されたデータを使用しました。