QGIS プロセッシングスクリプト豆知識

QGISのプロセッシングでは自作のスクリプトを作成して実行することができます。
Pythonコンソールでは少し不便だが、プラグインを作るのはめんどくさいといった時に丁度いいような気がします。
QGIS Pythonに慣れていれば割と簡単に作ることができますが、資料は少ないので個人的なメモを残しておこうと思います。

まずはプロセッシングツールボックスやプラグインに望みの処理を行えるものが無いか確認してみましょう。
もしくはプロセッシングのグラフィカルモデラでうまいこと解決するかもしれません。

プロセッシングスクリプトについては、まずは以下の2つの記事を見ましょう。日本語のプロセッシングのバイブル的なものです。


プロセッシングのalgリストを確認する

プロセッシングスクリプトを作る場合でも、出来合いの処理アルゴリズムが多数用意されており、
それをうまく利用することでスクリプトの作成の手間が大幅に削減することができるかもしれません。
なので、まずは用意されているアルゴリズムのリストを確認しましょう。

アルゴリズムリストを調べるには、コマンドコンソールからprocessing.alglist()と入力します。

入力すると図のように利用可能なアルゴリズムのリストが出力されます。
QGISと一緒にインストールされているプラグインによって利用可能なアルゴリズムリストは異なります。

アルゴリズムを呼び出すには、processing.runalg()関数を利用します。
例として、Example scriptsにあるHex grid from layer boundsスクリプトで利用されているqgis:creategrid
アルゴリズムの呼び出し例を以下に示します。

processing.runalg('qgis:creategrid', cellsize, cellsize, width, height,
                  centerx, centery, 3, input.crs().authid(), grid)

各アルゴリズムで必要な引数が異なるので、利用するには事前に必要な引数を調べる必要があります。
引数を調べるには、コマンドコンソールで以下のように入力します。

>>> processing.alghelp('qgis:creategrid')
ALGORITHM: Create grid
	HSPACING <ParameterNumber>
	VSPACING <ParameterNumber>
	WIDTH <ParameterNumber>
	HEIGHT <ParameterNumber>
	CENTERX <ParameterNumber>
	CENTERY <ParameterNumber>
	GRIDTYPE <ParameterSelection>
	CRS <ParameterCrs>
	SAVENAME <OutputVector>


GRIDTYPE(Grid type)
	0 - Rectangle (line)
	1 - Rectangle (polygon)
	2 - Diamond (polygon)
	3 - Hexagon (polygon)

processingオブジェクト

processingオブジェクトはrunalg()関数のようにプロセッシングで利用可能な多数の関数を持っていますが、
2016年4月時点ではprocessingオブジェクトが何を持っているのかの資料がとりあえず見当たりません。

さしあたって、processingオブジェクトの中身はコードを見るしかないかと思われます(良さげな資料があったら教えてください。
コードは、直接的にはqgis/python/plugins/processing/tools以下のファイル群にあります。
ここからさらにたどって、qgis/python/plugins/processing以下全てのサブディレクトリにあるコードを参照する場合もあります。
ここのコードを見て、とりあえずコマンドコンソールで入力してみましょう。

例:
>>> processing.GdalUtils.getSupportedRasters()
{'GTiff': ['tif'], 'GS7BG': ['grd'], 'SAGA': ['sdat'], 'BT': ['bt'], 'HFA': ['img'],
'Leveller': ['ter'], 'PCIDSK': ['pix'], 'MFF': ['hdr'], 'VRT': ['vrt'], 'Terragen': ['ter'],
'SGI': ['rgb'], 'BMP': ['bmp'], 'RMF': ['rsw'], 'netCDF': ['nc'], 'NTv2': ['gsb'],
'KRO': ['kro'], 'ADRG': ['gen'], 'GTX': ['gtx'], 'ILWIS': ['mpr', 'mpl'], 'ENVI': [''],
'GSBG': ['grd'], 'PNM': ['pnm'], 'NITF': ['ntf'], 'RST': ['rst']}

コマンダーの表示/非表示

プロセッシングのコマンダーという入力ボックスがあります。表示するには【processing】メニューから【commander】を選択します。

このウィンドウを非表示にするには、コマンダーウィンドウをクリック後[Esc]ボタンを押します。
知らないと気が付かないので注意です。


ifaceを参照するには

プロセッシングスクリプトでも、プラグインと同じようにifaceオブジェクトを参照することができます。
とくに、mapcanvasを参照したい場合は必要になるでしょう。

ifaceオブジェクトを参照したい場合は、from qgis.utils import *をスクリプトの先頭に記述する必要があります。


アーカイブ