2014年6月16日月曜日

Visibility on SAGA GIS

SAGA GISの機能で、特定の地点からどこの場所が見ることができるか計算するモジュールがあります。このモジュールを使えば、たとえば特定の山からどの範囲が展望できるかわかります。利用するモジュールは、Terrain Analysis – Lighting, Visibility / Visibility (Single Point) [Interactive]です。

いつも通り、DEMのグリッドを指定します。

image

実行すると、下のメッセージに、”Interactive module execution has been started” と表示されます。Interactiveのモジュールは、計算起点等を指定してやる必要があります。地図を表示し、地図の上の矢印(Action)ツールで、地図の適当な地点を選択すると、計算が始まります。

image 

一回のクリックで一か所からのVisibilityが計算され、再び待機状態になるので、Moduleメニューから、Visivility モジュールを停止させます。

image

Visivilityグリッドが作成されるので、地図に重ねてみます。

image

白くなっているところが、選択した箇所から見えるところです。3D表示すると以下の通り。

image

できました。

2014年6月14日土曜日

ImageMagickでGIFアニメーション

SAGA GISでの3D表示機能には、任意の視点をつなげた鳥瞰図をアニメーション表示する機能があります。SAGA GISではそれらを連続したスナップショットとしてpng出力ができるので、これをImageMagickでGIFアニメとして結合します。

まずは、出力されたpng画像をそのままつなげるとサイズが大きくなるのでリサイズします。

convert out*.png -resize 50% resize_%06d.png

新しくサイズが半分になったpngが作成されます。これを、以下のコマンドでGIFアニメーションに変換します。

convert -delay 5 -loop 0 resize_*.png movie.gif

できました。

movie

2014年6月11日水曜日

Watershed Basin in SAGA GIS

Sink Removal SAGA GISで、集水域図を作成しました。Saga Users Guide vol.2を参考に。

使うツールは以下の通り

  • Terrain Analysis - Preprocessing/Sink Removal
  • Terrain Analysis – Hydrology/Catchment Area(Parallel)
  • Terrain analysis – Channels/Channel Network
  • Terrain analysis – Channels/Watershed Basins

作業の流れとしては、1)DEMから窪地を削除、2)各セルにおける集水面積の計算、3)河川流路の作成、4)集水域グリッドの作成といった感じです。

データは、ASTER GDEMを利用しましたが、面積の計算等があるため、プロジェクションはUTMに変換して置きます。

Sink Removal

ModuleのTerrain Analysis - Preprocessing内にあるSink Removalツールにより、標高グリッドから窪地を削除します。ツールを選択すると、Decriptionに概要が表示される。このツールはグリッドを指定すると、窪地を埋めたグリッドを出力します。また、Thresholdを指定すると、どれくらいの標高差まで乗り越えを許容するか指定できます。

image

標高グリッドを指定して実行します。実行すると、河川が流下できるように、窪地や山岳地域で沢がうまく流下できない箇所が、埋められます。下の図は、左が処理前、右が処理後です。

image

湖周辺部や、火口も以下のように埋められます。

image

 image

 

Catchment Area(Parallel)

上で作ったグリッドに対し、各セルへの集水面積が入ったグリッドが作成されます。利用するのは、Terrain Analysis – Hydrology/Catchment Area(Parallel) です。標高データとしては、先ほど作成したno sinkのグリッドを指定します。

OptionのMethodでは、河川の流れがDEMの中でどう流れる仮定をするか設定できます。 河川の分岐を許可するかどうかや、流下方向を8方位に限定するか、などが指定できます。どの仮定を用いるかは、やってみて不自然でないものを選べばよいようです。

image

実行結果すると、それぞれのセルにそのセル自身の面積とそのセルの常流側に位置するセルの合計の面積が入力されます。色づけを調整(Logarithmic(up) 10000)して、Hillshadingレイヤを重ねて表示してみると、以下のようになります。

image

さらにズームして、セルに入っている値を表示すると、各セルの値が確認できます。

image

 

Channel Network

Sink RemovalとCatchment Area(Parallel)を用いて作成したグリッドにから、河川ネットワークのグリッドとシェープを作製します。モジュールは、Terrain Analysis – Channels / Channel Networkのモジュールを利用します。

Initiation Gridには、河川が始まる起点を指定します。今回は、集水域が1km以上になったら、河川が発生すると仮定します。Initiation GridにCatchment Area(Parallel)で作成したグリッドを指定し、Greater than 1000,000とします。また、最短河川長をセル数として与えます。今回は10としました。

image

実行すると、河川ネットワークを表したグリッドとシェープ、各セルの流下方向を示したグリッド、が作成されます。

image

グリッドの各セルには、河川の識別番号が与えられ、各河川の合流点には-1が与えられます。下の図は河川ネットワークのグリッドとシェープを重ねて表示しました。河川9と河川1が各端点-1のグリッドで合流して河川10になっています。

image

Watershed Basins

Terrain Analysis – Channels / Water Shed Basinsモジュールを使って、これまで作成したグリッドから集水域を作成します。標高グリッドと、先ほど作成したChannel Networkを指定します。

image

OptionのMin. Sizeは、最少集水面積をセルの数で指定します。今回は1000セルとしました。

image

できました。

2014年6月8日日曜日

SAGA GISでのグリッドの計算

複数のグリッドを用いて、計算を行います。
今回は一番簡単な二つのグリッドの差分を取る計算をします。Water Basinを作成する際に作成したfill sinkを行ったDEMと、オリジナルのDEMを比較しました。
モジュールは、Grid – Calculation / Grid Defference を利用します。
窪地を埋められたDEMをA、オリジナルのDEMをBとして指定します。
image
差分のグリッドが出力されました。色をGraduated Colorでwhite-Redに指定し、陰影図と重ねてみました。
image
オリジナルと比べると、どこがどれくらい埋められているかよくわかります。
image

2014年6月6日金曜日

SAGA GIS 3D View 2

前回、3D Viewが失敗してしまいましたが、座標系が緯度経度であったため、できなかったみたいです。UTM座標へ変換したら、表示されました。
image
3D表示をやめるには、地図を右クリックし、Show 3D Viewのチェックを外します。
image
デフォルトの設定では荒いので、3Dの設定画面のResolusionを1000くらいにしてみます。
image
image
きれいになりました。
また地形を強調するため、縦に引き伸ばします。
image
この右から3つ目のアイコンで、強調されます。
image
そのほか、赤青メガネで立体視できる画像を作ったり、
image
ムービーもつくれます。
movie

2014年6月4日水曜日

SAGA GISでCRSの変更

TASTER GDEMはWGS84/EGM96で作成されている緯度経度座標のデータのため、これをUTMに変換します。
DEMをSAGA GISに読み込みます。
変換に用いるのは、Projection – Proj.4 のProj.4 (Dialog, Grid)モジュールです。
モジュールを起動すると、変換元(Source)と変換後(Target)のCRSを指定するダイヤログが出てきます。
image
Source Projection Parameters の28 Parameters …をクリックすると、変換元のCRSの詳細を入力するダイヤログが現れます。
変換元のProjectionをlat/long(Geodetic)、DatamをWGS84と指定します。
image
OKを押すと、ひとつ前のダイヤログにもとるので、次にTarget Projection Parameterを指定します。今回はUTMに変換するので、UTMを指定します。
image
OKを押すと、再度元のダイヤログに戻ります。
image
プロジェクションの設定ができたため、OKを押すと、変換後のUTMゾーンを聞かれるため、該当するZONE 54を指定します。
image
OKを押します。
グリッドを描写する空間の設定が聞かれます。
image
OKを押すと、変換が開始されます。
image
ワークスペースに、新しいグリッドが作成されました。
image

2014年6月2日月曜日

SAGA GIS 3D View

前回作った陰影図をSAGA GISで3D表示してみます。
3D表示をするのは、3Dと書かれたアイコンをクリックするだけ。
image
DEMを指定するダイヤログが出てくるので、指定します。ほかのパラメータはデフォルトのままで大丈夫です。
image
すると、、、
image
あれ、失敗です。

2014年6月1日日曜日

Ubuntuでキーの入れ替え

Ubuntu 14.04をインストールしたので、まずはキーボードのカスタマイズを行いました。
ネットで検索すると、GUIによる設定もできると書かれていましたが、14.04にはそのメニューがなかったので、設定ファイルによる変更を行いました。

参考
http://d.hatena.ne.jp/adragoona/20130518/1368850862
http://bearmini.hatenablog.com/entry/2013/07/12/161637


まず、物理的なCapslockキーのキーコードを以下のコマンドで確認します。
$ xev

イベントテスターなるウィンドウにフォーカスした状態で、任意のキーをタイプすると、キーコードを含む出力がされます。
例えば、以下の通り。

KeyPress event, serial 38, synthetic NO, window 0x1600001,
    root 0xa0, subw 0x0, time 4787925, (144,65), root:(1494,296),
    state 0x0, keycode 66 (keysym 0xff30, Eisu_toggle), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

Capslockキーはkeycode 66であることがわかります。


以下のコマンドで現在のキーバインドを確認します。d

$ xmodmap -pke

すると

keycode  24 = q Q q Q

と行ったものが出力されます。
4つ表示されるのは、修飾キー無し、Shiftキーによる修飾、Mode_switchによる修飾、Mode_switch+Shiftキーによる修飾を意味しています。Mode_switchは、以下で確認できます。

$ xmodmap -pke | grep -i mode_switch
keycode 203 = Mode_switch NoSymbol Mode_switch

キーボードによってはキーコード203入力用のキー(AltGr)があるものもあるようです。

モディファイヤキーの確認
Ctrlキーなどの修飾キーは、モディファイヤキーとして特別に登録されている。モディファイヤキーは、以下で確認できます。

$ xmodmap
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Eisu_toggle (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3     
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Ctrlキーがモディファイヤキーに指定されているため、このキーを入れ替えるためには一度モディファイヤキーの指定を解除する必要があります。それには、以下を.Xmodmapの先頭に追加します。

以上をまとめると、以下を~/.Xmodmapに記述します。

! Ctrlキー、CapsLockをモディファイヤキーから解除
remove control = Control_L
remove lock = Eisu_toggle

! 左Ctrlであるキー(37)をCapslockに、Capslockキー(66)を左Ctrlに割り当て
keycode 37 = Eisu_toggle Caps_Lock Eisu_toggle Caps_Lock
keycode 66 = Control_L NoSymbol Control_L

! 再度Ctrlキー、CapsLockをモディファイヤキーへ登録
add control = Control_L
add lock = Eisu_toggle

$ xmodmap .Xmodmap
で反映します。