PyQGIS二次开发指南
当你的数据处理使用的是Python语言,而你的导师又让你开发界面,那么PyQGIS二次开发指南是你必读的圣经。QGIS支持Python语言进行二次开发,你将学会如何使用Qt Designer进行界面设计、加载栅格数据、加载矢量数据、软件打包、安装包制作等。
写在前面
随着GIS应用在国内的逐渐增多,越来越多的行业会需要使用GIS软件进行处理。目前国内的GIS软件基本为ArcGIS,ESRI作为GIS行业的龙头老大,依靠着ArcGIS基本占据着GIS软件的全部江山,其功能丰富强大,且社区最为活跃,但随着近期的俄乌战争,ESRI制裁俄罗斯的事件,还是可以感受到闭源软件的不可控性。
QGIS是一个开源、免费、轻量级的GIS软件,虽然在国内的普及程度不高,但不妨碍其软件的优秀程度。QGIS的软件功能及其丰富,并且还有海量的插件库供不同方向的GIS人员选择,是一个充满活力的开源社区。QGIS是一个使用C++语言开发的软件,其二次开发难度较大,且需要经历复杂的编译、源码理解,需要较高的门槛。
值得庆幸的是,QGIS支持python语言进行二次开发, python作为一个较易上手的胶水语言,在GIS社区较为活跃,例如:GDAL、Shapely、Fiona、RTree、pyproj、GeoPandas、rasterio、GeoDjango等开源框架都可以在python上使用,python语言是一个特别适合GIS领域的语言,更不用说现在火热的机器学习、深度学习都与python密切相关。QGIS的提供的PYQGIS的接口与C++ QGIS的接口基本保持一致,学习PyQGIS也能基本熟悉c++的QGIS,方便后续继续进行深入研究,作为想要入门QGIS二次开发的人员来说再为合适不过了。
本系列的教程将会从二次开发环境配置、pycharm配置、pyqgis语法、qtDesigner使用教程、插件设计等方面,结合笔者在项目中的实践一一展开叙述,希望最后,能在所有的系列教程结束后,让跟着系列做的读者都可以开发出一个属于自己的GIS界面。
界面预览



开发环境准备
安装PyQGIS
下载PyQGIS
大家可以在Index of /downloads (qgis.org)中找到自己的开发环境,笔者选择了 windows 下的 QGIS 3.30.0,点击msi进行安装。目录结构如下:
.
├── apps
├── bin
├── doc
├── etc
├── lib
├── share
├── var
├── main.spec
├── OSGeo4W.bat
├── OSGeo4W.ico
└── start_up.bat
验证安装
在 Win 中搜索 QGIS,或者找到bin目录下的qgis-bin.exe打开 QGIS 桌面软件,输入Ctrl + Alt + P,打开Python控制台,我们尝试输入一下代码:
from qgis.core import QgsRasterLayer
若没有提示报错,说明我们的安装成功了。
PyCharm环境配置
新建项目pyqgis-se,在System Interpreter中选择 QGIS 安装目录下的bin\python-qgis.bat

效果如下:

环境选择好之后,创建项目

Hello QGIS
在根目录创建入口文件main.py,写入如下代码:
if __name__ == '__main__':
# 第二个参数为是否启用 GUI
qgs = QgsApplication([], False)
# 初始化 QGIS
qgs.initQgis()
print(QgsApplication.prefixPath())
print('Hello Qgis!')
运行后,控制台输出如下:
D:/PROGRA~2/QGIS33~1.0/apps/qgis
Hello Qgis!
正式开发
这部分内容过多,请移步:swcode - PyQGIS二次开发指南
参考文章
PyQGIS二次开发指南的更多相关文章
- ECSHOP二次开发指南
ECSHOP二次开发指南 发布时间:2013-05-28 12:47:00 来源: 评论:0 点击: 次 [字号:大 中 小] QQ空间新浪微博腾讯微博人人网豆瓣网百度空间百度搜藏开心网复制更 ...
- [PC]PHPCMS二次开发指南(上)
------------------------------------------------------------------------------------- PHPCMS本身功能已经很完 ...
- ECMALL模板解析机制.MVC架构分析及文件目录说明.二次开发指南手册(转)
ECMALL模板解析语法与机制 http://www.nowamagic.net/architecture/archt_TemplateSyntaxAndAnalysis.php ECMALL模块开发 ...
- Harbor 定制页面 和 二次开发指南
harbor的官方地址:https://github.com/goharbor/harbor 想对Harbor进行二次开发,首先要指定一个harbor的版本,这里我们以Harbor:1.6.2为例: ...
- ECShop二次开发指南(一)
ECSHOP是一套完整的网络商店解决方案,包括前台的商品展示.购物流程和强大易用的后台管理.由于 ecshop简单易用,使用者几乎可以在3几分钟简单的设置一下就可以拥有一个网上商店系统,所以很多的B2 ...
- DataX插件二次开发指南
一. DataX为什么要使用插件机制? 从设计之初,DataX就把异构数据源同步作为自身的使命,为了应对不同数据源的差异.同时提供一致的同步原语和扩展能力,DataX自然而然地采用了框架 + 插件 的 ...
- ECSHOP - 二次开发指南---购物车篇
第一个问题 保存用户购物车数据ECSHOP的购物车数据,是以Session 方式存储在数据库里,并在Session结束后 ,Distroy 掉,解决方法是: 1.购物车内容读取方式. 更改登陆后购物车 ...
- ECShop二次开发指南-文件结构(二)
ecshop文件架构说明 注意:因各版权不一,大概参考/* ECShop 2.5.1 的结构图及各文件相应功能介绍 ECShop2.5.1_Beta upload 的目录 ┣ activity.p ...
- Civil 3D API二次开发学习指南
Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...
- 开发指南专题二:JEECG微云高速开发平台JEECG框架初探
开发指南专题二:JEECG微云高速开发平台JEECG框架初探 2.JEECG框架初探 2.1演示系统 打开浏览器输入JEECG演示环境界址:http://demo.jeecg.org:8090/能够看 ...
随机推荐
- C#开发的绑定类型默认应用例子 - 开源研究系列文章
这次在用C#编写一个看图软件小工具,然后其它的基本完成了,就是绑定看图软件到那些个图片扩展名的时候碰到了问题,就是如何将看图软件绑定图片文件的默认应用,以及解绑默认应用.这个涉及到注册表操作,但是找度 ...
- C++调用Python-3:调用Python函数,返回字符串
# mytest.pydef hello1(): print("this is test python print hello world 1") return "456 ...
- KL散度和交叉熵的对比介绍
KL散度(Kullback-Leibler Divergence)和交叉熵(Cross Entropy)是在机器学习中广泛使用的概念.这两者都用于比较两个概率分布之间的相似性,但在一些方面,它们也有所 ...
- 什么是MurmurHash
MurmurHash简介 MurmurHash是一种非加密散列函数,名称来自两个基本操作,乘法(MU)和旋转(R).与加密散列函数不同,它不是专门设计为难以被对手逆转,因此不适用于加密目的.在2018 ...
- Linux之网络排错
Linux 网卡收包流程如下 网卡收到数据包 将数据包从网卡硬件缓存移动到服务器内存中(DMA方式,不经过CPU) 通过硬中断通知CPU处理 CPU通过软中断通知内核处理 经过TCP/IP协议栈处理 ...
- nginx重新整理——————编译nginx[二]
前言 简单编译一下nginx. 正文 为什么我们要去编译nginx. 系统安装,比如yum安装,会把nginx 模块直接编译进来. 这意味着,我们无法使用第三方的包.如果我们需要使用第三方包,那么需要 ...
- redis如何在保持读写分离+高可用的架构下,还能横向扩容支撑1T+海量数据
单机redis在海量数据面前的瓶颈. 怎么才能够突破单机瓶颈,让redis支撑海量数据? redis集群架构 redis cluster 支撑N个redis master node,每个master ...
- 一个 Blink 小白的成长之路
写在前面 写过blink sql的同学应该都有体会,明明写的时候就很顺滑,小手一抖,洋洋洒洒三百行代码,一气呵成.结果跑的时候,吞吐量就是上不去.导致数据延迟高,消息严重积压,被业务方疯狂吐槽.这时候 ...
- 饿了么EMonitor演进史
简介: 可观测性作为技术体系的核心环节之一,跟随饿了么技术的飞速发展,不断自我革新. 序言 时间回到2008年,还在上海交通大学上学的张旭豪.康嘉等人在上海创办了饿了么,从校园外卖场景出发,饿了么一步 ...
- dotnet 使用增量源代码生成技术的 Telescope 库导出程序集类型
本文将告诉大家在 dotnet 里面使用免费完全开源的基于增量源代码生成技术的 Telescope 库,进行收集导出项目程序集里面指定类型.可以实现性能极高的指定类型收集,方便多模块对接入自己的业务框 ...