最近工作中用到Qgis开发,找了网上一圈,关于python的开发很少,最后找到官方API,官方API很不错,但是英文难免麻烦一些,自己尝试翻译出来并实践一下,以备自己后续的学习。(并非逐字逐句翻译,就是把自己认为重点的地方记录摘要,水平有限,多多指教)

官方API:https://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/intro.html

关于使用版本问题,参考我GIS类别下的一篇文章!

Introduction

有几种办法在QGIS中使用python,同时也可以在QGIS Server中使用:

1、在QGIS启动时,自动运行python

2、在QGIS中利用python交互行交互

3、创建使用python插件

4、基于QGIS API创建传统应用

当Qgis启动时,有两种不同方法运行Python代码:

1、通过设置PYQGIS_STARTUP环境变量到一个python file路径,来在QGIS初始化完成之前就执行此文件,这种方式很少用,但是用于cleaning sys.path。

2、每次QGIS启动,都默认在.qgis2/python中查找startup.py,启动QGIS自带的python解释器

Python Console

通过QGIS内置python控制台交互

python可以开发ArcGIS Pro插件吗_QGIS

上图中脚本获取当前选中的图层,并显示图层ID。如果图层是矢量图层,显示几何元素的数量。在QGIS的交互环境中,变量iface是QgsInterface的实例。这个实例可以来获取map canvas、menus、toolbars和其他QGIS应用的工具。为了方便用户,交互控制台打开时默认载入如下包:

from qgis.core import *
import qgis.utils

Python Plugins

Python Applications

通常在处理一下GIS数据时候,创建脚本来解决按下需要不停重复的任务是很有用的。通过PyQGIS,导入qgis.core模块,初始化这个模块,你就可以实现这个。

或者,你想用一些GIS功能如计算距离、导出pdf等来创建一下交互性的功能。qgus.gui模块提供了很多GUI组件,可以很容易的实现如放大缩小或其他地图工具等。

通过PyQGIS的应用或者独立脚本都必须配置到QGIS资源如投影信息、用于渲染矢量和栅格图层的providers等等。

Using PyQGIS in standalone scripts

要在独立脚本中使用qgis,需要初始化Qgis资源,脚本如下:

from qgis.core import *

# supply path to qgis install location
QgsApplication.setPrefixPath("/path/to/qgis/installation", True)

# create a reference to the QgsApplication, setting the
# second argument to False disables the GUI
qgs = QgsApplication([], False)

# load providers
qgs.initQgis()

# Write your code here to load some layers, use processing algorithms, etc.

# When your script is complete, call exitQgis() to remove the provider and
# layer registries from memory
qgs.exitQgis()

首先导入qigs.core核心包,其次配置前缀路径,前缀路径是QGIS在系统中的安装路径。第二个参数控制是否使用缺省路径。QGIS的安装路径随着系统不同而不同,获取系统安装路径前缀的最好方法时通过如下方法获取:

QgsApplication.prefixPath()

当配置了前缀路径后,在变量qgs配置了一个索引到QgsApplication,第二个参数false的意思是在独立脚本中不使用GUI模块。然后,我们通过qgs.initQgis()方法来载入QGIS data providers和layer。载入后,我们就可以自己写业务代码来处理数据,最后通过qgs.exitQgis()删除内存中的data providers和layer。

Using PyQGIS in custom applications

在传统应用模式下,与独立脚本的唯一区别就是把QgsApplication方法第二个参数设为true,即打开gui

from qgis.core import *

# supply path to qgis install location
QgsApplication.setPrefixPath("/path/to/qgis/installation", True)

# create a reference to the QgsApplication
# setting the second argument to True enables the GUI, which we need to do
# since this is a custom application
qgs = QgsApplication([], True)

# load providers
qgs.initQgis()

# Write your code here to load some layers, use processing algorithms, etc.

# When your script is complete, call exitQgis() to remove the provider and
# layer registries from memory
qgs.exitQgis()

Running Custom Applications

此处配置python解释器不详细说了,参考我GIS下的一篇配置文章