#topicpath RIGHT:更新 : 2013-05-15 (水) 19:15:16 * 出力結果の処理あれこれ [#j62e8b64] - 目次 -- [[WRF の出力結果を描画することについて>#ncf2038e]] -- [[ARWpost + GrADS>#b3666010]] -- [[R + netCDF>#a6cf8dc5]] -- [[ncview>#b20cc51d]] -- [[netCDFファイルの扱い>#ob0dc232]] --- [[nco によるファイルの分割>#d0b78a68]] ~ ~ ** WRF の出力結果を描画することについて [#ncf2038e] - 出力データの概要~ 出力データは、"&color(darkred){netCDF};" (Network Common Deta Form) という形式で出力される。~ そこで、netCDF 形式のデータが扱えるソフトであれば処理や描画ができる。~ ~ [[ARWの User's Guide>http://www.mmm.ucar.edu/wrf/users/docs/user_guide_V3/ARWUsersGuideV3.pdf]] ([[Chapter 9>http://www.mmm.ucar.edu/wrf/users/docs/user_guide_V3/ARWUsersGuideV3.pdf#page=281]]) には、いくつかの 処理ソフトが紹介されている。~ -- &color(darkred){NCL}; (User's Guide 9-2〜)~ NCAR Graphics Command Laguage。NCAR で開発されているので、WRF とも相性がいいと予想される。独自のコマンド体系で描画する。~ NCAR Graphics (NCARG)は以前使ったことがあるけど、全然違う印象を受ける。~ ~ -- &color(darkred){RIP4}; (User's Guide 9-20〜)~ これも NCAR Graphics に基づいた対話型のソフトウエア。WRF が MM5 として開発されていたころから描画ように使われていたようである。~ ~ -- &color(darkred){ARWpost}; (User's Guide 9-29〜)~ 気象でよく用いられる GrADS でデータを扱うことが出きるようにするためのコンバータ。~ ~ -- &color(darkred){UUP}; (User's Guide 9-36〜)~ NCEP Unified Post Processor。以前は WPP (WRF Post Processor)。GEMPAK, GrADS などで描画する必要がある?~ ~ -- &color(darkred){VAPOR}; (User's Guide 9-59〜)~ Visualization and Analysis Platform for Ocean, Atmosphere, and Solar Researchers。3次元表示が得意なようである。~ ~ ** ARWpost + GrADS [#b3666010] - 導入目的(余談)~ netCDF データは自己記述型のデータである。そこで、netCDF データを入手し、適当な描画ツールを用いれば、どの ような変数が、どのような配列として格納されているか、知ることができ、そうした情報を元に、描画すればよい。 …と思うと、そんなことはなく、WRF ARW の出力ファイルは、netCDF ファイルでありながら、どの変数が何を意味 しているのか、正確なところはソースを読み込む必要があることが多い。具体的に、個人的には、変数 T で困った。 こうしたことを、WRF の達人に聞いたところ、ARWpost を使って、GrADS で描画するのがいいと勧められた。GrADS は プログラミング環境として貧弱なので、できるだけ使いたくなかった。しかし、このような状況では致し方ない。 使ってみることにした。 ~ - 環境整備 -- 導入パッケージ~ --- grads - インストール~ 入力した部分を -> で示す。 -> $ ./configure ** WARNING: No path to NETCDF and environment variable NETCDF not set. ** would you like me to try to fix? [y] -> y Enter full path to NetCDF include directory on your system -> /usr/include Enter full path to NetCDF library directory on your system -> /usr/lib … ------------------------------------------------------------------------ … 3. PC Linux i486 i586 i686 x86_64, gfortran compiler … Enter selection [1-3] : 3 … -> $ ./compile … ~ - 実行~ 適切な namelist.ARWpost を作成してから実行する。~ ~ - 注意~ どうやら、gfortran ではうまく動かないらしい。少なくとも私の環境ではうまく動かなかった。~ [[WRFのフォーラムにも記述>http://forum.wrfforum.com/viewtopic.php?f=30&t=3234]]があり、どうやら解決していないらしい。~ 残念!~ ~ ~ ** R + netCDF [#a6cf8dc5] - 環境整備~ -- 導入パッケージ~ --- r-base~ 統計パッケージ R の基本的なパッケージがまとめて入る。~ ~ --- ncdf~ netCDF のためのパッケージ。一般的に、導入方法は二つある。root で次の作業のどちらかを行う。~ CRAN サイトからパッケージのソースをダウンロードして、root で umask 022 としてから R CMD INSTALL ncdf_1.6.6.tar.gz ここで、 configure: error: netcdf header netcdf.h not found と表示されてうまくいかなければ R CMD INSTALL --configure-args="--with-netcdf-include=/usr/include" ncdf_1.6.6.tar.gz とする。root で R を立ち上げて、 > install.packages("ncdf") とする方法もある。~ ※ 実行後は、/usr/local/lib/R/site-library/ncdf/ をチェック!パーミッションが正しくないと使えない。~ ~ - 簡単な描画~ 典型的には、R の起動後、次のようにする。 > library(ncdf) > nc <- open.ncdf("wrfout_d01_2007-09-01_00:00:00") > print(nc) > filled.contour( get.var.ncdf(nc, "P") [,,1,3]) ※ print(nc) で、格納されている変数名がわかる。~ ~ ** ncview [#b20cc51d] とりあえず使うには重宝する。 -- debian で配布されるパッケージの説明~ 説明: NetCDF 形式のファイル用の視覚的な X11 向けブラウザ ncview を使うと、素早く簡単にボタンを押すだけで NetCDF ファイルを見ることが できます。データの単純な動画の表示、さまざまな次元での表示、実際のデータの 値の表示、カラーマップの変更、データの反転や他の単純な視覚的操作ができま す。 ~ -- 関連ページ --- [[ncview ホームページ>http://meteora.ucsd.edu/~pierce/ncview_home_page.html]]~ ~ ** netCDF ファイルの扱い [#ob0dc232] *** ncdump によるファイル情報の表示 [#m5a50c55] -- ncdump とは~ Debian の netcdf-bin パッケージに含まれるコマンドです。~ とりあえず netCDF ファイルの情報を出力するのに便利です。~ netCDF ファイルの次元や変数などの情報の一覧を表示するには ncdump -c ファイル名 とします。~ ~ *** NCO によるファイルの分割 [#d0b78a68] *** NCO による netCDF ファイルの分割 [#d0b78a68] - ファイル分割が必要な理由~ そもそも、計算結果は膨大になります。特に3次元計算の場合はそうです。そこで、ついうっかり、~ 長時間の計算結果を一つのファイルにまとめてしまうと(それは決して間違った方針ではないと~ 思われるけれども)、例えば R では処理できなくなってしまいます。そこで、ファイルを分割す る必要が出てきます。~ ~ - NCO とは~ netCDF Operators から命名されたコマンド群。詳細は、[[NCO のホームページ>http://nco.sourceforge.net/]] 参照のこと。~ Debian で nco パッケージを導入すると、複数のコマンドが導入されます。~ ~ - ファイルの分割方法~ ncks コマンドを使って次のようにします。 ncks -d Time,0,10 -v T wrfout_d01_2000-01-10 T.nc ここで、引数はそれぞれ、 -- -d 以下では、次元 "Time" について 0 〜 10 まで出力すること -- -v 以下では 変数名 "T" について出力すること -- "wrfout_d01_2000-01-10" は切り出したいデータを含んだファイル名 -- "T.nc" は切り出したものを格納するファイル名~ を表しています。