オリジナルの文献は、
Verhoef, W., 1984, Light scattering by leaf layers with application to canopy reflectance modeling: the SAIL model. Remote Sensing of Environment, 16, 125-141.です。
Note: 以下、プロンプトを$で表すので、以下の説明で、$は打ち込まなくてよい。
Note: #は管理者(ルート)のプロンプトを表す。これも打ち込まなくてよい。
よろしければダウンロードしてsail.cという名で保存し、コンパイルして使って下さい。
1. コンパイル
Linuxなどの場合は、そのまま、
$ gcc sail.c -lm -o sail
でコンパイルできます。
Windowsの場合は、まずCygwinをインストールして、Cygwinを走らせて、その上で、上記のコマンドを実行して下さい。
2. 使い方
$ ./sail -help
とすれば使い方が出てきます。要するに、標準入力から、
直達光率 散乱光率 太陽天頂角(度) 観測方向天頂角 太陽方位角と観測方位角の差 葉の反射率 葉の透過率 地表反射率 LAI
を入れるだけです。
つづけて何パターンもの計算をしたいときは、例えば以下のようなファイルを作って....
0.8 0.2 40 0 0 0.20 0.20 0.100 4 0.8 0.2 40 10 0 0.20 0.20 0.100 4 0.8 0.2 40 20 0 0.20 0.20 0.100 4 0.8 0.2 40 30 0 0.20 0.20 0.100 4 0.8 0.2 40 40 0 0.20 0.20 0.100 4 0.8 0.2 40 50 0 0.20 0.20 0.100 4 0.8 0.2 40 40 0 0.20 0.20 0.100 4 0.8 0.2 40 70 0 0.20 0.20 0.100 4 0.8 0.2 40 0 0 0.47 0.47 0.300 4 0.8 0.2 40 10 0 0.47 0.47 0.300 4 0.8 0.2 40 20 0 0.47 0.47 0.300 4 0.8 0.2 40 30 0 0.47 0.47 0.300 4 0.8 0.2 40 40 0 0.47 0.47 0.300 4 0.8 0.2 40 50 0 0.47 0.47 0.300 4 0.8 0.2 40 40 0 0.47 0.47 0.300 4 0.8 0.2 40 70 0 0.47 0.47 0.300 4inp.sailとか適当な名前をつけて、
$ ./sail <inp.sail とすればOK。
出力は、
Dir Dif SZ VZ VA Ref Trs GREF LAI Eu_top Eo_top Ed_bot Es_bot Ed+Es_bot
の順に1行で表示されます。このうち、
Dir Dif SZ VZ VA Ref Trs GREF LAI
は、上で述べた入力パラメータがそのまま出てくるだけ。
Eu_top: キャノピー上端から全方位に出てくる、散乱反射強度
Eo_top: キャノピー上端から観測方向に出てくる強度
Ed_bot: キャノピー下端での、下向き直達光
Es_bot: キャノピー下端での、下向き散乱光
Ed+Es_bot: Ed_botとEs_botの和、すなわち、キャノピーの透過光
たとえば上の入力で計算させた結果は下記のようになります:
#Dir Dif SZ VZ VA Ref Trs GREF LAI Eu_top Eo_top Ed_bot Es_bot Ed+Es_bot 0.8 0.2 40 0 0 0.20 0.20 0.10 4.00 0.107 0.083 0.037 0.058 0.095 0.8 0.2 40 10 0 0.20 0.20 0.10 4.00 0.107 0.088 0.037 0.058 0.095 0.8 0.2 40 20 0 0.20 0.20 0.10 4.00 0.107 0.093 0.037 0.058 0.095 0.8 0.2 40 30 0 0.20 0.20 0.10 4.00 0.107 0.099 0.037 0.058 0.095 0.8 0.2 40 40 0 0.20 0.20 0.10 4.00 0.107 0.106 0.037 0.058 0.095 0.8 0.2 40 50 0 0.20 0.20 0.10 4.00 0.107 0.114 0.037 0.058 0.095 0.8 0.2 40 40 0 0.20 0.20 0.10 4.00 0.107 0.106 0.037 0.058 0.095 0.8 0.2 40 70 0 0.20 0.20 0.10 4.00 0.107 0.134 0.037 0.058 0.095 0.8 0.2 40 0 0 0.47 0.47 0.30 4.00 0.519 0.447 0.319 0.058 0.377 0.8 0.2 40 10 0 0.47 0.47 0.30 4.00 0.519 0.457 0.319 0.058 0.377 0.8 0.2 40 20 0 0.47 0.47 0.30 4.00 0.519 0.472 0.319 0.058 0.377 0.8 0.2 40 30 0 0.47 0.47 0.30 4.00 0.519 0.490 0.319 0.058 0.377 0.8 0.2 40 40 0 0.47 0.47 0.30 4.00 0.519 0.511 0.319 0.058 0.377 0.8 0.2 40 50 0 0.47 0.47 0.30 4.00 0.519 0.534 0.319 0.058 0.377 0.8 0.2 40 40 0 0.47 0.47 0.30 4.00 0.519 0.511 0.319 0.058 0.377 0.8 0.2 40 70 0 0.47 0.47 0.30 4.00 0.519 0.579 0.319 0.058 0.377これは、直達光80%の条件で、太陽天頂角40度のとき、LAI=4の群落について、観測角をいろいろ変えたときにどのように反射光が観測されるかを、可視と近赤外のそれぞれの典型的なケースについて計算したものです。
こういうふうなグラフにするには、まず出力をテキストファイルに出したいものですが、それは下記のようにすればOK:
$ ./sail < inp.sail > out.txt
あとはgnuplotなりエクセルなりでグラフにしてください。
注: このプログラムは、デフォルトで、葉の傾き分布を球面ランダムにしてあります。任意の傾き分布を設定するには、ソースコード内を参照してください。