最低限 Unix / Linux [II] 【6. 本日の課題】

  1. 事前準備
  1. シェル
  1. テキストエディタ
  1. シェルスクリプト
  1. [付録] データ圧縮・解凍とアーカイブ
  1. 本日の課題
  1. [付録] gnuplotについて
  1. [付録] 昭和基地における観測
情報実験第 3 回トップへ

本日の課題:シェルスクリプトの作成

本日の実習の内容+αを用いて,多数のファイルを一気に処理するためのシェルスクリプトを作成しましょう.本課題ではある場所での気象データが書かれているファイルを用いることにします.なおシェルスクリプトは, 全て自分のホームディレクトリで動かすことを前提にして作成してください. 尚, 両者の課題共に複数のシェルスクリプトを組み合わせて処理してもかまいません. その場合は使用したすべてのスクリプトを提出し, どの順番で実行したのか分かる様にMoodleに明記してください.

単位取得には以下の課題1,2全ての提出が必要です.皆さんがんばってください.

課題背景

惑星宇宙グループのS君は, 自分の研究のために南極の気象データを調べることにしました. そこでS君はまず, 2021/01/01 から 2021/12/31 までの1年分の気象データを取得し, その特徴をまとめてみることにしました. しかし1年分のデータは膨大であり整理が大変です. シェルスクリプトを使って整理を手伝ってあげましょう.

データの説明

tarアーカイブ内のファイルはYYYY-MM-DD.csvという名前になっており, それぞれの日付において現地時間午前3時(00:00 UTC)に実施された地上観測の結果です. 以下の値が","で区切られ, 水平方向に順番に書かれています.

    '現地気圧(hPa)','降水量(mm)','気温(℃)','蒸気圧(hPa)','湿度(%)','風速(m/s)',風向(16方位)','日照時間(h)','全天日射量(MJ/m**2/h)','降雪(cm)','積雪(cm)','雲量','視程(km)'

ただし, 場合によっては空欄になっていたり, '--'となっていることもあるので注意してください. 尚, 本課題で用いるデータは2021/01/01から2021/12/31まで実際に昭和基地で観測された気象データです. データは気象庁によってWeb公開されており, 誰でもアクセスして利用できます. 今回は以下のURLにて公開されているものを使用しています(https://www.data.jma.go.jp/obd/stats/etrn/index.php).

課題1

S君はまず, 観測時の風向に注目してデータを整理することにしました. 以下の処理を行うスクリプトを作成してください.

  1. 自分のホームディレクトリ直下に, 作業ディレクトリ "work" を作成し,データファイルが格納されているアーカイブファイルを "work" 内でダウンロード・解凍する.アーカイブファイルの URL は以下である: ダウンロードするには以下をスクリプト内で実行するようにすればよい.
    wget http://www.ep.sci.hokudai.ac.jp/~inex/y2023/0428/Syowa_Weather_2021.tar.gz
  2. 解凍したディレクトリ内に, 風向ごとにN,NNE,NE,...,NNW の16のサブディレクトリを作成し, それぞれのデータファイルを, 対応する風向のサブディレクトリにコピーせよ.
  3. 各風向ごとにいくつのファイルがあるか調べ, その結果を ~/work/wind_direction.csvに出力せよ.
  4. gnuplotスクリプト(spiderplot.gpl)を使用し, レーダーチャートを作成せよ. spiderplot.gplは以下コマンドでダウンロードできる. この spiderplot.gpl はグラフ描画ソフトウェア gnuplot(詳細は付録を参照のこと)の描画動作を記述したファイルである.
    $ wget http://www.ep.sci.hokudai.ac.jp/~inex/y2023/0428/spiderplot.gpl
    また, 実行する際には以下のコマンドを打てばよい. ただし, wind_direction.csvとspideplot.gplは同じディレクトリに配置する必要がある.
    $ gnuplot spiderplot.gpl
  5. 作成した レーダーチャート (Syowa_wind_direction.pdf) を firefox を用いることで画面に表示せよ.そのためには,スクリプト内で以下のコマンドを記述する.
    $ firefox Syowa_wind_direction.pdf
最後に, 作成したレーダーチャートを確認し, 2021年の昭和基地においてどの方向からの風の日が多かったかMoodle上に回答せよ.

課題2

S君は次に, 自分の実施した観測結果と気象データを比較することにしました. 手元には観測を実施した日付のリストがあります. このリストに載っている日付のファイルだけを抜き出し, 課題1と同じように, N_2,...NNW_2 の 16 のサブディレクトリを作成し, 風向ごとにそれぞれのディレクトリに分別してください. また, それぞれのファイル数を wind_direction_obs.csv にまとめ, レーダーチャートを作成するシェルスクリプトを作成してください.

  1. 各自のホームディレクトリの下に新しく~/work2/ ディレクトリを作成せよ.
  2. ~/work2/ ディレクトリ内に観測を実施した日のデータをコピーせよ.
  3. $ wget http://www.ep.sci.hokudai.ac.jp/~inex/y2023/0428/Observationlist.csv
    また, Observationlist.csv の書式は以下のようになっている.
    2021-02-11
    2021-02-22
    2021-02-26
    2021-02-27
    2021-02-28
    2021-03-02
    2021-03-03
    2021-03-07
    ...(略)
  4. ~/work2/ ディレクトリ内に N, ... NNW までの16 のサブディレクトリを作成し, ~/work2/ 内のファイルを風向ごとに対応するディレクトリに移動させよ.
  5. 各サブディレクトリ内のファイル数を調べ, wind_direction_obs.csv に出力せよ. ファイルの書式は課題1と同様とする.
  6. gnuplotスクリプトspiderplot2.gplを利用し, レーダーチャートを作成せよ. spiderplot2.gpl は以下のコマンドでダウンロードできる.
  7. $ wget http://www.ep.sci.hokudai.ac.jp/~inex/y2023/0428/spiderplot2.gpl
作成したレーダーチャートを確認し, 観測を実施した日時では, どの方向からの風の場合が多かったか調べ, Moodle上で回答せよ.

提出内容

以下のものを提出せよ.〆切: 2023年5月10日(水) 12:00


最終更新日: 2023/04/26 杉山 玄己 copyright © 2023 inex