滋賀県の面積の1/6を占める湖,琵琶湖には1級河川だけでも100個以上が流れ着きます.もっと小さな川や生活用水などを合わせれば1000個を超えるかもしれません.
そんな琵琶湖周辺の標高や傾斜だけで流域や川を計算して出してみましょう.

1.傾斜角と傾斜方向の計算

まず,標高データを用いて水平面からの傾斜と傾斜の方向を算出してみます.
使用する標高のデータは前回作成した[dem250]です.
r.slope.aspect el=dem250 sl=slope as=aspect
[slope]という名前の水平面からの傾斜と[aspect]という名前の傾斜の方向がラスター形式で作成されたと思います.

表示させてみるときに,[d.rast]のオプション[-o]を使って,オーバーレイ(重畳:重ね合わせ)させてみましょう.
d.rast dem250
d.rast -o slope
d.rast -o aspect
こうすることの意味は,次のコマンドを用いることでわかります.
d.what.rast
通常は,標高なら標高だけ,傾斜なら傾斜だけの値が表示されますが,オーバーレイされていると,一気にオーバーレイされたデータの同じ位置の値を見ることができます.

2.標高を用いた流域と河川の算出

初めに,対象地域を絞りましょう.
これは単純にマシンの性能の問題なので,高スペックのマシンの場合は大きいままでも良いかもしれません.
研究室のマシンを使用する場合は,そんな事はしないでください.
d.zoom
コマンド[d.zoom]は拡大縮小をするためのコマンドですが,モニターに表示されている区画だけで計算を行うことができます.つまり,モニターに表示されていない地域は計算の対象外になるので,使用する際は注意が必要です.

対象領域を絞ったら,さっそく標高データから流域と河川の算出をします.
r.watershed el=dem250 th=100 ba=ba100 st=st100
コマンド[r.watershed]はあるセルとその周囲のセルとでデータを比較し,流域や川を計算するコマンドです.
このとき,どの程度の細かさで計算をするのか指定できます.オプション[th(reshold)]がその細かさを指定するためのコマンドです.これにはメッシュの数を入力します.
th=100の場合,「2.5*2.5km=6.25km2のエリアで計算する」という意味になります.(セルの1辺の長さが約250mです)
例として,長浜周辺にデータを絞った場合の[ba100]と[st100]を表示します.また,以下の作業も同じエリアで行っています.

3.ラスターデータのベクター化

2.で作成した[st100]は標高から計算した河川のデータです.このデータはラスターで作成されましたが,実際の河川を考えた場合,ベクターデータの方が都合が良いでしょう.そこで,この[st100]をベクター化しましょう.

まず,再線化をします.
[st100]の画像を見てみてもわかるように,計算された河川は同じ流れでも違う色で表示されています.しかし,地図などで見る河川は多くの小川から水が流れては来ますが,それらも全部ひっくるめて1つの川です.そこで,再線化をしてくっついているラインを同じ色(グループ)で表示させます.
r.thin in=st100 out=st100t
すると,下のような表示に変わると思います.是非,2.の[st100]とこの[st100t]を見比べてみてください.

では,いよいよベクター化します.
ラスターデータからベクターデータに変換するには[r.to.vect]を用います.
r.to.vect in=st100t out=st100
すると,[st100]という名前のベクターデータが作成されたと思います.[g.list vect]を用いて確認してみてください.

また,2.で作成したラスター[ba100]と今回作成したベクター[st100]を重ね合わせてみます.
ラスターデータ同士の重ねあわせではオプション[-o]が必要でしたが,ベクターデータの重ねあわせでは必要ありません.
通常通りに[d.rast]と[d.vect]を使用してください.
その結果は下のようになります.


タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2007年04月27日 07:20