SAILモデルについて

2004/07/07 西田顕郎

はじめに

SAILモデルはリモセンの分野における、植生キャノピーの放射伝達モデルの古典・定番です。LAIや葉の傾き分布、葉の反射・透過率、地面の反射率、日射の方位、入射散乱光の比率、観測方向などを入れると、観測される光強度が帰って来ます。内部変数として、キャノピー下での透過光などもわかります。

オリジナルの文献は、

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   4
inp.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なりエクセルなりでグラフにしてください。

注: このプログラムは、デフォルトで、葉の傾き分布を球面ランダムにしてあります。任意の傾き分布を設定するには、ソースコード内を参照してください。