ホーム  •  ニュース  •  フォーラム  •  アカウント情報  •  サイト内検索  •  新規登録
 ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
 カウントダウンブロック
カウントダウンイベントはありません
 メニュー

メイン
   地球科学のための R
     COWL Index の計算 (Gaussian Grid の場合のデータの取り扱い)
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
投稿日時: 2005-4-20 11:37
登録日: 2004-7-29
居住地: 地球
投稿: 303
COWL Index の計算 (Gaussian Grid の場合のデータの取り扱い)
NCEP/NCAR の再解析データを扱う上で、時々出てくるGaussian Grid 。面倒だな、と、思っていたら、何だ、自分で既に準備していたんじゃないか。
Gaussian Grid の場合のデータの取り扱い
これを元に、COWL Index を計算する。ただし、データは、/DATA/DL/NCEP_NCAR 以下に年毎にわかれて置かれているものとします。

1. 陸と海を別けるためのデータを準備する
 wgrib -d all -nh -o ~/landmask.bin 02/data/fixed/land.sfc


2. 各年のデータを準備する。
cd /DATA/DL/NCEP_NCAR/

for dir in ??
do
   wgrib -nh -d all -o ~/${dir}tmpsfc.bin ${dir}/data/monthly/sfc/tmp.sfc
done


3. R で読み込む
3.1 ランドマスクを読み込み、cos(緯度)の重みをかける。
zz <- file("landmask.bin","rb")
landmask <- readBin(zz, "double", 192*94, 4 )
close(zz)

dim(landmask) <- c(192, 94)
landmask <- landmask[,seq(94,1,-1)]
lon <- seq(0, 360-360/192, 360/192)
lat <- c( -88.542,-86.653,-84.753,-82.851,-80.947,-79.043,-77.139,-75.235,-73.331,-71.426,
	  -69.522,-67.617,-65.713,-63.808,-61.903,-59.999,-58.094,-56.189,-54.285,-52.380,
	  -50.475,-48.571,-46.666,-44.761,-42.856,-40.952,-39.047,-37.142,-35.238,-33.333,
	  -31.428,-29.523,-27.619,-25.714,-23.809,-21.904,-20.000,-18.095,-16.190,-14.286,
	  -12.381,-10.476,-8.571,-6.667,-4.762,-2.857,-0.952,0.952,2.857,4.762,6.667,8.571,
	  10.476,12.381,14.286,16.190,18.095,20.000,21.904,23.809,25.714,27.619,29.523,
	  31.428,33.333,35.238,37.142,39.047,40.952,42.856,44.761,46.666,48.571,50.475,
	  52.380,54.285,56.189,58.094,59.999,61.903,63.808,65.713,67.617,69.522,71.426,
	  73.331,75.235,77.139,79.043,80.947,82.851,84.753,86.653,88.542)
landmaskweight <- t( matrix(cos(lat/180*pi), 94,1) %*% matrix( rep(1,192), 1, 192 ) ) * landmask 
filled.contour(landmaskweight)
rm(landmask)


3.2 20 度以北で平均気温を計算する。
for( f in list.files(pattern="tmpsfc.bin") ){
  zz         <- file(f, "rb")
  data       <- readBin(zz,"double", 192*94*12, 4)
  dim(data)  <- c(192, 94, 12 )
  data       <- data[,seq(94,1,-1),]
  close(zz)
#   filled.contour(lon, lat, data[,,7] * landmaskweight )
  for( month in 1:12 ){
    write(
          sum( data[,lat>20,month] * landmaskweight[,lat>20 ] ) /
          sum( landmaskweight[, lat> 20] ) -  273.15,
          file="COWL.txt", append=T)
  }
}
※ これでは、00, 01, 02 の三年間がはじめに来てしまうことに注意。

3.3 北半球全部で計算する。

for( f in list.files(pattern="tmpsfc.bin") ){
  zz         <- file(f, "rb")
  data       <- readBin(zz,"double", 192*94*12, 4)
  dim(data)  <- c(192, 94, 12 )
  data       <- data[,seq(94,1,-1),]
  close(zz)
#   filled.contour(lon, lat, data[,,7] * landmaskweight )
  for( month in 1:12 ){
    write(
          sum( data[,lat>=0,month] * landmaskweight[,lat>=0 ] ) /
          sum( landmaskweight[, lat>=0] ) -  273.15,
          file="COWLNH.txt", append=T)
  }
}
※ これも、00, 01, 02 の三年間がはじめに来てしまうことに注意。


以上でおしまい。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 


WWW を検索 meteorology.jp を検索

Powered by XOOPS 2.0 © 2001-2006 The XOOPS Project, Maitained by A. Mori
FI Theme :: XOOPS 2 Theme by ImageSquare :: Costomized by matchan and A.Mori