現在の海洋モデルの多くは極問題を避けるために、緯度経度座標系以外の座標系を採用している。プロダクトとしてのデータも緯度経度座標系でないことが多い。例えばCMIP5の海水温や海面水温データは
MIROC5 海洋モデルCOCO4.5によるSST出力データ
MPI-ESM-LR 海洋モデルMPIOMによるSST出力データ
このような座標系で提供されている。これらをGrADSで解析するには、緯度経度との対応関係を用いて緯度経度座標系に変換すればよい。
Step 1. NetCDFファイルから必要な情報を抜き出す
コントロールファイルMIROC5.ctlを作成、変数とlon、latの(x, y)配列データを利用する
DSET ^tos_Omon_MIROC5_piControl_r1i1p1_230001-239912.nc
DTYPE netcdf
TITLE XXX
UNDEF 0
OPTIONS 365_day_calendar
xdef 256 linear 0 1.40625 #適当
ydef 224 linear -89.598214286 0.803571429 #適当
zdef 1 levels 0
tdef 1200 linear 12Z16JAN2300 1mo
VARS 3
tos=>tos 1 t,y,x Temperature
lon=>lont 1 y,x Temperature #lonとlatを予約済み変数以外の名前に置き換える
lat=>lati 1 y,x Temperature
ENDVARS
SSTを色で、緯度経度を等値線で描く
'open MIROC5.ctl '
'set x 1 256'
'set y 1 224'
'cc'
'sh'
'set mpdraw off'
'set xlab off'
'set ylab off'
'set grads off'
'set grid off'
'set gxout grfill'
'set parea 1 8 1 6'
'd tos'
'xcbar 1 8 0.6 0.75 -edge triangle -line on'
'co'
'set cthick 5'
'set cstyle 1'
'set ccolor 1'
'set clab on'
'set cint 60'
'd lont'
'set cthick 5'
'set cstyle 1'
'set ccolor 1'
'set clab on'
'set cint 20'
'd lati'
上の図ができる。
ctlファイルを用いて
tos(x, y)
lont(x, y)
lati(x, y)
の三つのデータを出力
Step 2.緯度経度座標系に変換
lont, lati, tosの3列データを緯度経度座標系に変換する。
変換方法は何でも良いが、
GMTコマンドが使用可能であれば
nearneighborを使うと楽。
lont, lati, tosの3列asciiデータを作成
program main
implicit none
integer,parameter:: nx=256,ny=224
real(4):: lon(nx,ny),lat(nx,ny),a(nx,ny)
integer:: ix,iy
open(10,file='anom.bin', &
access='direct',form='unformatted',recl=4*nx*ny)
open(11,file='lon.bin', &
access='direct',form='unformatted',recl=4*nx*ny)
open(12,file='lat.bin', &
access='direct',form='unformatted',recl=4*nx*ny)
open(20,file='data1.txt', &
access='sequential',form='formatted')
read(10,rec=1) ((a(ix,iy),ix=1,nx),iy=1,ny)
read(11,rec=1) ((lon(ix,iy),ix=1,nx),iy=1,ny)
read(12,rec=1) ((lat(ix,iy),ix=1,nx),iy=1,ny)
do iy=1,ny
do ix=1,nx
write(20,*) lon(ix,iy),lat(ix,iy),a(ix,iy)
enddo
enddo
end
※欠損値の処理をすること
nearneighborで1度×1度の緯度経度座標系グリッドデータに変換
nearneighbor data1.txt -Gdata1.bin -I1 -R0/360/-89.5/89.5 -S4 -N8/7 -fg
ヘッダを読み飛ばして、コントロールファイルで読み込み、作図する。
dset ^data1.bin
title XXX
FILEHEADER 5012
undef -9.99e+08
options big_endian
xdef 361 linear 0 1
ydef 178 linear -89.5 1
zdef 1 levels 0
tdef 1 linear 12Z16JAN1979 1mo
vars 1
sst 1 -999 TOA Outgoing Shortwave Radiation
endvars
緯度経度座標系のSSTデータができる(下図はSST上昇量の例)。nearneighborのオプションを使って内挿方法を調整すること。