GRASSを用いた地理情報システム入門

 第9回実習です!


 第9回目は,講義で説明したマルチスペクトルを理解するために,前回ダウンロードしていただいたTM画像のバンド3とバンド4を用いて実習します.また,前回は利用しませんでしたが,その中にいれてあったDEM(地形標高データ;ただし,全域ではありません)も用います.なお,以下の実習の結果として作成される画像は,基本的に講義で紹介したものと同じです.したがって,ここでは結果を示しません.実行結果は講義の方を参照して下さい.


[GRASSの起動:基本設定は前回と同じです

 下に示したLOCATIONとMAPSET名でGRASSを立ち上げます.なお,DATABASEの/home/grassの部分は,前回と同様に各自でファイルを解凍したディレクトリ名に変更してください.また,MAPSETも同じです.

 grass5.0beta6
 
LOCATION= vuniv2000
 
MAPSET = Tm
 
DATABASE= /home/grass  (データを解凍したディレクトリのフルパス)

[画像の表示・確認]

 画像を表示します.d.monコマンドでモニターを開きます.

 GRASS 5.0beta6 > d.mon x1

 d.rastコマンドを用いて,バンド3とバンド4の画像(tmb3,tmb4)を表示してみます.

 GRASS 5.0beta6 > d.rast tmb3

[バンド比演算]

Step1.画像の型変換

 バンド比の演算結果は実数で取り扱う必要があります.しかし,配布したTM画像は整数型のため,実数型に変換する必要があります.そこで,つぎのように,r.mapcalcを用いてバンド3(tmb3)とバンド4(tmb4)の画像を実数型に変換します.変換結果はそれぞれ,tmb3.0tmb4.0とします.

 GRASS 5.0beta6 > r.mapcalc

 
mapcalc> tmb3.0 = tmb3*1.0

 
EXECUTING tmb3.0 = ... 100%
 
CREATING SUPPORT FILES FOR tmb3.0
 
range: 11 114

 
mapcalc> tmb4.0=tmb4*1.0

 
EXECUTING tmb4.0 = ... 100%
 
CREATING SUPPORT FILES FOR tmb4.0
 
range: 5 122

 
mapcalc> exit

Step2.比演算の実行

 r.mapcalcコマンドを用いて比演算を行ない,その結果の新しい画像ratioを作成します.ただし,計算結果の値が,小さいので10倍しておきます(これは後で,利用するr.scaleコマンドが,実際の値を整数化したカテゴリー値で分類するためです).

 GRASS 5.0beta6 > r.mapcalc

 
mapcalc> ratio=tmb4.0/tmb3.0*10.0

 
EXECUTING ratio = ... 100%
 
CREATING SUPPORT FILES FOR ratio
 
range: 2.1875 48.499999046

 比率の計算結果は,上の
rangeのところに表示された,2.18 48.5の範囲であることがわかります.10倍しているので,実際はおよそ0.2から4.9までの比率が得られたことになります.

Step3.カラーテーブルの割り当て

 作成した画像ratioに,r.colorsコマンドを用いてカラーテーブルを割り当てます.ここでは,『ryg』を割り当てた例を示します.rygは値の低いものから順に,赤色(r)黄色(y)緑色(g)を割り当てます.

 GRASS 5.0beta6 > r.colors

 
OPTION: raster map name
 
key: map
 
required: YES

 
Enter the name of an existing raster file
 
Enter 'list' for a list of existing raster files
 
Hit RETURN to cancel request
 
> ratio (画像名を入力する)
 
<ratio>

 
OPTION: type of color table
 
key: color
 
format: type
 
required: NO
 
options: aspect,grey,grey.eq,gyr,rainbow,ramp,random,ryg,wave,rules
 
enter option > ryg (カラーテーブル名を入力する)

 
You have chosen:
 
color=ryg
 
Is this correct? (y/n) [y] <Enterキー>

 
Enter the name of an existing raster file
 
Enter 'list' for a list of existing raster files
 
Hit RETURN to cancel request

 > <Enterキー>
 
<>

 
FLAG: Set the following flag?
 
Don't overwrite existing color table?(y/n) [n] <Enterキー>

 
FLAG: Set the following flag?
 
Quietly?(y/n) [n] <Enterキー>
 
Color table for [ratio] set to ryg

 d.rastコマンドを用いて,画像ratioを表示します.

 GRASS 5.0beta6 > d.rast ratio

Step4.特徴の抽出

 比演算の結果から,水域,土壌,植生を区分して抽出した画像を作成します.講義で説明した様に,比率の計算結果は,おおまかに,水は1より小さい値,土壌は1を少し超える値,植物では1を大きく超える数になっていることが予想されます.また,上で行なった実際の計算でも,0.2から4.8の範囲であることがわかったので,ここでは以下のように分類してみました.なお,実際はここで示したよりもより適切な値があると考えられます.

 水 :1以下      (ratioでは,10倍しているので10未満)

 土壌:1以上,1.5未満(ratioでは,10倍しているので10以上15未満)

 植生:1.5以上    (ratioでは,10倍しているので15以上)

これらの値を用いて,r.rescaleコマンドにより分類します.r.rescaleコマンドで用いたオプションは,つぎの通りです.

 r.rescale input=name [from=min,max] output=name [to=min,max]

   input=name   :入力するファイル名
   
[from=min,max] :選び出す値の範囲のカテゴリの最小値と最大値
   
output=name  :出力するファイル名(新規に作成)
   
[to=min,max]  :選び出された値の範囲を変更する場合の値の範囲の最小値と最大値

水の場合:水の範囲はratioでは10未満と想定したので,カテゴリ(整数値)としては,2(値の最小値)〜9に対応します.そこで,出力ファイル名をwaterとし,分類後の値を1として,以下のように実行します.

 GRASS 5.0beta6 > r.rescale input=ratio from=2,9 output=water to=1,1

土壌の場合:土壌の範囲はratioでは10以上15未満と想定したので,カテゴリ(整数値)としては,10〜14に対応します.そこで,出力ファイル名をsoilとし,分類後の値を1として,以下のように実行します.

 GRASS 5.0beta6 > r.rescale input=ratio from=10,14 output=soil to=1,1

植生の場合:植生の範囲はratioでは15以上と想定したので,カテゴリ(整数値)としては,15〜49(値の最大値)に対応します.そこで,出力ファイル名をvegetationとし,分類後の値を1として,以下のように実行します.

 GRASS 5.0beta6 > r.rescale input=ratio from=15,49 output=vegetation to=1,1

Step5.データの重ね合せ

 GRASSでは,多様な方法での重ね合わせが可能です.その1つの方法として,Hue(色合い), Intensity(明るさ),およびSaturation(鮮やかさ)を用いたd.hisコマンドがあります.植生と地形との関係を可視化するためにこのd.hisコマンドを用いて,画像の重ね合わせを行なってみましょう.ただし,地形をそのまま表したのでは平面的にはわかりにくいので,地形の傾斜方位(aspect)を利用します.aspectは,地形の効果を表すこのような場合に良く利用されます.aspectは以前にも説明した様に,DEM(地形標高データ)から,r.slope.aspectコマンドを用いて作成します.ただし,ここでは残念ながら全域のDEMがないため,DEMがある領域に限定して作業を進めます.なお,DEMのラスターファイル名はdemで,人工衛星画像と同じ場所に入っています.まず,作業領域の限定ですが,これには,g.regionコマンドを用います.選択する領域の範囲としてdemのラスターファイルがある領域をオプションで指定します.

 GRASS 5.0beta6 > g.region raster=dem

 これにより,demのある領域に作業が限定されました.つぎに,aspectをr.slope.aspectコマンドを用いて作成します.aspectの出力ファイルをaspとしました.

 GRASS 5.0beta6 > r.slope.aspect elevation=dem aspect=asp
 
percent complete: 100%
 
CREATING SUPPORT FILES
 
ELEVATION PRODUCTS for mapset [] in []
 
min computed aspect 0.0000 max computed aspect 360.0000
 
Color table for [asp] set to aspect
 
ASPECT [asp] COMPLETE

 つぎに,d.hisコマンドを用いて画像を作成します.Hue(色合い)に植生分布であるvegetationを指定し(h_map=vegetation),Intensity(明るさ)にaspを指定します(i_map=asp).出力ファイルをhveg+iaspという名前にします(out=hveg+iasp).Saturation(鮮やかさ)は指定しません.

 GRASS 5.0beta6 > d.his h_map=vegetation i_map=asp out=hveg+iasp
 
100%
 
CREATING SUPPORT FILES FOR hveg+iasp

 これで,ファイルが作成されると同じに画面にも出力されます.同様に,Hue(色合い)を土壌分布であるsoilに変えて,土壌と地形との関係を表す画像を作成してみます.出力ファイルをhsoil+iaspという名前にします.

 GRASS 5.0beta6 > d.his h_map=soil i_map=asp out=hsoil+iasp
 
100%
 
CREATING SUPPORT FILES FOR hsoil+iasp

 このように,重ね合せはリモートセンシングで複数の情報を可視化する際に有効な方法です.

[正規化植生指標(NDVI)]

Step1.正規化植生指標の計算

 正規化植生指標は,講義で説明したように,つぎの式から計算します.

  NDVI=(Band4-Band3)/(Band4+Band3)

この計算もやはり,r.mapcalcコマンドを用いてつぎのように求めます.なお,計算結果の出力ファイル名をndviとしました.

 GRASS 5.0beta6 > r.mapcalc

 
mapcalc> ndvi=(tmb4.0-tmb3.0)/(tmb4.0+tmb3.0)

 
EXECUTING ndvi = ... 100%
 
CREATING SUPPORT FILES FOR ndvi
 
range: -0.6410256624 0.6581196785

 比演算と同じようにr.colorsコマンドを用いて,この計算結果をrygのカラーテーブルに割り当てます.

 GRASS 5.0beta6 > r.colors map=ndvi color=ryg
 
Color table for [ndvi] set to ryg

Step2.傾斜方位と正規化植生指標の関係

 求めた正規化植生指標が地形の傾斜方位の向き(aspect)とどのような関係にあるかを簡単に計算してみましょう.傾斜方位は,東から度単位で反時計まわりに360°まであります.これを90°ごとのつぎの4つ(東西南北)の方向に分けてみます.

 東(East) -- 0〜45 と 316〜360
 北(North)-- 46〜135
 西(West) -- 136〜225
 南(South)-- 226〜315

 前に求めた傾斜方位のファイル(asp)をr.rescaleコマンドを用いて,上の4つにそれぞれ分けます.ただし,東の値は2つの範囲になるので,別々に求め,r.patchコマンドを用いて1つにまとめます.

 GRASS 5.0beta6 > r.rescale input=aspect from=0,45 output=east1 to=1,1
 
GRASS 5.0beta6 > r.rescale input=aspect from=316,360 output=east2 to=1,1
 
GRASS 5.0beta6 > r.patch input=east1,east2 output=east_slope
          (2つのファイルを1つに貼り付ける)
 
GRASS 5.0beta6 > r.rescale input=aspect from=46,135 output=north_slope to=1,1
 
GRASS 5.0beta6 > r.rescale input=aspect from=136,225 output=west_slope to=1,1
 
GRASS 5.0beta6 > r.rescale input=aspect from=226,315 output=south_slope to=1,1

 これで,それぞれ東(east_slope),北(north_slope),西(west_slope),南(south_slope)の方位のみを示すファイルがそれぞれ作成されます.正規化植生指標(ndvi)がそれぞれの地域でどうなっているかの簡単なレポートをr.reportコマンドを用いて作成します.

 GRASS 5.0beta6 > r.report -n map=east_slope,ndvi units=p nsteps=10
 
GRASS 5.0beta6 > r.report -n map=north_slope,ndvi units=p nsteps=10
 
GRASS 5.0beta6 > r.report -n map=west_slope,ndvi units=p nsteps=10
 
GRASS 5.0beta6 > r.report -n map=south_slope,ndvi units=p nsteps=10

 この結果から,傾斜の方位とNDVIの間に関係があるか考えてみましょう.また,NDVIの最大の値を示す方位を探してみましょう.

 また,ここでは説明しませんが,地形の3次元表示(実習5)で説明したd.3dコマンドを用いて,ndviを地形(dem)に張り合わせて表示してみましょう.


 第9回講義に戻る

 大阪市立大学広報のホームページ