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'])