waigani's diary

QGISを中心にFOSS4Gをいじくる

QGIS プロセッシング Scriptsを使いたい その4

QGisLayers.py

いくつか用意されているprocessingの便利クラスのうち、QGisLayersを使ってみましょう。
動作を確認するには、pythonコンソールから試すのがお手軽です。
まずはPythonコンソールを立ちあげてもらって、準備として必要なモジュールを読み込んでおきます。QGisLayers()インスタンスの作成もしておきましょう。

from processing.core.QGisLayers import QGisLayers
qlayer = QGisLayers()

それではいくつかのメソッドを試してみましょう。

getSupportedOutputVectorLayerExtensions()

アウトプットとして対応しているベクトルファイル形式の拡張子を返してくれます。

qlayer.getSupportedOutputVectorLayerExtensions()

拡張子のリストが返ってきます。

['shp', u'dxf', u'gxt', u'gml', u'gmt', u'geojson', u'itf', u'itf', u'xml', u'csv', u'dgn', u'bna', u'tab', u'gpx', u'gdb', u'sqlite', u'kml', u'000']

qlayer.getSupportedOutputRasterLayerExtensions()

アウトプットとして対応しているラスタファイル形式の拡張子を返してくれます。

qlayer.getSupportedOutputRasterLayerExtensions()

拡張子のリストが返ってきます。

['tif', 'grd', 'sdat', 'bt', 'img', 'ter', 'pix', 'hdr', 'vrt', 'rgb', 'bmp', 'rsw', 'nc', 'gsb', 'gen', 'gtx', 'mpr', 'mpl', '', 'pnm', 'ntf', 'rst']

getSupportedOutputTableExtensions()

アウトプットとして対応しているテーブルの拡張子を返してくれます。

qlayer.getSupportedOutputTableExtensions()

これは

['csv']

と'csv'と入ったリストが返ってくるだけ。ソースを見てもこれしか書いてないです。

getRasterLayers()

読み込む済みのラスタレイヤの一覧を返してくれます。

qlayer.getRasterLayers()

ラスタレイヤの一覧が返ってきます。

[<qgis.core.QgsRasterLayer object at 0x0000000009DE7B70>, <qgis.core.QgsRasterLayer object at 0x0000000009DE7BF8>, <qgis.core.QgsRasterLayer object at 0x0000000009DE7C80>]

getVectorLayers()

読み込む済みのベクトルレイヤの一覧を返してくれます。

qlayer.getVectorLayers()

ベクトルレイヤの一覧が返ってきます。

[<qgis.core.QgsVectorLayer object at 0x0000000009DE7D08>, <qgis.core.QgsVectorLayer object at 0x0000000009DE7D90>, <qgis.core.QgsVectorLayer object at 0x0000000009DE7E18>]

引数としてgeometryTypeをリストにして指定することが出来ます。一致するレイヤのみ返ってきます。
ポリゴンのレイヤのみ貰いたい場合は、下記の指定になります。

qlayer.getVectorLayers([QGis.Polygon])

その他

その他にも便利なメソッドが用意されていますので、QGISインストールディレクトリ/python/plugins/processing/core/QGisLayers.pyの中を覗いて確認してみましょう。