「日本域気候予測データ―格子点データ」を可視化する その2-2km版データの入手とマップ化
はじめに
「日本域気候予測データ」では、それまでの『「地球温暖化予測情報第 9 巻」データセット(「第 9巻」データセット)』に水平解像度 2km への力学的ダウンスケーリングを行った予測が追加されました。
「2km 版」データセットの計算で用いた NHRCM02 は、「5km 版」で用いられた NHRCM05 では 考慮されていなかった都市化による影響を含めることができる都市モデルが新たに導入されるなど、 様々な改良が加えられている(表 2.2)。(気候予測データセット解説書第2章.P2-74)
とのこと。
2km版データについて、5㎞版と同様にマップ化してみましょう。
データの入手
格子点データをダウンロードします。2km版のデータは”/jmagwp/gwp9/data_2km/binary”フォルダに格納されています。
5㎞版と同様に、SFA_rcp85_ens,SFA_rcp26_ens,SPAのannualデータを選択し、入手します。
データを解凍する
# ユーザホームディレクトリにJWP9フォルダを作成し、 # ダウンロードした”data***.tgz”を移動しておく。 cd /mnt/c/Users/hoge/JWP9/ find ./ -type f -name "*.tgz" | xargs -n 1 tar zxf
次のディレクトリにデータが解凍されます
C:\Users\hoge\JWP9\dias\data\jmagwp\gwp9\data_2km\binary\SFA_rcp85_ens\annually
C:\Users\hoge\JWP9\dias\data\jmagwp\gwp9\data_2km\binary\SFA_rcp26_ens\annually
C:\Users\hoge\JWP9\dias\data\jmagwp\gwp9\data_2km\binary\SPA\annually
GrADSで表示
5km版と同様に、まずはGrADSで表示してみます。
#SPAのデータフォルダに移動 cd /mnt/c/Users/hoge/JWP9/dias/data/jmagwp/gwp9/data_2km/binary/SPA/annually #GrDASを立ち上げ grads
#データの読み込み open annual_2km-SPA.ctl #コントロールファイルの内容を表示 q file 1 #timestepを指定 set t 1 #グリッドを塗り潰して色別で表示。 set gxout grfill #メルカトル図法 set mproj latlon #マップを表示 d prec
表示されます。
geotiffに変換する
5㎞版と同様に20年の平均値を計算し、GeoTIFFに変換します。
コントロールファイルから情報を抽出
annual_2km-SPA.ctlの内容
DSET ^annual_2km-SPA.dat OPTIONS little_endian title surface result undef 65535 pdef 485 1681 LCCR 44 144 178 1474 30 60 80 2000 2000 xdef 2300 linear 114 0.02 ydef 2000 linear 16 0.02 zdef 1 linear 1 1 tdef 20 linear 01SEP1980 1yr vars 6 TS 1 -1,40,2 (Average temperature at 2m) / 0.01 K TShMAXd 1 -1,40,2 (Maximum temperature at 2m) / 0.01 K TShMINd 1 -1,40,2 (Minimum temperature at 2m) / 0.01 K PREC 1 -1,40,2 (Precipitation ) mm SNDEPhMAXy 1 -1,40,2 (Maximum snow depth ) cm SNFALL 1 -1,40,2 (Snow precipitation ) cm endvars ***end of ctl file***
ctlの記載から、このファイルは
- x方向のグリッド数:485
- y方向のグリッド数:1681
- z方向のグリッド数:1
- タイムステップ数:20
- 変数数:6
- 変数のデータ形式:2-byte unsigned integers
であることが読み取れます。
この情報を基に、バイナリデータを読み込み、整形していきます。
バイナリデータの読み込み
データを読み込み、変数別のnumpy配列に変換します。
# ライブラリをインポート import os import pathlib import pandas as pd import numpy as np import geopandas as gpd # バイナリファイルを読み込み os.chdir("/mnt/c/Users/hoge/JWP9") dvec = np.fromfile("./dias/data/jmagwp/gwp9/data_2km/binary/SPA/annually/annual-SPA.dat",dtype='<u2') # 4次元の配列に変換 darr = dvec.reshape(20,6,1681,485) # 気象要素に切り分け、実数に変換 #TS_arr = darr[:,0,:,:] *0.01 -273.15 #TShMAXd_arr = darr[:,1,:,:] *0.01 -273.15 #TShMINd_arr = darr[:,2,:,:] *0.01 -273.15 PREC_arr = darr[:,3,:,:]*1.0 #SNDEPhMAXy_arr = darr[:,4,:,:]*1.0 #SNFALL_arr = darr[:,5,:,:]*1.0
GeoTIFFへ変換
20年の平均値を計算し、GeoTIFF化します。
# ライブラリをインポート from osgeo import gdal, gdalconst, gdal_array from osgeo import osr #地理座標系のパラメータを設定 ul_x = 4074196.551466600 ul_y = 7530619.71549598 x_res = 2000 y_res = -2000 outRasterSRS = osr.SpatialReference() outRasterSRS.ImportFromProj4( "+proj=lcc +lat_1=30.0 +lat_2=60.0 +lon_0=80. +lat_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs") # 格子点の平均値を計算 out_arr = np.mean(PREC_arr,axis=0)[::-1,:] # GeoTIFF化し、保存 name = "SPA_annually_PREC_mean_2km.gtiff" output = gdal.GetDriverByName('GTiff').Create(name, 485,1681,1,gdal.GDT_Float64) output.SetGeoTransform((ul_x, x_res, 0, ul_y, 0, y_res)) outband = output.GetRasterBand(1) outband.WriteArray(out_arr.astype("float64")) output.SetProjection(outRasterSRS.ExportToWkt()) outband.FlushCache() output =None
QGISに読み込む
「レイヤ」→「レイヤを追加」→「ラスタレイヤを追加」
ソース:ラスタデータセットに"SPA_annually_PREC_mean_2km.gtiff"を指定して「追加」
年降水量のマップが表示されます。
表示投影法をWGS84/Pseudo-Mercatorに変更。
平均気温など、他の気象要素についても同様に作成することができます。
「日本域気候予測データ - 格子点データ」の2㎞版を入手し、マップ化するまでを紹介しました。 試してみてくださいね~。
※本記事では「気候予測データセット2022 ②日本域気候予測データ」を使用しました同データセットは、気象庁気象研究所が開発した気候モデルを利用して、統合的気候モデル高度化研究プログラムにおいて計算されたデータを元に作成されたものです。