Monday, 4 November 2024

氷河合宿その5a:NetCDFの中身を確認

 いったんダウンロードから離れて、入手したNetCDFファイルの中身を見ていきましょう。

作業フォルダを作成し、その中に気象データと標高データを入れておきます。練習用&いろいろなコマンドのメモとして、「practice.py」とでも名付けたファイルを作成しましょう。Sublime Textと関連付けしておけば、ダブルクリックですぐに確認、編集できるので便利。

作業フォルダ内でターミナルを立ち上げ、「ipython」と入力&リターンすると、以下のような画面になるはずです。


ここに以下の二行を入力して、NetCDFを使えるようにします。

import numpy as np
import netCDF4

この時点でエラーが出る人は、エラーメッセージを選択コピーして、chatGPTに聞いたりして対処してください。うまくいったら、次のコマンドでダウンロードしたファイルを読み込みます。

nc = netCDF4.Dataset('rw2017mon.nc')

これで、「nc」という配列(行列)の中に、ファイル内のデータが格納されましたので、中身を見ていきます。まずは単純に「nc」とだけ打ってリターン。

nc
バーッと情報が出てきますが、ビビらずに半ばあたりにある「dimensions,,,」以下を選択してコピーし、メモ上にペーストしましょう。パラメータ毎に改行すると、以下のようになっています。

含まれるパラメータ
dimensions(sizes): date(12), latitude(41), longitude(81)
int64 date(date)
float64 latitude(latitude)
float64 longitude(longitude)
float32 u10(date, latitude, longitude):東西風
float32 v10(date, latitude, longitude):南北風
float32 d2m(date, latitude, longitude):露点温度
float32 t2m(date, latitude, longitude):気温
float32 sp(date, latitude, longitude):地表面気圧
float32 tp(date, latitude, longitude):降水量
float32 ssrd(date, latitude, longitude):下向き短波放射
float32 strd(date, latitude, longitude):下向き長波放射

dimensions(sizes): date(12), latitude(41), longitude(81)は、行列の構造です。
u10以下がダウンロードしてきた気象要素で、これがデータを読み出すときに使う名称です。

データ領域
このデータはヒマラヤのロールワリン地域を含む領域で、指定の際に
     30
70 -|- 90
     20
こんな範囲を指定しました。南北10°、東西20°の範囲です。ERA5の解像度は0.25°なので、南北40、東西80のデータがあればよさそうですが、実際には41と81あることがわかります。

これは、データの代表ポイントが間隔0.25°の格子の中心にあるか、四隅に配置されているかの違いで、ERA5は後者(四隅)で、そのために+1こデータがあります。

※最近あまり使ってる論文を見ませんが、NCEPは格子の中央に配置されている。

なので、例えば座標(70,20)のデータが代表する領域は解像度0.25°を半分にした±0.125で、19.875~20.125、69.875~70.125の領域ということになります。これは後々、自分が抽出したい地点がどのグリッドに含まれているか?を求めるのに重要になってきます。

試しにそれぞれのパラメータを確認してみましょう。

nc['u10']

と打ち込むと情報がバーッと出てきますが、ここでチェックしておきたいのは単位(Unit)です。今回入手したパラメータをまとめると

nc['u10'] / nc['v10'] → units: m s**-1
nc['t2m'] / nc['d2m'] → units: K
nc['sp'] → units: Pa
nc['tp'] → units: m
nc['ssrd'] / nc['strd'] → units: J m**-2

Kから℃への換算はよいですね?地表面気圧も普段はhPaを使うので要注意。降水量はmmではなく、mですが、単に1000倍すればいいのか、この段階ではわかりませんね。放射の単位もワットWではなくジュールJですが、一か月分の総量なのでしょうか?確認が必要です。

というわけで、ERA5のOverviewで確認しましょう。

Total Precipitation
選択部分に書かれているように、このデータは一日当たりの降水量をm表記したものです。換算の際は、mmにしたうえで、月ごとの日数をかけてやる必要があります。

Surface Solar Radiation Downwards
こちらも一日当たりの積算エネルギーなので、Wへの換算のためには24*60*60 = 86400で割ってやる必要があります(長波も同じ)。

ずいぶん長くなってしまったので今回はここまで。

No comments:

Post a Comment