QGIS3 のプラグインを作って動かすまで
QGISのプラグインを作って、それをQGISに適応させて動かすところまでの手順をまとめます。QGIのバージョンは2018年8月時点で一番新しいバージョン3.2.2を使っています。
前提として、QGISのインストールは完了している者とします。インストール手順は以下の別記事でまとめましたのでまだの方はそちらからどうぞ。
[QGIS入門] インストールして環境を構築するまで │ Web備忘録
OSは Windows 7, Windows 10 で確認しています。
パスを通して必要なツールを使えるようにする
インストールしただけだとパスが通っていないようなので、パスを通すスクリプトファイルを作成します。名前は仮に pyqgis.cmd
とします。このファイルは適当な場所においておけばいいです。
@echo off
SET OSGEO4W_ROOT=C:\OSGeo4W64
call "%OSGEO4W_ROOT%"\bin\o4w_env.bat
call "%OSGEO4W_ROOT%"\apps\grass\grass-7.4.1\etc\env.bat
@echo off
path %PATH%;%OSGEO4W_ROOT%\apps\qgis\bin
path %PATH%;%OSGEO4W_ROOT%\apps\grass\grass-7.4.1\lib
path %PATH%;%OSGEO4W_ROOT%\apps\Qt5\bin
path %PATH%;%OSGEO4W_ROOT%\apps\Python36\Scripts
set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\qgis\python
set PYTHONHOME=%OSGEO4W_ROOT%\apps\Python36
cmd.exe
パスは環境に合わせて適宜修正してください。このファイルをダブルクリックで実行すると、QGISに合わせてインストールされたPythonやQt5にパスを通した状態のコマンドプロンプトを起動します。
これがうまくいかない場合は、パスのバージョンが微妙に間違っていると思われます。例えば QGIS3.4 の単体インストーラーでインストールした場合は、以下のような内容になります。
@echo off
SET QGIS34_ROOT=C:\Program Files\QGIS 3.4
call "%QGIS34_ROOT%"\bin\o4w_env.bat
call "%QGIS34_ROOT%"\apps\grass\grass76\etc\env.bat
@echo off
path %PATH%;%QGIS34_ROOT%\apps\qgis\bin
path %PATH%;%QGIS34_ROOT%\apps\grass\grass76\lib
path %PATH%;%QGIS34_ROOT%\apps\Qt5\bin
path %PATH%;%QGIS34_ROOT%\apps\Python37\Scripts
set PYTHONPATH=%PYTHONPATH%;%QGIS34_ROOT%\apps\qgis\python
set PYTHONHOME=%QGIS34_ROOT%\apps\Python37
cmd.exe
参考にしてください。
以下、コマンドの実行は pyqgis.cmd
で行います。
Plugin Builder をインストールする
プラグインを作るためのプラグイン Plugin Builder というものがあるのでこれを使います。まずは、QGISを立ち上げて上部メニューバーから、プラグイン
-> プラグインの管理とインストール
を選択します。
検索ボックスに “Plugin Builder” と入れると Plugin Builder 3
が出てくるのでこれをインストールします。
プラグインを生成する
インストールが完了すると、メニューバーのプラグインのメニュー内に、Plugin Builder が出てくるのでこれをクリックします。あるいはツールバーの中にあるアイコンからも起動できます。
以下、プラグインに関する設定を順次求められます。
まずはプラグインに関する名称等を設定します。適宜入力してください。ここでは TestPlugin という名前で作成します。
続けてプラグインの概要を入力します。適宜入力してください。
次に、プラグインのテンプレートとメニューを選びます。今回は Tool button with dialog を選びます。ダイアログを表示するプラグインのテンプレートです。ウィジェットを表示するプラグインにしたければ、Tool button with dock widget を選んでください。
作成したプラグインを起動するメニューを追加できますが、どのメニューになんという文言で追加するのかを指定できます。ここでは Plugin メニューに “テストプラグインです。” というメニューを追加するようテンプレートを作成します。
次は、おそらく生成するもろもろの選択です。ひとまず全部にチェックを入れておくとよいです。
レポジトリURLやプラグインのタグ情報等を入力します。後から変更できるので別になにも変更しなくてもよいです。Flag the plugin as experimental にチェックを入れておきます。実験的なプラグインという意味です。
最後にテンプレートが生成されるディレクトリを選びます。適当なディレクトリを選ぶとそこに先ほど入力したモジュール名でディレクトリが作成され、ファイル群が生成されます。確認しておきましょう。
“Generate” ボタンを押すと生成処理が始まり、完了するとその結果と次にやるべきことがダイアログで表示されます。一応コピペしてメモしておきましょう。
インストールされたプラグインがあるパスというのは、あとでプラグインをコピペするパスのことです。インストールした “Plugin Builder” はここに追加されています。
プラグインをコンパイルする
あとの手順は “What’s Next” 以下に書いてある通りにすれば動きます。次のように書いてあります。
- プラグインディレクトリで、pyrcc5を使ってリソースファイルをコンパイルします。(automakeを持っている場合はmakeを実行するか、pb_toolを使用します)
- make testを使用して生成されたソースをテストを実行します。(またはIDEからテストを実行する)
- 新しいプラグインを含むディレクトリ全体をQGISプラグインディレクトリにコピーします。
- プラグインをQGISプラグインマネージャで有効にしてテストします。
- 実装ファイルtest_plugin.pyを編集してカスタマイズする。
- 独自のカスタムアイコンを作成し、デフォルトのicon.pngを置き換えます。
- Qt Designerでtest_plugin_dialog_base.uiを開いてユーザインタフェースを変更します。
ひとまず今回は動かすところまでを目指すので、テスト周りと見た目、アイコン、Pythonによる実装はデフォルトのままとします。つまりデフォルトのままコンパイルして動かしてみます。
ということでまずはコンパイルしてみます。
上で用意した、pyqgis.cmd
を起動します。
まずはプラグインを生成したディレクトリに移動します。ディレクトリ内にはこんな感じのファイルが生成されているはずです。
この中の resouces.qrc
のファイルをコンパイルして、Python ファイルにしてやる必要があるようです。それをするコマンドが次のコマンドです。
pyrcc5 -o resources.py resources.qrc
resouces.qrc を resouces.py
に変換するコマンドです。コンパイルに成功すると、resources.py
というファイルが生成されています。
pyrcc5 が見つからない
コマンドを実行しても pyrcc5 が見つからないといわれる場合は、パスが通っていないと思われます。
pyrcc5 は “C:\OSGeo4W64\apps\Python36\Scripts” (もしくは “C:\Program Files\QGIS 3.4\apps\Python37\Scripts” )フォルダにあるのでここにパスが通っている必要があります。インストールした内容によって微妙に変わるのでいい感じのところを探してください。
pyqgis.cmd の中身のパスを確認してください。
プラグインをインストールして動かす
特に見た目も処理も変更していないので、ただダイアログが表示されるだけのプラグインですが、動くかどうか確認してみましょう。まずは生成したプラグインのファイルをフォルダごと C:\Users\[ユーザー名]\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins
にコピーします。
このパスはプラグインのテンプレートを生成したときに表示されるダイアログ内に書いてあります。パスがなければメモした内容を確認しましょう。
このパスにおいたプラグインが、QGIS読み込む(インストールする)ことができます。
プラグイン -> プラグインの管理とインストールから管理用のダイアログを開きます。検索ボックスに作成したプラグイン名を入れると候補に出てくるので、チェックを入れるとインストールが行われます。
メニューバーに黄色いアイコンが出てきていると思いますが、これをクリックするとプラグインが実行され、ダイアログが表示されます。
以上がプラグインを生成してインストールするまでの手順です。
プラグインをカスタマイズする
メニューに表示されるアイコンを変更したい場合は、icon.png
を変更しましょう。
UI周りを変更したい場合は、*.ui
のファイルを Qt Designer で開いて編集すればよいです。これはQGISのインストール時にいっしょにインストールされているはずなので、スタートメニューから検索すれば出てくるでしょう。
具体的な処理については、プラグイン名.py
というファイルに実装します。
プラグインの実装を変更して、再度QGISに反映させるには再起動が必要ですが、Plugin Reloader というプラグインを利用することで簡単にできます。プラグイン管理の画面で検索してインストールしておきましょう。
Plugin Reloader が見つからない場合
Plugin Reloader は実験的なプラグインという位置づけなので、設定から「実験的なプラグインも表示する」にチェックを入れておきましょう。そうすると検索で表示されるようになるはずです。
以上、QGIS3でプラグインを動かすまでの手順でした。
コメントを書く