TRMMのorbitデータ(ex.2A25)は、等緯度経度グリッドではなく、軌道上でswathした範囲のデータなのでGMTのコマンドを使って等緯度経度グリッドに内挿する。
このやり方が、よいとは言えないかもしれないが楽なので用いる。
ファイル内に格納されている変数は、GES DISCに記載されているが、正式な変数名はhdpコマンドで確認する必要がある。
hdp dumpsds -h <入力HDFファイル> | less
これでファイル内のヘッダー情報のみが表示されるので変数を探していく。変数名は Variable Name = と書かれている行にあるので
/Var
などとして変数名を探していけばよい。
2次元データとは、nearSurfRainやnearSurfZなどのことを指している。最終的に、2次元配列の4バイト実数の単純なバイナリを作成する。
以下の例では、bashスクリプトのなかでhdpコマンドとpasteコマンドとGMTのnearneighborコマンドを使っている。
入力データを"2A25.100609.71583.6.HDF"、出力する変数は"nearsurfZ"である
#!/bin/bash #2-D data intepolation #geo.txt : geolocation latitude and longitude #ref.txt : reflectivity INPUT_FILE="2A25.100609.71583.6.HDF" WLON="-20" ELON="20" SLAT="-20" NLAT="20" VAR="nearSurfZ" hdp dumpsds -n geolocation -d $INPUT_FILE | sed '/^$/d' > geo.txt hdp dumpsds -n $VAR -d $INPUT_FILE | tr ' ' '\n' | sed '/^$/d' > surfvar.txt paste geo.txt surfvar.txt > geo_surfvar.txt nearneighbor -:i geo_surfvar.txt -R$WLON/$ELON/$SLAT/$NLAT -I0.05 -S0.25 -fg -Ggeo_surfvar.grd
3次元データとは、correctZFactorなどを指している。これをGrADSで読める形式に変換するには2次元に比べて相当に手間も計算時間もかかる。
具体的には、水平断面データを全高度について作成し結合することで3次元配列のデータを作成している。が、回りくどいやり方をしているのでおすすめはしません。