今回はQGISのPythonコンソールについて紹介します。
コンソールは、pythonのインタプリタ同様の動きです。1行のpythonのコードに対してレスポンスを返してくれるので、pythonやQGIS関数の動作チェックに便利なものです。
マウスで操作するより、コンソールでの操作が楽な場合もあります。
Pythonコンソールはメニューバー->プラグインにあります。
非常によく使うのでプラグインでショートカットを設定しています。
メニューバー->設定->ショートカット構成でも設定できます。
2.0以前は最低限の機能しかありませんでした。
今では、すごくPythonコンソールは使いやすくなりました。
左にあるアイコンの機能を順に紹介します。
1.コンソールのクリア
コマンドの履歴を消して見やすくできます。
表示上消えるだけで、厳密に履歴が消えてはいません。
矢印キー(↑↓)で前のコマンドを参照することはできます。
2.importの簡易化
PyQtとprocessingをボタン1つでインポートすることができます。
QGISの関数は大半インポートされています。
3.コマンド実行
入力しているコマンドを実行します。
Return・Enterでも実行できるので使うことはないです。
4.エディタ
基本機能とプログラミング用の機能がついているエディタです。
- 行番号クラス
- 関数の開け閉め
- コメントなどの色変更
- オートコンプリート
などがついています。
QGISに存在しているので、書いたコードをすぐ試すができます。
プラグイン開発をQGISで完結することができます。
5.設定
以上が簡単な機能紹介です。
最後に
コンソールを使用したほうが楽になる作業についてです。
作業は、多数のレイヤ・地物に対する作業です。
単体であるならマウスの操作の方が楽だからです。
再度やる可能性のある作業なら、プラグイン化したほうがもっと楽になります。
例えば、すべてのレイヤに縮尺による表示設定を有効する場合です。
legend_iface = iface.legendInterface() layers = legend_iface.layers() for layer in layers: layer.toggleScaleBasedVisibility(True)
このコードで表示設定を有効にできます。
ifaceとは、QgisInterfaceのインスタンスです。
iface.legendInterface()
レイヤビューに表示されているものの管理を行っているクラス(QgsLegendInterface)のインスタンスを取得します。
legend_iface.layers()
レイヤビューにあるすべてのレイヤ(QgsMapLayer)を取得しています。
layer.toggleScaleBasedVisibility(True)
レイヤの「縮尺に応じた表示設定」の有効無効を設定できます。
これをループさせることで、すべてのレイヤの縮尺表示を有効にしました。
QGISの関数についてはQGIS APIドキュメントに詳しいことは載っています。
C++のAPIドキュメントなので、Pythonで操作できないものがあります。