データの扱い

ClimCanvas v1.02.1 対応

netCDF を読み込んだあと、ClimCanvas がどの座標を緯度・経度・鉛直・時刻とみなし、どの次元を固定し、どの範囲を描くかを説明します。ファイルの読み込み操作そのものは基本操作を参照してください。選択・切り出し・平均・欠損の数値上の前提は計算の前提に一覧があります。

座標と次元

netCDF の「次元」と「座標変数」は別のものです。ClimCanvas は xarray の座標変数を座標、次元を次元として扱い、両者が同じ名前で対応しているのが普通の形です。座標の値は配列の実際の値をそのまま使うので、等間隔でなくてもかまいません。

座標変数を持たない次元 (bare dims) は「ファイル情報」に「座標変数を持たない次元 (bare dims)」として表示され、次のように扱われます。

複数のファイルを読み込んだときは、先頭のファイル (ds0) の次元名を正として、他のファイルで同じ役割を持つ次元 (例: latitude と lat) を同じ名前に揃えます。揃えるのは名前だけで、座標の値は比較しません。

座標役割の自動認識

読み込み時に、座標変数ごとに緯度 (lat) / 経度 (lon) / 鉛直 (vertical) / 時刻 (time) の役割を判定します。判定は座標変数 1 つずつに対して時刻 → 緯度 → 経度 → 鉛直の順で試し、各役割の条件はどれか 1 つが当てはまれば採用します。同じ役割に複数の座標が当てはまるときは最初に見つかったものだけを使います。

役割 判定条件 (いずれか)
時刻 値が日時型 (datetime64)、standard_name が time、axis が T、名前が time / times / date / year
緯度 standard_name が latitude、units が degrees_north 系、axis が Y、名前が lat / latitude / ylat / nav_lat
経度 standard_name が longitude、units が degrees_east 系、axis が X、名前が lon / longitude / xlon / nav_lon
鉛直 axis が Z、positive 属性がある、名前が lev / level / plev / pres / pressure / height / altitude / depth / isobaric など、または units が hPa / Pa / mb / m / km で名前が緯度・経度でない

名前と属性の比較は大文字・小文字を区別しません。判定結果は「ファイル情報」の「座標の自動認識 (ds0)」に出ます。判定できなかった役割は「(なし)」になり、その役割を使う描画モードは選択肢から消えます。

描画モード 現れる条件
水平断面図 緯度と経度の役割がある (または経緯度の変数を持つトラックデータ)
鉛直断面図 鉛直と、緯度か経度の役割がある (2 次元座標の格子では格子の行・列、等緯度線・等経度線、大円に沿った断面)
時間断面図 時刻と、鉛直・緯度・経度のいずれかの役割がある。2 次元座標の格子では出ない
1次元プロット 座標変数を持つ次元が 1 つ以上ある
1次元プロット(集計)、2次元プロット(集計) 緯度・経度を次元に持たない数値変数がある (地点データなど)
2次元プロット データ変数が 1 つ以上ある

どのモードも出せないときは「描画可能な座標の組み合わせが見つかりません。」と表示して止まります。役割が外れる原因の多くは変数の名前と属性です。ファイル側で座標の名前や units を直すのが確実な対処で、時刻だけは次の項でアプリ内から指定できます。

時刻として扱う次元

「ファイル情報」の「時刻として扱う次元」で、自動では時刻と認識されない数値の次元 (ラグ相関の lag 軸など) を時刻役割にできます。選択肢は先頭ファイルの座標変数を持つ 1 次元の次元で、既定は「(自動認識に従う)」です。

2 次元座標 (曲線格子)

緯度と経度がともに 2 次元 (例: lat(y, x)、lon(y, x)) で同じ 2 つの次元を持つデータは、2 次元座標の格子として扱います。領域モデルのランベルト格子や海洋モデルの格子がこれに当たります。経緯度が別ファイルにあるときは座標ファイルで結び付けます。

2 次元座標の格子でできないこと

時間断面図 (緯度・経度を軸にする断面)、緯度・経度の範囲平均、経度の周期点の付加は使えません。 ベクトルの成分は東西・南北成分とみなします (格子に沿った成分の回転はしません)。 経緯度の値に NaN が含まれる格子 (海洋モデルの陸面など) が描画範囲に入るとエラーになります。

次元の固定

描画する2次元(あるいは1次元)以外の次元は、値を 1 つに固定するか、範囲で平均します。固定にはパネル側とレイヤー側の 2 段階があります。

段階 対象 場所
パネル側 時刻 (全レイヤー共通。アニメーションで動く) サイドバーの「時刻」の節
レイヤー側 鉛直層、緯度、経度など、レイヤーごとに違ってよい次元 各レイヤーの設定の中

同じ次元を両方で指定したときはレイヤー側が優先されます。モードごとの振り分けは次のとおりです。

描画モード パネル側 レイヤー側
水平断面図 時刻 鉛直層など水平面以外の次元
鉛直断面図 時刻 固定する緯度または経度
時間断面図 なし 断面に使わない次元すべて (緯度・経度は範囲平均も可)
1次元プロット 時刻 (横軸が時刻でないとき) 横軸以外の次元
2次元プロット、集計系 なし すべてレイヤー側 (時刻も含む)

「時刻」の節の内容です。

時刻の節
「時刻」の節。前後の時刻へ送るボタン、時刻の選択、時刻の表示、アニメーション表示。

レイヤー側の固定では、断面図などで次元ごとに「固定値」と「範囲平均」を選べます。

散布図とバブルチャートでは、描画する次元以外を各レイヤーで固定します (初期値は中央の添字)。集計系のレイヤーでは「集計する次元」を選び、「集計する範囲を指定」で期間や区間を絞れます。

範囲の指定

水平断面図

「投影法・領域」→「緯度経度範囲を指定」を入れると、「経度 最小」「経度 最大」「緯度 最小」「緯度 最大」で表示範囲を決めます。

鉛直断面図・時間断面図

1次元プロット

「プロット軸」の「軸」で横軸の次元を選び、「範囲」のスライダーと入力欄で範囲を決めます。スライダーと入力欄は連動します。

座標が降順 (気圧が 1000 → 200、緯度が 90 → -90 など) でも、範囲は小さい値と大きい値の順で扱えます。向きは座標に合わせて自動で決まります。

経度の周期化

欠損値

ClimCanvas は欠損値の判定を自分では行いません。netCDF の属性に従って xarray が NaN にした値をそのまま matplotlib に渡し、matplotlib が描画を飛ばします。

ファイル側の宣言 結果
_FillValue または missing_value がある NaN になり、描かれない
valid_range / valid_min / valid_max だけ 値のまま描かれる (範囲外の値も)
何もない 値のまま描かれる

時刻軸と暦

時刻座標は読み込み時に次のように扱います。暦はファイルの calendar 属性で決まります。

暦 扱い
standard / gregorian / proleptic_gregorian / noleap (365_day) 日時型 (datetime64) に変換する。日付の書式指定が使える
360_day / all_leap (366_day) 開始年からの通し日数の数値軸にする (単位 day)
上記のうち日時型で表せない年 (0000 年のダミー時刻や古気候データ) 先頭時刻からの経過日数の数値軸にする