GMTサンプルスクリプトページ@東京海洋大学

HOME | sample.1 | sample.2 | sample.3 | sample.4 | sample.5 | sample.6 | sample.7 | sample.8 | sample.9 | sample.11 |

11. netCDFをバイナリに落とすまで・・
久々にNetCDFで混乱したので記念かきこみ。

@GEBCOからDLしたnetCDFがFerretで読めない、というより規格が違うのでCOADS規格へ変換してやる。
 →データが大きすぎて、Ferretが読み込み中に死亡する
AFerretで無理矢理set memory/size=200(←もうこの数字でさえ正しいのかわからん)で読み込み、バイナリにダンプ
BMATLABでバイナリを読み込み、低解像度にする。
CFerretで読むときは、緯度経度情報を再定義してやる


@まずはGMTコマンド、grd2xyzでバイナリに変換
#1. Original GEBCO is converted by using GMT command # 1-D to 2-D
grd2xyz gebco_1min_-180_-90_180_0.nc -ZTLf > gebco.bin

AFerretで読んでみる(確認)
#2. Using Ferret, GRID is defiend
set memory/size=200
use gebco4fer.cdf
define axis/x=-180:180:0.0166666 x1
define axis/y=-90:0:0.01667 y1
define grid/x=x1/y=y1 x1y1
file/var=geb/grid=x1y1/format=stream gebco.bin
sh d

BMATLABで反転+低解像度へ
#3. Using Matlab 'fliplr'
dir
fid=fopen('gebco.bin','r');
dat=fread(fid,[21601 5401],'float'); % ←1minメッシュ(GEBCOデータに限らず)は南半球でこの大きさ
dat2=fliplr(dat);
fid2=fopen('gebco-rev.bin','w');
fwrite(fid2,dat2,'float');
fclose(fid)
fclose(fid2)

CFerretで読むときは緯度経度をDEFINE関数で再定義
#4. using Ferret, making sure GEBCO data 2161x541
set memory/size=200
define axis/x=-180:180:0.166666 x1
define axis/y=-90:0:0.1667 y1
define grid/x=x1/y=y1 x1y1
file/var=geb/grid=x1y1/format=stream gebco-rev.bin
contour/lev=(-500,-50,50,-1)/x=80:180/y=-70:-30 GEB
contour/over/color=1/size=0.15/sigdig=1000/lev=(-4000,-1000,1000)/x=80:180/y=-70:-30 GEB