waigani's diary

QGISを中心にFOSS4Gをいじくる

QGIS PythonコンソールからSEXTANTEその1

FOSS4G 2013 Hokkaido

まず宣伝。7/5(金),7/6(土)とFOSS4G 2013 Hokkaidoを開催致します。
今年はハンズオンデイ(7/6)QGISプログラミング入門を担当致します。
内容としては、
QGIS pythonコンソールを利用して、QGIS APIからGUI、データへのアクセス方法を学習します。QGISプラグインのひな形についても学習を行い、独自プラグインをメニューに追加するまでを行います。
としたのですが、折角なのでSEXTANTEも触れたいなと思い、まだ一ヶ月あるので準備しております。実際に触れるかは未定です。

SEXTANTEの準備

SEXTANTEはQGISで使える様々な解析機能をまとめるためのフレームワークです。GRASS,SAGAなどで提供される解析機能を、SEXTANTEを通して統合してシームレスに使用することが出来ます。注意する点としては、SEXTANTE自体はフレームワークなので、各々の解析機能(GRASSやSAGA)は別にインストールされている必要があります。
ここでは、OSGeo4Wで最新のqgis-devをインストールすると共に、GRASS、SAGAもインストールしてある状態を前提とします。QGISを起動してプラグイン管理から、SEXTANTEのインストールもしておきます。

QGISのメニューに"解析手法"が表示されますので、通常こちらから使用ください。

以下では、SEXTANTEをわざわざPythonコンソールから使用してみます。

PythonコンソールからSEXTANTE

Pythonコンソールを起動します。最初にやることはSEXTANTEのimport。単純に

import sextante

と打てばいいのですが、折角メニューが用意されているので、"Sextanteクラスのインポート"を選んでみましょう。

SEXTANTEがimportされていて使えるかの確認を行います。

sextante.alglist()

を実行すると、使用出来る機能一覧が出力されます。

各機能の使用方法は下記のように機能名をsextante.alghelp()に渡してあげる事で確認出来ます。

sextante.alghelp("grass:v.surf.rst")

DEMから陰影図作成

DEMデータのGeoTIFFがC:/work/6441.tifにあるとし、このDEMから陰影図を作成します。
まずは陰影図作成に使える機能があるか調べます。sextante.alglist()に文字列を渡してあげると、絞り込みを行えます。

sextante.alglist("hill")

とすると、sagaにお目当ての機能がありそうです。

使用方法を見てみましょう。

sextante.alghelp("saga:analyticalhillshading")

  • 入力としてラスタデータ
  • 作成方法(下段のオプションから選択)
  • 方位角
  • 高度角
  • 強調
  • アウトプットファイル

を指定すればいいことがわかります。アウトプットファイルを指定しない場合、システム側で一意なファイル名を付けて作成してくれます。
sextante.runalgの第一引数に使用したい機能名を、その後の引き数に機能毎の引き数を入れて実行します。

output = sextante.runalg("saga:analyticalhillshading", "C:/work/6441.tif", 0, 315.0, 45.0, 4, None)

outputには、作成されたファイル名が入ります。

print output

で確認出来ます。

 {'SHADE': u'C:\\Users\\xxx\\AppData\\Local\\Temp\\sextante\\sagaanalyticalhillshading4cf778c0f51d4320a0e4962402d97c84.tif'}

作成されたファイルを読み込みには、sextante.load()を使用します。

sextante.load(output['SHADE'])

陰影図が作成されたことが確認出来ます。まずはここまでの確認でした。