首页 > 其他分享 >PyQGIS二次开发指南

PyQGIS二次开发指南

时间:2024-04-26 23:59:17浏览次数:28  
标签:指南 GIS QGIS python 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二次开发指南

参考文章

标签:指南,GIS,QGIS,python,PyQGIS,二次开发,软件
From: https://www.cnblogs.com/sw-code/p/18161097

相关文章

  • 洛谷题单指南-动态规划2-P2679 [NOIP2015 提高组] 子串
    原题链接:https://www.luogu.com.cn/problem/P2679题意解读:在a中按顺序挑选k个子串,使得这些子串连在一起正好和b相等,求方案数。解题思路:这样的题目,无外乎两个思路:DFS暴搜(得部分分)、动态规划动态规划不好想,还是先暴搜吧!1、DFS暴搜搜索的思路就是:从a起始位置开始,一直找到跟b前......
  • 做梦我都没想过,我会在软件测试行业一干就是10年【避坑指南】
    我是14年毕业的,普通本科,计算机系也算是一个对口专业。那时候互联网行业是个很不错的发展方向,也是机缘巧合之下,让我走上了测试工程师的道路。但是我没想到,在这个行业一干就是10年。第一份工作还记得我刚入行的时候,进了一家社交平台公司做测试,公司最开始只我人一个做软件测试,没有......
  • 基于禅道restful接口的二次开发-获取token
    使用禅道的时候,可能会想用禅道的接口来做一些二次开发,比如获取缺陷情况、案例执行情况,做一些统计报表的展示。根据禅道开发文档中相关说明,在禅道开源版16.0+,专业版11.0+,企业版6.0+,旗舰版2.4+新增RESTful风格API,因此可以利用api来获取相关的数据访问地址:http://****/zentao/a......
  • 洛谷题单指南-动态规划2-P1439 【模板】最长公共子序列
    原题链接:https://www.luogu.com.cn/problem/P1439题意解读:求最长公共子序列的长度。解题思路:1、O(n^2)的方法:动态规划设两个排列为a,b设dp[i][j]表示a[1~i]与b[1~j]的最长公共子序列长度根据公共子序列结尾是否包含a[i]、b[j]是否相等分情况讨论:如果a[i]==b[j]  则结尾......
  • 【翻译】RISC-V裸机编程指南(Bare metal programming with RISC-V guide)
    RISC-V裸机编程指南(BaremetalprogrammingwithRISC-Vguide)作者:Follow@popovicu94原文链接:https://popovicu.com/posts/bare-metal-programming-risc-v/今天,我们将探讨如何为RISC-V架构的机器编写一个裸机程序。为了确保可复现,目标平台选择为QEMUriscv64virt虚拟机......
  • 洛谷题单指南-动态规划2-P2758 编辑距离
    原题链接:https://www.luogu.com.cn/problem/P2758题意解读:对a字符串最少操作几次可以变成b字符串,看似无从下手,可以从内部递推关系着手。解题思路:设dp[i][j]表示将a字符串1~i变成b字符串1~j的最少操作次数,字符串下标从1开始。如何思考递推?可以从最后一步为切入点!最后一步对a[i]......
  • Python 字符串格式化指南
    前言在Python中,字符串格式化是一种常见且重要的操作,用于将变量或值插入到字符串中,并控制输出的格式。本文将介绍几种常见的字符串格式化方法,帮助大家掌握在Python中有效地处理字符串的技巧。方法一:使用%操作符格式化字符串使用%操作符是一种传统的字符串格式化方法,可......
  • 洛谷题单指南-动态规划2-P1874 快速求和
    原题链接:https://www.luogu.com.cn/problem/P1874题意解读:一个数字字符串s,分解成几个整数,和为n,计算最少加号个数,也就是计算最少分解的整数个数-1。解题思路:此题虽然分类在动态规划,但数据量不大,DFS更加直观和易于理解,所以采用DFS暴搜+剪枝来解决。搜索思路是对数字字符串依次枚......
  • 在线版CAD二次开发修改UI配置的方法(纯国产内核网页CAD)
    前言我们根据mxcad开发包开发了一个完整的在线CAD应用,它包括了绘图、编辑、文字样式设置、图层设置、线型设置等功能的实现。我们同时提供了一个插件的开发接口,用户可以在该接口的基础上进行二次开发,这样就能够为用户减少从头开发的工作量,可以快速将一个完整的CAD项目集成到用......
  • NumPy 1.26 中文官方指南(三)
    基础与用法NumPy基础知识原文:numpy.org/doc/1.26/user/basics.html这些文档阐明了NumPy中的概念、设计决策和技术限制。这是了解NumPy基本思想和哲学的好地方。数组创建对ndarrays进行索引使用NumPy进行I/O数据类型广播复制和视图结构化数组......