我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

在地理信息系统领域,常见的gis软件有2个,一款是arcgis,一款是qgis,两者都支持自定义插件。那么,在本文中,苏南大叔将介绍其中的Qgis插件制作的基本流程。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - qgis-plugin
如何制作qgis插件?qgis经典版如何下载?(图23-1)

本文基于qgis@3.16这款长期支持版本,其中插件的界面部分是基于QT的,代码逻辑部分是基于python的。实验用操作系统是win10qtdesigner@5.15.2,python@39

QGis软件下载

截至到发稿,qgis有两个版本,一个是3.22,一个是3.16。其中,3.16是长期支持版本,3.22是最新版本。所以,苏南大叔选用的qgis版本号是3.16.13

因为恰巧赶上版本更新,所以本文中,截图和行文会出现两个qgis版本号,3.16.133.16.14。两者基本没有啥差别。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - qgis-316
如何制作qgis插件?qgis经典版如何下载?(图23-2)

在这里,值得一提的是:下载安装包的时候,最好选择standalone完整版,因为整个软件安装包实际上有1个G左右。如果选择在线安装的话,基于网络环境的现实性,很可能什么也安装不来。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - qgis-316-download
如何制作qgis插件?qgis经典版如何下载?(图23-3)

qgis@3.16完整版下载地址:

插件管理器

本文中是主要描述,如何编写和调试qgis插件的。所以和qgis的插件管理器大量相关。这里先认识一下插件管理器。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - plugin-manager-1
如何制作qgis插件?qgis经典版如何下载?(图23-4)

网络不好的话,就可能看到下面这个界面,请等待,正在拉取插件列表。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - plugin-manager-2
如何制作qgis插件?qgis经典版如何下载?(图23-5)

打对勾的就是本地已经安装好的插件。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - plugin-manager-3
如何制作qgis插件?qgis经典版如何下载?(图23-6)

重点展示本文涉及的三个插件:plugin builderplugin reloader,以及本文中的测试插件SuTest

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - plugin-manager-4
如何制作qgis插件?qgis经典版如何下载?(图23-7)

获得插件目录

安装完的现有插件,以及本文中要调试的自定义插件,都要放到插件目录里面。这个目录的地址是:
<profile>/python/plugins/

其中<profile>在官方文档里面,有着定义。不过,似乎和实际的路径还是有很大差别的。这里,苏南大叔是利用qgis的一个菜单来获得这个目录的,保证准确无误。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - profile-path
如何制作qgis插件?qgis经典版如何下载?(图23-8)

苏南大叔在win10系统下,获得的目录如下:

C:\Users\sunan\AppData\Roaming\QGIS\QGIS3\profiles\default\

获得这个路径后,再叠加/python/plugins/字样,就是本文的目标目录了。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - qgis-plugin-local-path
如何制作qgis插件?qgis经典版如何下载?(图23-9)

叠加后的路径,如下所示:

C:\Users\sunan\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\

安装插件plugin builder

是的,本文使用插件来生成插件,安装好plugin builder之后,就可以一路无脑next来获得一个插件工程的模版了。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - plugin-builder-start
如何制作qgis插件?qgis经典版如何下载?(图23-10)

其中,值得一提的是:第一步中的module name,可能会导致python错误(因为它会生成python的类名称)。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - plugin-builder
如何制作qgis插件?qgis经典版如何下载?(图23-11)

可以设置插件最终注册的菜单位置,还可以设置插件界面的模版。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - plugin-builder-menu-reg
如何制作qgis插件?qgis经典版如何下载?(图23-12)

另外,有个插件实验性的标记。个人认为:对于我们的测试版来说,还是有必要设置为“实验性”的。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - plugin-builder-option
如何制作qgis插件?qgis经典版如何下载?(图23-13)

插件工程的生成目录,请填写上个步骤获得的真实插件目录路径,便于调试。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - plugin-builder-option-path
如何制作qgis插件?qgis经典版如何下载?(图23-14)

注意:如果提示"your output directory does not exists"的话,请使用右边的选择按钮找到上述插件的默认位置。估计可能是个最新的bug

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - plugin-path-exists
如何制作qgis插件?qgis经典版如何下载?(图23-15)

利用pyrcc5生成资源文件

没有这个步骤的话,qgis的插件管理器是不能识别出自定义插件的。所以需要执行一下命令,生成一个资源文件。

或者重启qgis,然后在插件管理器里面启用一下,可能会自动生成这个文件哦。

命令如下:

pyrcc5 -o resources.py resources.qrc
这里的pyrcc5字样,在未来的版本发展中,可能会变成pyrcc6或者pyrcc7等。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - pyrcc5
如何制作qgis插件?qgis经典版如何下载?(图23-16)

另外,pyrcc命令,需要在程序根目录下面的OSGeo4W.bat文件中,才能被识别到。所以,打开这个.bat文件后,可能还需要先cd到对应自定义插件的实际目录,再执行命令。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - pyrcc5-2
如何制作qgis插件?qgis经典版如何下载?(图23-17)

温馨提示:从c盘跳到d盘的话,是cd不过去的。需要直接敲对应的盘符,再回车。

执行插件

重启qgis插件,就可以在插件管理器里面,识别出这个自定义插件了。然后记得启用一下。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - plugin-enable
如何制作qgis插件?qgis经典版如何下载?(图23-18)

如果找不到的话,可以检查一下设置项。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - plugin-enable-2
如何制作qgis插件?qgis经典版如何下载?(图23-19)

然后,这个插件将会被注册到对应的菜单下面,(这个是在plugin builder创建插件的时候,就定义过的)。同时,工具栏里面,也会出现对应的图标。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - plugin-effect
如何制作qgis插件?qgis经典版如何下载?(图23-20)

编辑插件界面ui

一般来说,插件都是有界面的。这个qgis插件也是这样的。在上一步生成的插件工程代码里面,有个同名的.ui文件。这个就是使用qtdesigner来进行界面编辑的。这个qtdesigner在安装qgis的时候,是自带的软件。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - qtdesigner
如何制作qgis插件?qgis经典版如何下载?(图23-21)

这个qgis软件,里面封装了python,还封装了qt

编辑好界面保存之后,一般来说,重启qgis就可以生效了。

plugin reloader直接刷新插件

对于调试中的自定义插件来说,这个不断重启qgis的过程,是不能接受的。所以,这里需要第二个插件,叫做:plugin reloader

qgis的插件管理器里面,安装完plugin reloader之后,建议首先配置识别到当前调试的插件。否则的话,就会每次询问要刷新哪个插件?

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - reloader
如何制作qgis插件?qgis经典版如何下载?(图23-22)

配置后之后,plugin reloader的菜单会发生变化。以后直接ctrl+f5就是刷新自定义插件了。这对于插件调试来说,无疑是个巨大的福音。

python代码逻辑

qgis的官方文档里面,有提到:可以使用c++或者python来编写qgis插件。但是,其中使用c++编写的都是系统插件。大部分情况下,大家的插件都是使用python来编写的。

对于插件工程里面的代码,可能需要编辑的.py文件如下:

<name>.py
<name>_dialog.py

当然,在本文中,并没有明确的插件需求,只是个demo。所以,这里就不做过多阐述了。

苏南大叔:如何制作qgis插件?qgis经典版如何下载? - code-file
如何制作qgis插件?qgis经典版如何下载?(图23-23)

相关文章

总结

本文中,苏南大叔总结了开发qgis插件的简单步骤和方法。如果您想知道更多qgis相关的文章,请点击下面的链接:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python    qgis