(農業)情報工学・課題 (2019/10/17)

水稲の生育ステージ予測プログラムの作成(1)JSVersion

積算温度とは
今回は、水稲の生育ステージを予測するプログラムを作成する。基本とする考え方は、<積算温度>モデルである。
積算温度(積算気温)とは、一定期間の気温(平均気温)の合計値のことである。例えば3日間の平均気温がそれぞれ15℃、20℃、18℃であった場合、15+20+18=53℃ となる。
植物の積算温度モデルとは、この積算温度の値が一定値を上回った場合に、生育ステージの変化が起こるという考え方である。言い換えれば、一定の温度以上の日が数日(〜数十日)継続すると、生育ステージが次の段階に進むという考え方である。この考え方は、例えば桜の開花予想などにも良く利用されている。イネの栽培の場合、定植(田植え)後の積算温度によって、出穂(しゅっすい)日と、登熟(収穫)日を予測する手法が多く用いられている。
ただ、この積算温度についても、ある一定の温度(例えば15℃)以下では生育に寄与しないという考えから有効積算温度(15℃以上の気温部分についてのみ積算する)という考え方や、35度などといった高すぎる温度では、かえって生育にマイナスの要因になるとして、高温部での温度の寄与が低めになるような3次式を用いた積算温度モデル、などのバリエーションもある。また、成長率を気温による指数関数で表し、DVR(DeVelopment Ratio)を求め、その数値を積算して、DVI(DeVelopment Index)という数値を求めるDVIモデルという方式も広く使われている。
興味のある人は、インターネットなどで調べてみると良い。 DVIとDVR
また、単純積算温度モデルの場合であっても、幼苗期に低温に晒されると生育障害が発生したり、登熟期の低温で「イモチ」病にかかったり、不稔(結実不能)になったりと、さまざまな影響が考えられる。しかし、そういった効果のモデル化は基本モデルが完成してから追加してゆくこととしたい。(次回以降)

今回の課題で取り扱うのは「単純積算温度モデル」とする。
代表的な品種である「コシヒカリ」を考えると、田植えからの積算温度が1700度で出穂し、その後さらに1000度の積算温度が追加されると登熟が完了して、収穫可能となる。
具体的な計算の流れは次のようになる。
プログラムの動作
今回の課題プログラム(Calc01.htmlの説明)PDFファイルは、次のような動作を行う。
- 課題プログラムの説明 :
  1. HTMLとしての設定
  2. ファイル指定ボタン、実行ボタン、ファイル内容表示ボタンの配置
  3. 初期設定(地域・品種データ・定植日の指定)
  4. 実行ボタンクリック時の動作指定(関数定義)
  5. 共通情報の表示関数の呼び出し
  6. 気温データの読み込み(ファイル入力)関数の呼び出し
  7. ファイル読込関数の定義:この中でシミュレーションの実行
  8. 積算温度の計算・出穂日、登熟日の決定
  9. シミュレーション結果の出力
  10. 画面表示関数定義
  11. 共通部分の表示関数定義
  12. ファイル内容の表示関数
  13. 計算結果の表示関数定義
  14. 終了
課題プログラムは、8. 積算温度の計算ー出穂日・登熟日の決定部分が未完成である。
該当部分は、// 本日の課題作成部分(出穂日と登熟日の計算)。 となっている。
つまり、本プログラムの計算部分が、未完成のままにしてあるので、このまま実行すると、出穂日・登熟日はUndefinedのままとなってしまう。
この重要な部分を、各自、自分でプログラミングし、実行して提出することが課題である。 参考部分に出穂日の計算プログラムの一例を掲載しているので、参考にして実装(プログラミングして機能を実現すること)してほしい。
プログラムで用いられている主要な変数名とその意味は、以下の通りである。

Variables in Calc01.html
変数名変数型説 明備 考
varietyStirng品種名constで指定
taueDateInteger田植え日(日付連番)constで指定
targetEarTempSumFloat出穂に必要な積算温度constで指定
targetToujukuTempSumFloat登熟に必要な出穂後の積算温度constで指定
meteo[date]Float.Arraydate日目(日付連番)の平均気温
366日型で提供
気温ファイルから読込
Temp25.txt
shussuiDateInteger出穂日(日付連番) 計算して推定する
toujukuDateInteger登熟日(日付連番) 計算して推定する
currentEarTempSumFloat積算気温1の作業用
targetEarTempSumと比較
計算中に利用
currentToujukuTempSumFloat積算気温2の作業用
targetToujukuTempSumと比較
計算中に利用

気温ファイルは、次のような構造をしている。(366日型:2月29日のデータもある)
Temp25.txt
行番号読込時数値説明
1meteo[0]4.51月1日の平均気温(以下、計算で利用)
2meteo[1]4.41月2日の平均気温
----------
meteometeo[365]4.412月31日の平均気温

<課題ファイルへのリンク:適当な場所(デスクトップなど)にフォルダ(Rice01など)を作成して2つとも保存する>
課題プログラム(ソースコード) Calc01.html
気温ファイル(滋賀県) : Temp25.txt
今回のCalc01.htmlをダブルクリックすると、自動的にデフォルトのブラウザが開き、実行出来る。

ブラウザの設定
プログラムはJavaScriptで作成する。
JavaScript とは、Netscape Communications 社が開発した、オブジェクト指向のスクリプト言語である。他の言語と比べてクライアント側(手元のコンピュータ上)で動作するという大きな特徴がある。また、ブラウザだけがあればプログラムの開発と実行ができて、特別なソフトウェアを準備する必要が無い点は大きな利点である。
JavaScriptは、ブラウザ上で実行するプログラム言語である。実際にJavaScriptのコードを開発するには、ブラウザに付属の「開発ツール」を利用する。開発ツールを使えば、JavaScriptの「コンソール」を利用する事ができて、エラーのチェックなどが出来る。具体的には、次のように呼び出す。
プログラムの作成

環境整備
Calc01.htmlの編集にはエディターを用いる。東大の環境で標準となっているのは、テキストエディットであるが、できればプログラミングに適したエディターを利用したい。括弧() {}の対応や、一致する変数名の表示など、利点が多い。
東大のECCSで備えているエディターとしては、miがあるが、可能なら、VScodeなどを利用したい。
VScodeのインストール後は、日本語メニューを利用し、JavaScriptのパッケージを利用する。手順は、次の通りである。
  1. VScodeのダウンロード(ダウンロード終了後にZIPファイルの解凍が自動的に行われるが、かなり時間がかかる(3〜5分程度?)ので、気長に待つこと。)
  2. 解凍が終了したら、Visual Studio Codeのプログラムを開く。
  3. Extend(2重の四角アイコン)で、Japaneseを検索。Japanese Language Pack for Visual Studioをインストール。
  4. カスタマイズのツールと言語でJavaScriptをインストール。
  5. エクスプローラーで、デスクトップのフォルダRice01(この中にCalc01.htmlとTemp25.txtが入っている)を指定する。
詳しいVScodeのインストールと使い方は、ここなどを参照すること。

今回の課題
今回の課題は、 を、ITC-LMSの課題として、提出することである。健闘を祈る。

JavaScriptの基礎(文法)
超簡略JavaScript文法(pdf)

参考:HTMLの基礎
HTMLの基礎
参考リンク: