気象データ解析ツールであるGrADSについての情報をまとめています。

このwiki内では、グリッドファイル(GrADS 4byteバイナリ、特に断らなければdirect書き込み)を〜.bin、コントロールファイルを〜.ctl、変数名をvarと表記します。




sdfopen, open

nc_open failure: Not a netCDF file

Scanning self-describing file:  hoge.ctl
nc_open failure:
Not a netCDF file
hoge.ctl does not exist or is not a netCDF file.

Couldn't ingest SDF metadata.
If this was an HDF-SDS file, try gradshdf.
Open Error: Unknown keyword in description file

Scanning description file:  hoge.nc
Open Error:  Unknown keyword in description file
  --> The invalid description file record is: 
  --> CDF
  The data file was not opened.

症状:ファイルが開けない
原因:ファイルを開くコマンド、openやsdfopenの使用方法が誤っている
解決策:NetCDFを開くときはsdfopen、ctlファイルを開くときはopenを用いる。
sdfopen hoge.nc
open hoge.ctl
SDF Error: 365 day calendars are no longer supported by sdfopen

SDF Error: 365 day calendars are no longer supported by sdfopen.
  To open this file with GrADS, use a descriptor file with 
  a complete TDEF entry and OPTIONS 365_day_calendar. 
  Documentation is at http://iges.org/grads/gadoc/SDFdescriptorfile.html

症状:GrADS2を使ってNetCDFファイルをsdfopenしようとすると、365 day calendarsが対応していないと文句を言われる
原因:GrADS2では、sdfopenで365 day calendarのファイルを開くことができない。
解決策:ncdump等で格子や時間軸の情報を確認し、netcdf用をctlファイルを作成してopenする。面倒であれば、GrADS1でsdfopenしてしまえばよい。

Open Error: Missing ENDVARS statement.
Open Error: Missing ENDVARS statement.

症状:ファイルが開けない
原因:コントロールファイルの末尾、varsの列記の最後のendvarsを表記していない
   q ctlinfoではendvarsが表示されない(GrADS1)ので、コピペするときには注意
解決策:コントロールファイルを確認。末尾にendvarsを追加。

GrADS ctlファイルの作成
Open Error: Missing or invalid dimension increment value

症状:ファイルが開けない
原因:コントロールファイルのdimensionに関する記述が間違っている
解決策:xdef, ydef, zdef, tdefを確認

 Open Error: Missing or invalid dimension increment value
 --> The invalid description file record is:
 --> zdef 1 linear 0 0

上記の例の場合、たとえばGrADS 1でファイルをopenしたあと、q ctlinfoの表示結果をそのままctlファイルに用いると、
zdef 1 linear 0 0
のような表記になっているが、z軸方向に1しかない場合はlevelsを用いないといけない。
GrADS2ではq ctlinfoの結果が修正されている。
zdef 1 levels 0

に書き直すとopenできる。

GrADS ctlファイルの作成
udunits(3): Couldn't open units database "/usr/local/lib/grads/udunits.dat": No such file or directory

Scanning self-describing file:  ... .nc
udunits(3): Couldn't open units database "/usr/local/lib/grads/udunits.dat": No such file or directory
UDUNITS package initialization failure.

症状:NetCDFファイルが開けない
原因:udunits.datへのパス、つまり環境変数GADDIR(詳細)が正しく設定されていない
解決策:font0.dat, lowres, udunits.datなどのdatファイルが置かれているディレクトリをGADDIRに設定
GrADSのインストールの環境変数の設定を参照
export GADDIR=/usr/local/grads-1.9b4/data など
.bashrcに書いておく
nc_open failure: File too large / Values too large for defined data type

nc_open failure:
File too large
hoge.nc does not exist or is not a netCDF file.

nc_open failure:
Value too large for defined data type
hoge.nc does not exist or is not a netCDF file.

NetCDF Error (nc_open): Unable to open file

NetCDF Error (nc_open): Unable to open file


症状:ファイルが開けない
原因:ファイルサイズが大きすぎる。grads1では、約2GB以上のサイズのファイルが開けない。
NetCDF用のコントロールファイルを作成しても同様。
解決策:GrADS2でsdfopenする、Fortranで読む、等。
GrADS2は365 day calendarをサポートしていないので、このカレンダーのファイルの場合はコントロールファイルを作成する必要がある。

Unknown command: sdfopen

症状:sdfopenができない
原因:GrADS実行ファイルのうち、sdfopenに対応していないものを使用している。
解決策:まずどの実行ファイルを使用しているか確認する。
which grads

で、現在「grads」と打ったときの実行ファイルがどこにあるか表示される。
バージョン1.9では、gradsc以外がsdfopenに対応している。

GrADS Software→What Exectuable Files are in a Release?


display

all undefined values (Entire Grid Undefined)

症状:
Cannot contour grid - all undefined values

とコマンドラインに表示され、GrADSの窓に
Entire Grid Undefined

と表示される。
原因1:描こうとしている変数が全てundefined(欠損値)扱いとなっている
解決策:ctlファイルのundef文と、元データの欠損値が一致しているか確認する。
maskoutコマンドを使用している場合、全ての範囲でmaskoutが適用されると
この症状になる。

原因2:options templateで複数のデータを対象にしているとき、
   現在指定している(x, y, z, t, e)座標のデータが存在しない(現在の座標位置はq dimsで確認可能)
解決策:dset文、options文、chsub文、あるいは指定している座標が適切か確認する
Data Request Warning: Request beyond file limits

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)
    • set tで指定したい場合

前に開いたファイルの範囲が後に開いたファイルの範囲に
収まっていないといけない。
例. 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でファイルを読み込む。



Syntax Error: Invalid Operand

Syntax Error:  Invalid Operand 
  'var' not a variable or function name
  Error ocurred at column 1
DISPLAY error:  Invalid expression 
  Expression = var

症状:描こうとしている変数がdisplayされない
原因:変数名の指定が誤っている
解決策:'var' の部分に正しい変数名が表示されているか確認する。
正しい変数名:
    • q file, q ctlinfo時に表示される変数名
    • hoge=var のようにdefineした変数名
    • 予約済みの変数lat, lon, lev

ケースは異なるが、特にdefineした変数は、define時の範囲でしか定義されていないことに注意。
例.

sdfopen hoge.nc
set x 1 360
set y 1 180
a=var
set t 1 12
d a

この場合、GrADSのデフォルトの設定、set z 1およびset t 1の範囲内でしかaが定義されていない。
Constant field. Value = -999

症状:値が一定であると表示される(真っ赤な図が表示される)
原因:変数が一定の値となっている
解決策:d var-var と入力したときなど、値が全ての範囲で一定値となることはあり得るので、
一概にエラーとは言えないが、
一定値でないものを描こうとしている場合、データが間違っている可能性がある。
    • sdfwrite, fwriteで書き出したファイルの場合

書き出しに誤りがある、またはctlファイルの書式に誤りがある可能性がある。
Contouring: nan to nan interval inf

症状:
Contouring: -0 to 7e+35 interval 1e+35

のように表示され、斑模様の図が表示される
原因:endianの指定に誤りがある
解決策:binaryをctlファイルで読もうとしている場合、そのPCのエンディアンと、
binaryのエンディアンが一致していないと、データが正しく読まれない。
エンディアンについて


ctlファイルに
options little_endian または big_endian

と表記、またはbinary作成時にエンディアンを指定する

GrADS fwriteの場合:
set gxout fwrite
set fwrite -le hoge.bin または -be hoge.bin

intel fortranの場合:
ifort -assume byterecl -convert little_endian hoge.f90

G95 fortran compilerの場合:
g95 -fendian=little hoge.f90
Open Error on Map Data Set

症状:

Open Error on Map Data Set: /usr/local/grads/data/lowres
Error opening stroke character data set

などのメッセージが出て、正しい図が描画されない
原因:gradsが参照する地図・文字ファイルのディレクトリ指定に誤りがある
解決策:GADDIRを正しく指定する。
export GADDIR=/usr/local/grads-1.9b4/data

のように、
font0.dat ・・・ font5.dat hires lowres mres

のファイルがある場所をGADDIRで指定する。

GrADSのインストール


スクリプト


GrADSスクリプトとその使用法については、GrADSスクリプトライブラリを参照
I/O Error reading script file: var

症状:GrADSスクリプトが実行されない
原因:GrADSスクリプトvar.gsと同じ名前のディレクトリvarが存在すると、var.gsが実行されない
解決策:GrADSスクリプト名と重複するディレクトリを作らない、拡張子.gsを明示する
例.

ls
hoge.ctl sh/ sh.gs


grads
open hoge.ctl
(run) sh.gs

×
grads
open hoge.ctl
sh
Unable to locate ENDWHILE statement for the WHILE statement

症状:GrADSスクリプトのループがうまく回らない
原因:GrADSスクリプトのwhileループを終了するendwhileが存在しない
解決策:GrADSスクリプトにendwhileを記述する。

同様にif文を終了するendif文がなければ

Unable to locate ENDIF statement for the IF statement at line ??
  In file hoge.gs

など
Non-terminated constant

Non-terminated constant
  Error occurred on line 7
  In file hoge.gs

症状:
原因:GrADSスクリプトのバグ
解決策:GrADSスクリプトエラーが表示されている行を確認する。クォーテーションがあるか、変数名は正しいか、文法は正しいか


起動

grads:command not found

症状:GrADSが起動しない
原因:GrADSの実行ファイルにパスが通っていないor実行ファイルの指定を誤っている
解決策:GrADSを起動するコマンド(実行ファイル名)とパスを確認する。
実行ファイル
Cygwin:grads、grads.exe、gradsnc等
Linux GrADS v1.9以前:gradsnc
Linux GrADS v2以降:grads

パス
which grads

等で確認


/usr/local/grads-1.9b4/bin/gradsnc

を起動する方法は、

1. /usr/local/grads-1.9b4/bin/gradsnc
2. export PATH=${PATH}:${GRADSHOME}/bin
 と.bashrcに書かれ、source .bashrcした状態で
gradsnc
3. 上記に加え、alias grads=gradsnc
 と.bashrcに書かれ、source .bashrcした状態で
grads
4. 3. の状態ではshellからはgradsにパスが通っていないので
#!/bin/bash
gradsnc -lc hoge.gs

参考:GrADSのインストール


GrADSのインストール

bash: ./grads: cannot execute binary file

症状:GrADSが起動しない
原因:GrADSのバージョンがPCと整合していない
解決策:そのPCにあったGrADSをインストールする。

GrADSのインストール
Error in GXSTRT: Unable to connect to X server

症状:GrADSが立ち上がらない
原因:X window systemが起動されていない状態で、GrADSを起動しようとするとエラーとなる。
回避策:バッチモードで起動する(黒画面を使用しない)

grads -b

解決策:X window systemを起動する。

windowsからputtyなどで外部のPCに接続し、作業をする場合は、Xmingなどを利用する。
cygwinやLinux PCなど、X window system起動下の環境から、外部のPCに接続し、作業をする場合は、
ssh -X account@ipaddress

のように、-Xオプションを忘れない。

また、1.9b4 の linuxRH7.1のバージョンは、バグのためX window systemが起動していても、
外部からリモートログインするとエラーとなる。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます