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/能够看 ...
随机推荐
- Python 函数:定义、调用、参数、递归和 Lambda 函数详解
函数是一段代码块,只有在调用时才会运行.您可以将数据(称为参数)传递给函数. 函数可以返回数据作为结果. 创建函数 在Python中,使用def关键字定义函数: 示例 def my_function( ...
- 5. Determinant
5.1 The Properties of Determinants The determinant of the n by n identity matrix is 1 : \(det I = 1\ ...
- jemter做参数化的几种方法
第一种:使用用户参数:添加--前置处理器--用户参数
- ES6~ES9
ES6 1. let 1.1 let 变量声明及声明特性 let 用来声明变量,具有以下特性: 一.相较于 var ,let 变量不能重复声明 let a = 'a'; let a = 'a'; // ...
- Spring Cloud Bus:消息总线
Spring Cloud Bus:消息总线 SpringCloud学习教程 SpringCloud Spring Cloud Bus 使用轻量级的消息代理来连接微服务架构中的各个服务,可以将其用于广播 ...
- KubeOperator技术方案
KubeOperator技术方案 总体介绍︎ KubeOperator 是一个开源的轻量级 Kubernetes 发行版,专注于帮助企业规划.部署和运营生产级别的 Kubernetes 集群. Kub ...
- 百度unit闲聊机器人
import json import random import requests # client_id 为官网获取的AK, client_secret 为官网获取的SK client_id = & ...
- 暑期集训 Day12 —— 模拟赛复盘
${\color{Green} \mathrm{Problem\ 1 :Subarray }} $ Map. ${\color{Green} \mathrm{Problem\ 2 :小z玩游戏 }} ...
- 一看即会:Serverless 应用开发的 7 个实战小技巧
简介:干货满满,马住收藏! Serverless 应用开发的 7 个经验心得 作者说:Serverless 架构下的应用开发,与传统架构的应用开发还是有比较大的区别点的,例如天然分布式架构会让很 ...
- iOS App 启动优化
简介: 作为程序猿来说,"性能优化"是我们都很熟悉的词,也是我们需要不断努⼒以及持续进⾏的事情:其实优化是⼀个很⼤的课题,因为细分来说的话有⼤⼤⼩⼩⼗⼏种优化⽅向 ,但是切忌在实 ...