如何制作qgis插件?qgis经典版如何下载?
发布于 作者:苏南大叔 来源:程序如此灵动~
在地理信息系统领域,常见的gis软件有2个,一款是arcgis,一款是qgis,两者都支持自定义插件。那么,在本文中,苏南大叔将介绍其中的Qgis插件制作的基本流程。

本文基于qgis@3.16这款长期支持版本,其中插件的界面部分是基于QT的,代码逻辑部分是基于python的。实验用操作系统是win10,qtdesigner@5.15.2,python@39。
QGis软件下载
截至到发稿,qgis有两个版本,一个是3.22,一个是3.16。其中,3.16是长期支持版本,3.22是最新版本。所以,苏南大叔选用的qgis版本号是3.16.13。
因为恰巧赶上版本更新,所以本文中,截图和行文会出现两个qgis版本号,3.16.13和3.16.14。两者基本没有啥差别。

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

qgis@3.16完整版下载地址:
- https://qgis.org/en/site/forusers/download.html
- https://qgis.org/downloads/QGIS-OSGeo4W-3.16.14-1.msi
插件管理器
本文中是主要描述,如何编写和调试qgis插件的。所以和qgis的插件管理器大量相关。这里先认识一下插件管理器。

网络不好的话,就可能看到下面这个界面,请等待,正在拉取插件列表。
打对勾的就是本地已经安装好的插件。
重点展示本文涉及的三个插件:plugin builder,plugin reloader,以及本文中的测试插件SuTest。

获得插件目录
安装完的现有插件,以及本文中要调试的自定义插件,都要放到插件目录里面。这个目录的地址是:<profile>/python/plugins/。
其中<profile>在官方文档里面,有着定义。不过,似乎和实际的路径还是有很大差别的。这里,苏南大叔是利用qgis的一个菜单来获得这个目录的,保证准确无误。

苏南大叔在win10系统下,获得的目录如下:
C:\Users\sunan\AppData\Roaming\QGIS\QGIS3\profiles\default\获得这个路径后,再叠加/python/plugins/字样,就是本文的目标目录了。

叠加后的路径,如下所示:
C:\Users\sunan\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\安装插件plugin builder
是的,本文使用插件来生成插件,安装好plugin builder之后,就可以一路无脑next来获得一个插件工程的模版了。

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

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

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

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

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

利用pyrcc5生成资源文件
没有这个步骤的话,qgis的插件管理器是不能识别出自定义插件的。所以需要执行一下命令,生成一个资源文件。
或者重启qgis,然后在插件管理器里面启用一下,可能会自动生成这个文件哦。命令如下:
pyrcc5 -o resources.py resources.qrc这里的pyrcc5字样,在未来的版本发展中,可能会变成pyrcc6或者pyrcc7等。

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

温馨提示:从c盘跳到d盘的话,是cd不过去的。需要直接敲对应的盘符,再回车。
执行插件
重启qgis插件,就可以在插件管理器里面,识别出这个自定义插件了。然后记得启用一下。

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

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

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

这个qgis软件,里面封装了python,还封装了qt。
编辑好界面保存之后,一般来说,重启qgis就可以生效了。
plugin reloader直接刷新插件
对于调试中的自定义插件来说,这个不断重启qgis的过程,是不能接受的。所以,这里需要第二个插件,叫做:plugin reloader。
在qgis的插件管理器里面,安装完plugin reloader之后,建议首先配置识别到当前调试的插件。否则的话,就会每次询问要刷新哪个插件?

配置后之后,plugin reloader的菜单会发生变化。以后直接ctrl+f5就是刷新自定义插件了。这对于插件调试来说,无疑是个巨大的福音。
python代码逻辑
qgis的官方文档里面,有提到:可以使用c++或者python来编写qgis插件。但是,其中使用c++编写的都是系统插件。大部分情况下,大家的插件都是使用python来编写的。
对于插件工程里面的代码,可能需要编辑的.py文件如下:
<name>.py
<name>_dialog.py当然,在本文中,并没有明确的插件需求,只是个demo。所以,这里就不做过多阐述了。

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