気候予測データの解析環境を構築する。その6―Pythonライブラリ:Xarrayを導入する。
はじめに
前回、150年連続データセットのgifアニメーションを(力技で?)作成してみました
が、やはりQGIS上でアニメーションをぱたぱたさせたい!自分の住む地域を拡大してみてみたい!ということで、方法をさがしていたところ、以下の動画を発見。
時間軸が設定された”netCDF形式”のデータをメッシュレイヤとして追加すると、時系列コントローラを使用してパタパタさせることができるらしい。
”GUNMA GIS GEEK”にもwgrib2をnetCDFに変換して、QGIS読み込んでアニメーションさせる方法が載っていました。
Python上で時間平均したマップをnetCDF形式で出力すれば、前回作ったgifアニメーションをQGIS上でぱたぱたさせることができそうです。
で、Python上でnetcdfを扱うライブラリは"netCDF4"と思ってたら、最近は”Xarray"らしい。
さらに、”cfgrib”エンジンがあれば直接gribを扱えるそう。
これは便利!ということで、解析環境にXarrayと関連ライブラリを追加インストールします。
Xarrayと関連するライブラリのインストール
eccodeのライブラリをaptでインストールしておきます。
sudo apt update sudo apt upgrade sudo apt install libeccodes-dev
関連するライブラリを入れてから、Xarrayをインストールします。
sudo pip3 install netcdf4 #recommended if you want to use xarray for reading or writing netCDF files sudo pip3 install cfgrib #Python interface to map GRIB files to the NetCDF Common Data Model following the CF Convention using ecCodes. sudo pip3 install nc-time-axis #for plotting cftime.datetime objects sudo pip3 install pooch #manages your Python library's sample data files sudo pip3 install xarray #N-D labeled arrays and datasets in Python sudo pip3 install rioxarray #geospatial xarray extension powered by rasterio
テスト
GRIB Data Exampleを試してみます。
# ライブラリを呼び出す import xarray as xr import matplotlib.pyplot as plt # テストデータをロード ds = xr.tutorial.load_dataset("era5-2mt-2019-03-uk.grib", engine="cfgrib") # cartpyでマップ化 import cartopy.crs as ccrs import cartopy fig = plt.figure(figsize=(10, 10)) ax = plt.axes(projection=ccrs.Robinson()) ax.coastlines(resolution="10m") plot = ds.t2m[0].plot( cmap=plt.cm.coolwarm, transform=ccrs.PlateCarree(), cbar_kwargs={"shrink": 0.6} ) plt.title("ERA5 - 2m temperature British Isles March 2019")
動きましたか?
これでnetCDF形式のファイルを扱う環境が整いました。 さあ、気象予測データの解析をはじめてみましょう!
※QGISのメッシュレイヤ機能について、ずいぶん前に追加されていたのですが、まったく追えていませんでした・・これからいろいろ試していきたいと思っています。