10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

QGISプラグイン作成でつまづいた時に参考になるといいな

Last updated at Posted at 2023-12-07

この記事を書こうと思ったきっかけ

2023年11月28日−12月2日の間、FOSS4G ASIA2023がソウルで開催されておりました。

IMG_5231.JPG

FOSS4G ASIAの様子などは他の方の投稿に任せるとして、自分は28日のワークショップから参加し、PyQGIS and plugin development in QGIS for automatic map creationという、QGISプラグイン作成のワークショップを受講いたしました。

内容としては、QGISの「plugin Builder」プラグインでプラグインのベースを作って、ちょっとオリジナルに手を加えてみましょう。
といったもので、以下に資料もアップしてくれていますので、気になる方はそちらをご覧ください。

恥ずかしながら自分はワークショップ途中でつまずいて最後までついていけなかったのですが、その後調べてつまづいた箇所をクリアすることができたので、今後プラグインを作る際の忘備録としてもその攻略をメモしておきます。
QGISのプラグインを作ろうとしている人で、以下の点でつまづいた人の助けになればいいなぁと思います。

  • なんかresourcesファイルがなんちゃらかんちゃら言われた時
  • MacでもQt designerでQGIS Custom Widgetsを使いたい時

プラグインの雛形を作る

ワークショップではまず初めにQGISのPlugin Builderでプラグインの雛形を作成しました。

  • plugin builder 3 をインストール
    image.png

  • plugin builder 3を使ってプラグインの情報を入力

1枚目は以下の情報を入力します。

Title Description
Class name プラグインのクラス名 PascalCaseで指定。
Plugin name プラグイン名
Description プラグインの説明
Module name Pythonモジュール名。 アンダーラインで区切られたlower_case で指定。
Version number (0.0.0) プラグインのバージョン
Minimum QGIS version プラグインが動作するQGISの最低バージョン
Author/Company 作成者
Email address 作成者のメールアドレス

2枚目はプラグインの詳細な説明文
3枚目はテンプレートの種類の選択
4枚目は雛形一式にヘルプとかも含めたければチェック
5枚目はプラグインのリポジトリとか

image.png

  • 出力先はQGISがプラグインを認識できるよう、それぞれのOSに応じて以下の場所を指定します。
    • windows: home\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins
    • mac: /Users/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins
    • Linux: home/User/local/share/QGIS/QGIS3/profiles/default/python/plugins

image.png

  • これでプラグインの雛形が完成。と思いきや
    最後に何やら怪しげなメッセージ。
    image.png

  • 一旦メッセージは無視してQGISでプラグインを呼び出してみます。
    プラグインマネージャーから作成したプラグインにチェックを入れます。
    image.png

するとなんか怒られます。
image.png

つまづいた箇所その1〜resources.qrcの変換

Plugin Builderで作成したプラグインの雛形のファイル一式を確認するとresources.qrcというファイルがあります。
image.png

これはQGISのツールバーに表示されるのicon.pngを読み込むファイルですが、これをPythonのコードに変換しなければいけません。

resourcesの変換はpyrcc5というコマンドを使用します。
なんかPATHがきちんと通っていればPlugin Builder実行時にこの変換も済ませてくれるようです。
Plugin Builder実行時に表示されたこのメッセージは、この変換ができていないですよーってことだったんですね。
image.png

ワークショップでは自分も含めてこのresourcesの変換が行われず、つまづいている方が何名かいらっしゃるようでした。

というわけで、resourcesの変換を行います。

  • ターミナルでプラグインのフォルダへ移動します。
cd /Users/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/●●●(プラグイン名)
  • 変換処理の実行
pyrcc5 -o resources.py resources.qrc

上のコードを実行するとプラグインフォルダ内にresources.pyというファイルが生成されます。
image.png

これで改めてQGISのプラグインマネージャーから作成したプラグインのチェックを入れます。
image.png

今度はメッセージが表示されずに、ちゃんとメニューにも表示されます。

image.png

つまづいた箇所その2〜QGIS Custom Widget 付きQt designer

プラグインを実行するとダイアログには何もない状態なので、プラグインのダイアログを作っていきます。
image.png

ダイアログは、プラグインフォルダ一式にある「〜〜〜.ui」ファイルを編集します。
image.png

ここでWindowsユーザーの場合、QGISをインストールするとスタートメニューに「Qt Designer with QGIS xxx custom widget」が存在しているので、これを起動してuiファイルを開くと、レイヤの選択などのQGISのプロセッシングでお馴染みのウィジェットも使用することができる。
image.png
image.png

Macの人はというとアプリケーションの一覧に出てきてないので、一見わかりにくいですが、
/Applications/QGIS.app/Contents/MacOSにあるDesigner.appから起動すれば同じくQGIS custom widgetsを使うことができます。
image.png

ワークショップの資料はWindows仕様だったので、自分も含めMacの人はここでも割とつまづいている人がいたように思います。

image.png

ダイアログの編集もできたら、あとはプラグインファイル一式の「プラグイン名.py」に実際の処理内容を記述すればOKです。
(今回はPushBottonをクリックすると、コマンドにメッセージを表示する。という簡単な処理)
image.png

image.png

これにて無事ワークショップの内容をやり遂げることができました。

あとがき

ワークショップ中は当然ながら英語で進んでいましたが、資料も手元でじっくりみることができたのと、なんとか質問したりしてなんとなくやっていることが理解できてよかったです。

今回はあくまで、ワークショップでつまづいたところの攻略の内容でしたが、改めてQGISプラグインの作り方を別記事に整理したいと思いますが、それはまた別の話。

韓国では美味しいものいっぱい食べたけど、ちゃんと名前とか覚えてないので、写真だけ載せて供養しておきます。

韓国版とうきびモナカアイス
IMG_5225.JPG

トッポギ入り辛いラーメン
IMG_5233.jpg

辛いなべ
IMG_5291.JPG

ユッケ
IMG_5292.JPG

茶碗蒸し
IMG_5311.JPG

海鮮たっぷり鍋
IMG_5330.JPG

サムゲタン(?)だっけ
IMG_5386.JPG

なんかカニとかエビとかチューチューして食べるやつ
IMG_5434.JPG

空港で買ったキンパとポケモンパン
IMG_5440.JPG

ではまた。

参考ページ

10
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?