「マスク」と聞いて,何を想像しますか?
人によって様々でしょうが,結局は何かを隠すためにマスクを使います.
マスクを使う事によって,限られた地域だけに対象を絞ることができますし,不必要な地域を見えなくすることで上手に解析ができる場合があります.
今回は,琵琶湖と滋賀県のマスクを作成します.
まず,作業ディレクトリ[Biwa]に[cd]で入ってください.
1.琵琶湖の部分にマスクをかける
琵琶湖の位置情報を作業ディレクトリ[Biwa]内にコピーします.
cp /home/kaoru/GIS2/LakeBiwa/{biwa.bin,lake.ll} .
複数のデータをコピーする場合は中括弧{}でくくります.
もちろん,コピーするときだけではなく,複数のデータを取り扱うときには中括弧が使える場合があります.
では,GRASSを起動してください.
grass60
先ほどコピーしたデータの内,[biwa.bin]をラスター形式で取り込みます.
r.in.bin in=biwa.bin out=biwa by=2 n=36N s=34:40N e=137E w=135E r=640 c=640
d.rast biwa
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (align=center)
このデータの中身を知るために,[d.what.rast]を使います.
d.what.rast
すると,データの黄色で表示された部分が[0],赤い部分が[1]という値であるということがわかりました.
それでは,ラスターデータ[biwa]の琵琶湖の部分をnullに,琵琶湖以外の部分を1に,その値を変えます.
値を変えるには[r.reclass(再分類)]というコマンドを使います.
r.reclass in=biwa out=biwa_mask
[help]を入力すると,再分類の書き方が表示されるので,それを参考にして記入してみてください.
今回は[0]の部分を[1]に,[1]の部分を[null]にしたいので,次のように書きます.
0 = 1
1 = NULL
end
最後に[end]を入力し,[Enter]キーを押すと,新しく[biwa_mask]というラスターを作成して再分類されます.
では,表示してみましょう.
d.rast biwa_mask
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (align=center)
[d.what.rast]を用いて,ラスターの値を確認してみてください.
GRASSでは,[MASK]という名前のラスターデータを作成すると,自動でマスクをかけてくれます.
そこで,先ほど作成した[biwa_mask]をコピーし,[MASK]という名前をつけます.
g.copy rast=biwa_mask,MASK
ラスターデータのリストを見て,[MASK]が作成されているのか確認してみてください.
g.list rast
また,実際に,マスクをかけるとどのように表示されるのかを確認してみましょう.
d.rast dem250
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (align=center)
上図のように,琵琶湖の部分がすっぽりとくりぬかれているのがわかると思います.
ラスターデータはマスクをかけることができましたが,ベクターデータはどうでしょうか?
ベクターデータ[st100]を表示させてみてください.
d.vect st100
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (align=center)
ベクターデータにはマスクがかかっていないことがわかりました.
GISの情報としてのベクターデータはただ計算するだけではなく,デジタイズし,属性情報を整備する必要があります.
digitize + attribute => vecter
デジタイズは来週することにして,今回はラスターのみを扱います.
元の状態に戻すには,[MASK]を削除すればよいので,[g.remove]を用います.
g.remove rast=MASK
マスクをかけたときと同じように,今度はマスクがかかっていないことを確認してみてください.
d.rast dem250
上の図を見てわかるように,ベクターデータはラスターデータとは違い,マスクがかけられた状態になっていません.
琵琶湖上のデータを削除するためにはデジタイズする必要があります.
2.滋賀県のマスクを作成する
1.と同じように,滋賀県の位置情報をコピーし,GRASSに取り込みます.
cp /home/kaoru/GIS2/LakeBiwa/shiga.bin .
r.in.bin in=shiga.bin out=shiga_bound by=2 n=35:45N s=34:40N e=136:30E w=135:45E r=520 c=240
d.rast shiga_bound
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (align=center)
では,ラスターデータの値を見てみましょう.
d.what.rast
すると,黄色が[0],緑が[1],紫が[3]であることがわかりました.
そのため,滋賀県の県境と中身を[1]に,滋賀県以外を[null]に再分類します.
r.reclass in=shiga_bound out=shiga_mask
1 3 = 1
0 = NULL
end
作成した[shiga_mask]を表示させてみると,下図のようになります.
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (align=center)
では,この[shiga_mask]を使って,マスクをかけてみましょう.
g.copy rast=shiga_mask,MASK
d.rast dem250
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (align=center)
上図のようになればOKです.
3.滋賀県内かつ琵琶湖以外の領域のみ表示させる
1.と2.で作成したマスクを同時にしてみましょう.
[MASK]は1つしか作れないので,[biwa_mask]と[shiga_mask]が一緒になったデータを作成する必要があります.
そこで,ラスターデータ同士を足したり引いたりして,新しくラスターデータを作成することができます.
そのためには,コマンド[r.mapcalc]を用います.
r.mapcalc
上のように入力すると,[mapcalc>]という入力画面が表示されます.
下のように,作成するデータをイコールの左に書き,そのための式をイコールの右に書きます.
mapcalc> shiga_biwa_p = shiga_bound + biwa
mapcalc> end
これも,[r.reclass]と同じように,最後に[end]を入力して終わってください.
では,どうなったのか確認してみましょう.
d.rast shiga_biwa_p
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (align=center)
今までと同じように,[r.what.rast]を用いて,それぞれの色の値が何であるのか確認してみてください.
では,再分類をします.
滋賀県の外側[0]と琵琶湖の内部[4]を[null]に,滋賀県の県境[1]と滋賀県の中身かつ琵琶湖ではない部分[3]を[1]にします.
r.reclass in=shiga_biwa_p out=shiga_biwa_mask
0 4 = NULL
1 3 = 1
end
d.rast shiga_biwa_mask
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (align=center)
上図のようになればOKです.
では,この[shiga_biwa_mask]を使って,マスクをかけてみます.
g.copy rast=shiga_biwa_mask,MASK
d.rast dem250
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (align=center)
上図のような結果になると思います.
以上で,マスクのかけ方・はずし方をおわります.
最終更新:2007年05月08日 19:17