您的位置:首页 > 编程语言 > Python开发

QGIS python开发手册

2015-08-03 16:56 561 查看

QGIS python开发手册

原文地址:http://docs.qgis.org/testing/en/docs/pyqgisdevelopercookbook/intro.html

QGIS是一个用户界面友好的桌面地理信息系统,可运行在Linux、Unix、Mac OSX和Windows等平台之上。QGIS是基于Qt,使用C++开发的一个用户界面友好、跨平台的开源版桌面地理信息系统。
QGIS项目开始于2002年 5月,是基于跨平台的图形工具Qt软件包,采用C++ 语言开发的一个GIS软件。目前的开发非常活跃,当前(2014年)的最新版本是QGIS 2.10 版。QGIS源码采用 GNU General Public License协议对外发布。
QGIS的官方网址为http://www.qgis.org/
从0.9版本开始QGIS就支持Python进行开发,称之为PyQGIS。PyQGIS依赖于SIP和PyQt4.

在QGIS中使用Python

启动QGIS时运行Python代码

有两种方式:设置PYQGIS_STARTUP环境变量和使用startup.py文件

设置PYQGIS_STARTUP环境变量

可以通过设置环境变量PYQGISSTARTUP来达到在QGIS初始化完成前执行python代码的目的。将PYQGISSTARTUP设置为用户想执行的python文件即可。
这种方法一般情况下很少用到,但这是在QGIS初始化完成之前执行python代码的方法之一。这个方法在清理系统路径(sys.path)的时候非常有用,系统路径里面有时候含有一些无效的路径。还有就是一些python模块需要单独初始化的情况使用。

使用startup.py文件

每次QGIS启动的时候,都会在用户的Python home目录(一般为.qgis2/python目录)下面查找startup.py文件,如果存在,则执行。

Python控制台

在QGIS中,可以通过Python控制台来执行Python代码。在Plugins 菜单下选择 Python Console,打开Python控制台,如图1:



图中的代码用来获取当前选中的图层,并显示其ID,如果该图层是矢量图层,则显示图层包含的要素个数。
在QGIS的执行环境中默认有一个iface变量,该变量是QgsInterface类型的实例。使用这个变量可以访问地图的canvas,菜单,工具条以及其他模块。
为了方便用户,在Python控制台启动的时候会自动加载相关模块,代码如下:
from qgis.core import *
import qgis.utils

如果用户经常使用Python控制台,可以通过Settings 菜单下的Configure shortcuts工具设置快捷键,方便快速启动。

Python插件

QGIS支持以插件的方式增强其功能,在支持Python之前,只能通过C++来实现。支持Python后,可以通过Python来实现插件。相对于c++实现的插件,Python实现的插件开发更简单并且更容易分发。目前,已经有非常多的Python插件可以下载。用户可以通过Plugins菜单下的manage and install plugins工具来获取、安装、卸载插件。

Python应用程序

在数据处理的时候,经常需要使用脚本的方式来自动化的批量处理。使用PyQGIS,可以很容易的实现。导入qgis.core模块并初始化,用户就可以使用了。
如果用户想创建一个可交互的应用程序,例如实现测量数据、将地图导出到PDF中等功能,则使用 qgis.gui模块即可。 qgis.gui模块提供了很多GUI组件供用户使用。地图组件可以很容易到集成用户的应用程序中。

在自定义应用程序中使用pyQGIS

首先,导入QGIS模块,然后设置QGIS路径。如果用户在调用setPrefixPath的时候将第二个参数设置为True,QGIS会将该目录下的所有目录都加入到路径中。最后调用initQgis()方法,让QIGS查找所有有效的数据源。代码如下:
from qgis.core import *

#supply path to where is your qgis installed
QgsApplication.setPrefixPath("/path/to/qgis/installation", True)

# load providers
QgsApplication.initQgis()

初始化之后,用户就可以使用QGIS API来工作了,例如加载图层,处理数据,空间分析等。
当用户需要结束应用程序的时候,需要调用exitQgis() 方法,确保所有的资源被清除。代码如下:
QgsApplication.exitQgis()

运行自定义程序

为了确保应用程序能够正确执行,用户需要指定环境变量来告诉应用程序在何处找到QGIS类库和python模块,如果没有设置或者设置错误,则程序不能够正确运行,如下面代码:
>>> import qgis.core
ImportError: No module named qgis.core

上面的错误可以通过设置环境变量PYTHONPATH来解决,在下面命令中,qgispath请用QGIS的安装路径代替:
*    linux:export PYTHONPATH=/qgispath/share/qgis/python
*    windows:set PYTHONPATH=c:\qgispath\python
*    OSX: export PYTHONPATH=/Applications/QGIS.app/Contents/Resources/python/

PYTHON的环境变量设置好之后,还需要设置qgiscore 和 qgisgui的引用目录。
*    linux:export LD_LIBRARY_PATH=/qgispath/lib
*    windows:set PATH=C:\qgispath;%PATH%
*    OSX: export DYLD_LIBRARY_PATH=/Applications/QGIS.app/Contents/MacOS/lib/:/Applications/QGIS.app/Contents/Frameworks/

上面这些命令可以放到一个启动脚本中,系统启动的时候自动加载。

自定义程序部署

用户自定义的程序不输有两种方式:
1 用户分别单独安装QGIS和自定义程序,这种方式好处是安装包比较小,但需要用户配置路径。
2 将QGIS和自定义程序打包在一起发布,这种方式程序安装包比较大,但用户不用配置路径,打开即可使用。

查看原文:http://www.giser.net/?p=1493
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: