Data Request Warning: Request beyond file limits
Entire grid contents are set to missing data
Dimension ranges are: X = 0 360 Y = 1 180 Z = 1 1 T = 13 12
Warning issued for variable = var
Cannot contour grid - all undefined values
症状:画面にEntire Grid Undefinedと表示され、コマンドラインに上記メッセージが表示される。
原因1:指定している範囲がデータの範囲を超えている
解決策:上記メッセージの例では、時間方向に12個のデータしか存在しないので、その範囲に収める。
原因2:複数のデータを開いているとき、データの範囲(lon, lat, lev, timeなど)にミスマッチがある。
例えば、1971年のデータ
tdef 12 linear jan1971 1mo
と1981年のデータ
tdef 12 linear jan1981 1mo
が別々のctlファイルでopenされているとき、JJA平均値の差は
d ave(var.2, t=6, t=8)-ave(var, t=6, t=8)
では求めることはできない。
これは、t=1〜12はファイル1の時間軸をもとに、1971年1月〜12月が適用され、
ファイル2にはその時間のデータが存在しないためである。
そのため、tではなくtimeで指定する必要がある。
d ave(var.2, time=jun1981, time=aug1981)-ave(var, time=jun1971, time=aug1971)
前に開いたファイルの範囲が後に開いたファイルの範囲に
収まっていないといけない。
例. 1979年1月〜2000年12月までの範囲の1979-2000.ctlと、
2000年1月〜2000年12月までの範囲の2000.ctlを開き、2000年1月〜12月の範囲の差を表示
○
open 2000.ctl
open 1979-2000.ctl # t=1に2000年1月が適用される
set t 1 12 # 2000年1月〜2000年12月の範囲
d var-var.2
×
open 1979-2000.ctl
open 2000.ctl # 後に開いたファイルは2000年からしかデータがない
set t 1 12 # t=1の情報が衝突し、
d var.2-var # 図が描けない
原因3:NetCDFファイルで、初期のtの設定が29日、30日、31日のいずれかになっていて、タイムステップが1ヶ月等である場合:
t=1:2000年12月31日
t=2:2001年1月31日
t=3:2001年3月3日
t=4:2001年3月31日
t=5:2001年5月1日
t=6:2001年5月31日
・・・
のように、29日、30日、31日がない月を飛ばして読み込んでしまい、さらにデータの末尾の時間ステップでは、データが欠損扱いになることが多い。
これは、GrADSの時間ステップで1moと指定していると、次の時間ステップは月を一つ増やすのだが、その日が存在しない(2月31日など)場合、足りない日数分、次に進めてしまうことで起こるバグ。2月31日の場合は3月3日に、4月31日の場合は5月1日に置き換わってしまい、それぞれ2月の代わりに3月、4月の代わりに5月のデータを参照してしまう。
解決策:NetCDFファイルを読むctlファイル(tdefでは日を01や15など、安全な値に設定しておく)を作成して、openでファイルを読み込む。