糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 初探Qgis插件开发

初探Qgis插件开发

时间:2020-11-24 02:20:02

相关推荐

初探Qgis插件开发

初识QGIS插件

QGIS是一个地理数据编辑工具。除了强大的编辑功能外,也有着高度的扩展性,插件即是其中的一项。

这里有很多有用的东西,比如QuickOSM(安装使用参考),官方教程里也对这外插件做了介绍,HCMGIS、OSMDownloader等也很实用。

这些插件提供了QGIS本身没有的功能,看上去是不是很酷炫。然后就想着自己是不是能够做个插件给自己或给别人用?答案当然是可以。

并不完备的开发手册

本人写过一些Office和Visual studio的插件,利益于微软详尽的文档,开发这些小东东倒并不费劲。估摸着,QGIS的插件写起来也不会困难,但……

打开PyQGIS cookbook,找到Developing Python Plugins,翻了一下,一脸朦逼。真是书到用时方恨少啊,以前没好好学英文。好在现在翻译工具众多,借助这些工具,勉强看懂了,知道了插件的代码结构。

PYTHON_PLUGINS_PATH/

MyPlugin/

init.py -->required

mainPlugin.py -->core code

metadata.txt -->required

resources.qrc -->likely useful

resources.py -->compiled version, likely useful

form.ui -->likely useful

form.py -->compiled version, likely useful

这一堆文件,用手工一个个创建还真麻烦。难道开源的东西就这么折腾吗?又仔细翻了翻文档,原来是有这么一句话的:

There is a QGIS plugin called Plugin Builder 3 that creates a plugin

template for QGIS.

还是英文太菜,对26个字母组成的文字,实在不知道如何断句。这句话的大概意思是,QGIS有一个叫Plugin Builder 3的插件,用于创建QGIS的插件模板。其实,没注意到这句话还有一个原因,那就是先入为主的认为,这种代码模板是IDE或独立的工具创建的,比如Visual studio或Eclipse里都相应的插件模板,即便生成一个Angular项目也可以ng new来生成,万万没想QGIS的插件,也是用插件来生成的。如此,不由得感慨,觉得写Plugin Builder 3的人还真了不起,在没这个插件之前,硬是手工码出了这个插件。

安装完Plugin Builder 3,打开插件,一路向导,就生成了一个完整的代码目录。刚开始,我用Plugin Builder 3创建一个叫做test的项目,一路Next。

点击Generate后,弹出来一个框。

点击OK。

然后看到代码已经生成了,用VS Code打开文件夹。

关于打包

照理说,这样就可以运行了。但一时之间,竟不知道如何打包。继续翻文档,看到了这么个东西:Releasing your plugin,Release是释放的意思,把你的插件放出来,是骡子是马拿出来溜溜,正规点说法就是发行/发表。不管它什么意思了,总之就是要打个包,放到QGIS里。不过,这里并没有像其它的技术教程那样,写出详细的步骤,而是提了一些注意事项。本人也就看到了Plugin是个插件包,想着Python又不用编译什么的,大概把这项目弄成Zip就行了(有点像Jar包,只不过Jar里的Class是编译过的,这个不用)。于是试着用zip工具,按要求打包成一个zip文件,然后Plugins菜单里安装。

打包方式有点原始,但很有效。试着从安装界面进行安装。

点击安装的时候,跳出来一个框,不管它直接Yes。

不幸的是,报错了。没法导入test.test。检查了一下目录结构,发现test下边还有个test,这跟主类文件test.py冲突。原来这是个测试包,都是命名惹的祸。删掉,再来一遍。

额,又来了。这个resources又是什么鬼?

翻文档。发现这地方提到了resource文件,并说明了生成resource的方法。在插件源码目录中运行如下命令:

pyrcc5 -o resources.py resources.qrc

然后便得到一个resources.py文件。

看不懂。暂时先不管它,把这个文件扔进zip包里,再次安装。

居然成功了。直接踏破铁鞋无觅处,得来全不费功夫。试着跑一下。

Plugins菜单下多了一个test菜单,点进去又是一个test,再点,出来一个弹框,像这个样子。

为了验证一下这个框是不是测试插件中的,用QT Designer打开看一下,好像是这么个窗口:

关于开发环境

从上边步骤来看,写个QGIS插件似乎并不难。但实际上,本人在完成这个test的时候,绕了很多弯弯。

虽然插件是用Python来写的,但实际只是用了Python语言本身,后端其实用的是QT,通过PyQT这东西作为代理,然后供Python调用。

写插件的时候,是可以不用配置环境变量的,只不过通常我们写代码会用到IDE,由于没配置环境变量,IDE会有很多错误提示,比如:

Import “qgis.PyQt.QtCore” could not be resolved

此时可以通过配置PYTHONPATH这个变量来解决这个问题。

pyrcc5在Python的scripts目录下边,QGis自带了3.7的Pyghon,可以在安装目录下边找到,然后配置到系统的PATH变量中,就可以快速启动这个脚本。

关于开发工具

IDE在cookbook中有介绍。看个人喜好进行选择。本人还是比较倾向PyCharm,使用社区版的即可。

如果觉得《初探Qgis插件开发》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。