waigani's diary

QGISを中心にFOSS4Gをいじくる

5.QGIS 2.0のプロセッシングが好きだ

QGIS 1.8からあったのですが、SEXTANTEからプロセッシングと名前が変更になりました。
この機能一体何?と思うかもしれませんが、使い方を覚えるととても便利なものです。
手抜きして以前書いた文章から引用。

SEXTANTEはQGISで使える様々な解析機能をまとめるためのフレームワークです。GRASS,SAGAなどで提供される解析機能を、SEXTANTEを通して統合してシームレスに使用することが出来ます。注意する点としては、SEXTANTE自体はフレームワークなので、各々の解析機能(GRASSやSAGA)は別にインストールされている必要があります。

それぞれ別にある解析機能を統一されたユーザインタフェースで使用することが出来るようになりました。統一されていると何が良いかって、処理を繋げていけるところです。


ユーザインタフェースを少し見て行きましょう。プロセッシングツールボックスを立ちあげてみます。

"Simplified interface"と表示されています。これを"Advanced interface"に変えてみましょう。

用意されている各解析機能がどのアプリケーションから来ているかによって、グループ分けした状態で表示されます。プロセッシングが様々なアプリケーションから提供される機能で構成されてることが分かります。


QGISの基本機能で用意されているベクトルレイヤのクリップ機能を、比べてみましょう。
QGISのメニューから"ベクトル"→"空間演算ツール"→"クリップ"と選択します。

入力とするレイヤ、クリップ範囲を指定するレイヤ、出力ファイルを指定する各フォームが表示されています。
これをプロセッシングで見てみましょう。
"QGIS geoalgoritms"→"Vector overlay tools"→"Clip"を選択します。

表示されるダイアログを比べると、QGISメニューから選択したものと同じ入力項目ということが分かります。


プロセッシングに登録されている他の解析機能を選択しても、同じようなダイアログが表示されます。ユーザインタフェースの統一ってデザインのこと?と思ってしまうかもしれませんが、違います。(そうでもあるけど)
各機能から提供される解析機能の上に、プロセッシングがかぶさっている形になっていて、

  • 入力ファイル(もしくは入力レイヤ)
  • オプション

を渡してあげると、

  • 対象の処理を行ったファイル名

が返ってる、これの繰り返しを提供してくれます。入力・出力はファイル(レイヤ)だけではなく、値の入力・出力となる場合もあります。この流れにのせてしまえば、オリジナルの機能を追加することも出来ます。


さて統一されたインタフェースで、処理を繋げられるという点を見てみましょう。
メニューから"プロセッシング"→"グラフィカルモデラー"を選択しましょう。

ベクトルレイヤからランダムに図形を選択、選択した図形を別レイヤで保存という一連の処理をつなげてみます。
まず、"入力"タブから"Vector layer"を選択します。"Parameter name"はinputLayerとつけておきました。

入力レイヤが追加されました。

次に"アルゴリズム"タブに移り、"QGIS geoalgorithms"→"Vector selection tools"→"Random selection"を選択します。表示されたダイアログで"Input Layer"に入力として作成しておいたinputLayerを指定します。

次に"アルゴリズム"から、"Scripts"→"Example scripts"→"Save selected features"を選択します。表示されたダイアログで"input"にRandom selectionの結果を、"output"に何か名称をつけてここではoutputと入力しました。

次のようなモデルが出来上がります。

ベクトルファイルをあらかじめQGISで開いた状態で、実行する事が出来ます。
このように異なるアプリケーションから提供されている解析機能(ここではQGISの基本機能と、サンプルとして追加されているスクリプト)を繋げて実行することが可能です。もちろん、作成したモデルは保存しておくことができるので同じ処理を繰り返し使用することが出来ます。

みなさんも一度お試し下さい。