早崎トップ 研究(気候気象) 研究(大気汚染) データリスト Linux Tips Mac Tips

JRA25 memo

JRA25/JCDAS メモ

JRA25/JCDAS には,いくつかの間違いが存在する(特にJCDAS期間). 配布データが差し替えられる場合もあるが,必ずしも迅速でなく, さらには差し替えされない(再作成に時間がかかっているだけかも?)事もある. 使用者はデータ訂正情報のチェックを忘れずに.

See also JRA55_memo

データ容量(概算)

データ種類別の概算容量
種別 プロダクト分類名 月別容量 年間容量 30年間容量 年間ファイル数 格子系
合計値 - 5.5 GB 69 GB 2076 GB 9125 -
発散・渦度・流線関数・速度ポテンシャル anl_chipsi 891 MB 10.4 GB 313 GB 1460 lon/lat (288 x 145)
等温位面 anl_isentrop 1.5 GB 19 GB 570 GB 1460 Gaussian (320 x 160)
地表面 anl_land 28 MB 333 MB 10 GB 1460 Gaussian (320 x 160)
モデル面 anl_mdl 2.5 GB 31 GB 930 GB 1460 Gaussian (320 x 160)
p面 anl_p 936 MB 12 GB 108 GB 1460 lon/lat (288 x 145)
地表面(雪) anl_snow106_mdl 1.1 MB 14 MB 0.42 GB 365 Gaussian (320 x 160)
地表面予報値(放射, 降水, 顕・潜熱など) fcst_phy2m 530 MB 6.3 GB 189 GB 1460 Gaussian (320 x 160)
地表面予報値(土壌温度・水分,流出量など) fcst_phyland 46 MB 0.56 GB 16.8 GB 1460 Gaussian (320 x 160)
  • 月別容量は,30日分の合計値
  • 年間容量は,2009年の合計値
  • 30年間容量は,2009年合計値の30倍
  • 年間ファイル数は非閏年(365日)の場合
  • 格子系の表示の意味は以下の通り:
    • Gaussian (320 x 160) = ガウス格子. 緯度方向: 160点,経度方向: 320点(1.125 deg. 間隔)
    • lon/lat (288 x 145) = 等緯度経度格子.緯度方向: 145点,経度方向: 288点. 緯度経度共に 1.25 deg. 間隔

鉛直レベル数

 p面 (pressure level)

  • 23-level (1000, 925, 850, 700, 600, 500, 400, 300, 250, 200, 150, 100, 70, 50, 30, 20, 10, 7, 5, 3, 2, 1, 0.4 hPa)
  • 層番号,気圧,高度 (米国標準大気に基づく.海抜高度で1013hPaとする)
Height at standard pressure levels of JRA25/JCDAS.
level No. pressure height
1 1000
2 925
3 850
4 700
5 600
6 500
7 400
8 300
9 250
10 200
11 150
12 100
13 70
14 50
15 30
16 20
17 10
18 7
19 5
20 3
21 2
22 1
23 0.4

  モデル面 (model level data of the JRA25/JCDAS)

  • 40-level in total.
  • pressure at "full-level" (mid-point level) = 995, 982.49, 964.98, 942.47, 914.94, 882.44, 845.43, 804.91, 761.89, 717.38, 672.37, 627.37, 582.86, 539.36, 496.85, 455.35, 415.35, 377.35, 340.84, 305.33, 271.33, 239.33, 209.33, 181.33, 155.33, 131.33, 109.33, 89.33, 71.33, 55.38, 41.54, 30, 20.87, 14, 9.07, 5.66, 3.41, 1.98, 1.11, 0.4 (Psfc = 1000.0; copied from anl_mdl.ctl)
  • Pressure at "full-level" is determined by a linear interpolation of the adjacent half levels. See also http://jra.kishou.go.jp/JRA-25/hybrid_definitions_en.html

 等温位面 (isentropic analysis data of the JRA25/JCDAS)

  • 20-level in total. from 270 to 400 K: 10 K interval, from 400 to 475 K: 25 K interval, above 475 K: 550, 650, 750 K
  • 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 425, 450, 475, 550, 650, 750 K
  • (記載日: 2011-10-14) JRA25配布サイトの渦位 (potential vorticity) の単位が間違っている. GrADS ctl ファイルでは [sec^-1] だが, 正しくは 1.0E-6 [m^2 sec^-1 K kg^-1] (いわゆる Potential Voriticity Unit (PVU)) である. GRIB ファイル中の記載も間違い (wgrib -V の表示は [km^2/kg/s] これも微妙に違う... NCEP/NCAR再解析のPVの単位と同じなので... コピー & ペーストしたか,NCEPからもらったプログラムをそのまま流用したのか?). 配布データリストのページではPVUなので,これは正しい. 些細なミスだが,オリジナルの配布元が記載を間違えてるのは少々恥ずかしい. 世界的に見ても体面がよろしくないだろう. 可能ならGRIBデータ自身の修正を,それが無理なら,せめて ctl ファイルだけでも修正すべき. よろしくお願いします » JRA 作成グループの方

平年値の作成方法

  月平均

6時間間隔の日4回平均値を基に作成した累年の月別値を単純平均して求めた。

  日平均

  1. 累年の日別値を単純平均(うるう日は無視し、一年をすべて365日として扱う)
  2. 上記の日平均値に対して,カットオフ周期60日、121項目のLanczos filter

(see Duchon, 1979; JAM)をかけて平滑化

  • うるう日の平年値は、2月28日と3月1日の平滑平年値の平均
  • 日別平滑平年値から旬や月平均値を計算した場合,対応する期間の平年値とは一致しない

 私的に作成した平年値作成・解析プログラム類のメモ

以下は個人的なメモ.書いている本人しか理解できない情報. 他者が読んでも,ほぼ無意味である.

  • 6-hourly から各年 & 各月平均計算プログラムを自作.see ~/JRA/climate/ 以下
  • 上記の自作 monthly mean は,JRA が配布している monthly mean (big endian) から 変数別・高度別に切り出すプログラムと同一形式にしている. つまり,2つのプログラムの出力先は同一である.
  • 変数別・高度別解析を容易にするため,自分用GRIBファイルを作成.see ~/JRA/dump_data/ 以下
  • ダウンロードは cron により実施.もちろん sleep 付きで

エラーなどの情報

 データ修正情報

JRA25/JCDAS 配布ページにデータ修正情報あり. 大学・研究機関で所有するデータも,取得時期を確認すべき. 取得後の修正により,データが差し替えられている可能性がある.

ただ,データ修正・更新情報はダウンロード画面にいかないと閲覧できない. 大学の研究室では,過去にダウンロードしたデータを引き継いで (更新せず)利用する事が多いだろう. また, データ取得は研究室で特定の代表者(教官?)が実施するのが一般的だろう.

大学等では,データ利用者の全てが登録ユーザでは無いため, 「データ更新情報を閲覧できない JRA25/JCDAS 利用者」 が多数存在する. そのため,データの修正・更新に気づく可能性が低くなる. これでは,JRA25/JCDASの利用促進につながらない. データ更新情報だけは,ユーザ認証無しで閲覧可能な場所に置くべきだ.

私が見たところ,現時点で未修正のSST誤解析が少なくとも1つ存在する(確認日: 2011-11-30). SSTそのものだけでなく, SSTを使って得られる変数 (海洋表面からの長波放射,sensible/latent heat など)についても,要注意. また,大学・研究所の場合, 過去にダウンロードしたデータが修正版に差し替えられていない可能性もある. 日付を確認の事.

  1. COBE-SST の格子変換ミスによる 内海(日本海,地中海,カリブ海,ボスニア湾〜バルト海,カスピ海,南シナ海南部・ジャワ海) SSTの不備(期間内で気候値になっている; 01Jan2005-13Jan2010; 告知日: 2010-02-08付け).
  2. (差し替え済み)同化に用いた不良ブイ観測値による低温バイアス (0-15N, 120-160E; mid Nov2005 - mid Jan2006; 告知日: 2007-02-01; 差し替え日: 2008-01-23)

  wgrib コマンド使用時のメッセージ(GRIBテーブル未対応)

JRA25/JCDAS のGRIBファイルを wgrib コマンドでダンプした際, 画面上に以下のような warning message が出ることがある (anl_p のデータでは出ないが,fcst_phy2m のデータでは出る).

Undefined parameter table (center 34-0 table 3), using NCEP-opn

これは,JRA25/JCDAS のGRIBで使われているパラメータテーブルが, wgrib コマンドで定義されていないため. wgrib 作成者に修正をお願いする... というのも考えた. しかし,自国で作成した再解析データの情報整備を, 外国研究機関の担当者に丸投げするのは極めて情けないし, 何よりも相手に失礼である. 自分ですべき事・出来ることは,自分でやらねば.

...と思って自作テーブルを作成したが,

作成後にJRA25 の公式配布サイトに掲載してあるのを発見.

JRA25 のダウンロード画面の ''データの利用方法'' タブ を選択,ページ下部にある ''JRA-25データ用user-defined parameter tablesのサンプル'' です. 私の調べ方が浅かった... とはいえ,せっかく作ったので作成方法も含め掲載することにした.

以下,そのメモ.

パラメータテーブルの作り方は wgrib のサイト内のドキュメントに書いてあった (see usertables.txt at NOAA). さすが Wesley Ebisuzaki さん. 彼の作ったツール・情報により,過去何度助けられたことか. もしお会いする機会があれば,心からの感謝の意を表したい.

少々話がそれた. 上記情報を元に,実際のJRA25/JCDAS データを使って JRA25/JCDAS の GRIB パラメータテーブルを作成した. 配布全データが含まれていない(速度ポテンシャルとか)事に注意.下記がその一覧である:

-1:34:0:3
1:PRES:Pressure [Pa] 
2:PRMSL:Pressure reduced to MSL [Pa] 
4:PVORT:Pot. vorticity [km^2/kg/s] 
7:HGT:Geopotential height [gpm] 
8:DIST:Geometric height [m] 
11:TMP:Temp. [K] 
13:4LFTX:Potential temp. [K] 
15:CAPE:Max. temp. [K] 
16:CSDLF:Min. temp. [K] 
18:DEPR:Dew point depression [K] 
33:UGRD:u wind [m/s] 
34:VGRD:v wind [m/s] 
37:MNTSF:Montgomery stream function [m^2/s^2] 
39:VVEL:Pressure vertical velocity [Pa/s] 
51:SPFH:Specific humidity [kg/kg] 
52:RH:Relative humidity [%] 
54:PWAT:Precipitable water [kg/m^2] 
62:NCPCP:Large scale precipitation [kg/m^2] 
63:ACPCP:Convective precipitation [kg/m^2] 
64:SRWEQ:Snowfall rate water equiv. [kg/m^2/s] 
65:WEASD:Accum. snow [kg/m^2] 
66:SNOD:Snow depth [m] 
71:TCDC:Total cloud cover [%] 
73:LCDC:Low level cloud cover [%] 
74:MCDC:Mid level cloud cover [%] 
75:HCDC:High level cloud cover [%] 
76:CWAT:Cloud water [kg/m^2] 
80:WTMP:Water temp. [K] 
83:SFCR:Surface roughness [m] 
85:TSOIL:Soil temp. [K] 
86:SOILM:Soil moisture content [kg/m^2] 
90:WATR:Water runoff [kg/m^2] 
91:ICEC:Ice concentration (ice=1;no ice=0) [fraction] 
121:LHTFL:Latent heat flux [W/m^2] 
122:SHTFL:Sensible heat flux [W/m^2] 
124:UFLX:Zonal momentum flux [N/m^2] 
125:VFLX:Meridional momentum flux [N/m^2] 
132:4LFTX:Best (4-layer) lifted index [K] 
136:VWSH:Vertical speed shear [1/s] 
137:TSLSA:3-hr pressure tendency (Std Atmos Red) [Pa/s] 
138:BVF2:Brunt-Vaisala frequency^2 [1/s^2] 
139:PVMW:Potential vorticity (mass-weighted) [1/s/m] 
144:SOILW:Volumetric soil moisture [fraction] 
145:PEVPR:Potential evaporation rate [W/m^2] 
147:U-GWD:Zonal gravity wave stress [N/m^2] 
148:V-GWD:Meridional gravity wave stress [N/m^2] 
152:COVTM:Covariance between v and T [K*m/s] 
154:O3MR:Ozone mixing ratio [kg/kg] 
155:GFLUX:Ground heat flux [W/m^2] 
157:CAPE:Convective Avail. Pot. Energy [J/kg] 
159:CONDP:Lifted parcel condensation pressure [Pa] 
160:CSUSF:Clear sky upward solar flux [W/m^2] 
161:CSDSF:Clear sky downward solar flux [W/m^2] 
162:CSULF:Clear sky upward long wave flux [W/m^2] 
163:CSDLF:Clear sky downward long wave flux [W/m^2] 
168:NBDSF:Near IR beam downward solar flux [W/m^2] 
169:NDDSF:Near IR diffuse downward solar flux [W/m^2] 
200:EVCW:Canopy water evaporation [W/m^2] 
201:ICWAT:Ice-free water surface [%] 
202:CWDI:Convective weather detection index [] 
203:VAFTAD:VAFTAD?? [??] 
204:DSWRF:Downward short wave flux [W/m^2] 
205:DLWRF:Downward long wave flux [W/m^2] 
211:USWRF:Upward short wave flux [W/m^2] 
212:ULWRF:Upward long wave flux [W/m^2] 
218:PREIX:Precip index (0.0-1.00) [fraction] 
219:TSD1D:Std. dev. of IR T over 1x1 deg area [K] 
220:NLGSP:Natural log of surface pressure [ln(kPa)] 
223:CNWAT:Plant canopy surface water [kg/m^2] 
224:SOTYP:Soil type (Zobler) [0..9] 

上記ファイルを保存し,環境変数GRIBTAB に定義しておけば, JRA25 データを wgrib でdump/decode する際にも,警告メッセージが出なくなる.

上記を作成した shell script も以下に挙げる:

#!/bin/sh
# Make GRIB table for JRA25/JCDAS
#
# See ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib/usertables.txt
#
#         1st release: June 3, 2011
#         written by M. Hayasaki (Univ. Toyama, Japan)
#source $HOME/bin/function/chk_dir_file

### Begin of user edit area
# Set reference date/time (arbitrary)
#yyyymmddHH=1979010100
yyyymmddHH=2011050118

#prefix_list=" fcst_phy2m "    # Sample
prefix_list=" anl_isentrop anl_land anl_mdl anl_p anl_snow106_mdl fcst_phy2m fcst_phyland "    # Sample
input_base=~/reanal01/reanal/JRA/grib

workdir=~/dw/tmp
work01=${workdir}/work_$$.txt
  work_list=" $work01 "

gribtab_output_path=~/JRA/util/generate_JRA25_gribtab
work_gribtab=${workdir}/jra25tab
### End of user edit area

### Step 1: Make header line for GRIB table
### Center/subcenter and table ID (between 0 and 255; -1 is a wildcard) are 
### constant parameters for the data (JRA25/JCDAS: "34", "0", and "3", respectively)
center_ID=34
subcenter_ID=0
table_ID=3
echo "-1:${center_ID}:${subcenter_ID}:${table_ID}" > ${work_gribtab}

generated_gribtab=${gribtab_output_path}/`basename ${work_gribtab}`
#if [ -f ${generated_gribtab} ]; then
#  export GRIBTAB=${generated_gribtab}
#fi

### Step 2: Scanning JRA25/JCDAS files to get a list of variable numbers
yyyymm=${yyyymmddHH:0:6}
for prefix in ${prefix_list} ; do
  input_path=${input_base}/${prefix}/${yyyymm}
  ifile=${input_path}/${prefix}.${yyyymmddHH}

### Step 2.1: Get a list of variable code number 
  wgrib_opt=" -4yr"
  code_list=`wgrib ${wgrib_opt} ${ifile} | awk  -F ":" 'BEGIN{OFS=":"}; {print $5}' | cut -d = -f 2 | sort -n | uniq`

  for code in $code_list ; do

### Step 2.2: Get a name (short-name) of variable
    wgrib_opt=" -4yr"
    name=`wgrib ${wgrib_opt} ${ifile} | awk  -F ":" '$5 ~/kpds5='${code}'/ {print $4}' | sort | uniq | head -1`

### Step 2.3: Get a comment (long-name) of variable
    wgrib_opt=" -4yr -v "
    comment=`wgrib ${wgrib_opt} ${ifile} | awk  -F ":" '$6 ~/kpds='${code}',/ {print $9}' | sort | uniq | head -1 | sed -e "s/\"//g"`

    echo "*** DEBUG: $code:$name:$comment "
    echo "${code}:${name}:${comment} " >> ${work_gribtab}
  done  # code
done  # prefix

### Step 3: Delete duplicate lines
sort -n ${work_gribtab} | uniq > ${work01}

### Step 4: Move to ${generated_gribtab}
### CAUTION: Overwrite GRIB table
  \mv ${work01}  ${generated_gribtab}
#if [ ! -f ${generated_gribtab} ]; then
#  \cp -pf ${work_gribtab}  ${generated_gribtab}
#fi

#cleanup_workfile ${work_list}

JRA25データのパスやパラメータテーブル出力先などは,各自の環境にあわせて修正するように.

このスクリプトでは,指定したデータ種(anl_p, fcst_phy2mなど) の指定日時のGRIBデータをスキャンし,変数番号などをリストアップしている. なお,このスクリプトを実行すると,同じ変数番号であるにも関わらず, 別データが定義されている場合がある.JRA25のGRIB作成時の間違いか? 変数名,コメントも2,3おかしい.

ここに掲載したのは,明白な間違いと思われる箇所を,私が手動で編集した後のものである. 編集したのは,変数番号 1, 2, 7 のみ.どこがおかしいかは,見る人が見れば明らか.

GRIB パラメータテーブル作成に関わる小ネタ

  • center 34-0 とは,WMOが定義する各国気象関連機関の識別ID. "34" が center ID, "0" が subcenter ID である.
  • wgrib -V hoge.grib とすれば, GRIB ファイルの詳細(格子点情報,データの最大・最小値など)がわかる. 上記の center ID なども,同時に表示される.
  • 34 は気象庁だと思われるが... 未確認. WMO の web もちょっと探したが,簡単には発見できなかった. まぁ,わからなくてもデータを使う分には問題無し.
  • NCAR DSS の JRA25/JCDAS ページに, GRIB ファイル内の一部パラメータの間違いが指摘されていた (JRA25 GRIB table). ページの最終更新日は2008年4月.JRA25 の関係者は知っているのだろうか?
  • 上記のスクリプトを使うと,一部のパラメータ番号が重複した. 本来ありえないと思うのだが... もしかしたら,JRA25のGRIB作成時のミスか? NCAR DSS での指摘の事もあるのでそう思ったが,私のスクリプトの処理間違い の可能性も大いにあり得る. とはいえ,これを詳細に検討するのは私の仕事ではないだろう. よろしくお願いします » JRA25関係の方

リンク