Qgis+python开发环境配置和简单教程

目录

简介

配置

Qgis+anaconda

原因分析:

解决方法

QGIS库的介绍与使用

包的简介

示例

python调用QGIS中的算法

示例

算法ID的查询(如上算法native:symmetricaldifference)

算法的参数的查询

简介

       QGIS 是开源桌面地理信息系统,基于C++语言进行开发,支持进行二次开发,开发方式有两种,一种插件形式添加个性化的工具,一种是调用QGIS的api进行外部应用开发。

       QGIS系统本身是用C ++编写的,它有自己的API集,也是用C ++编写的。Python API实现为围绕这些C ++ API的包装器。例如,有一个名为QgisInterface的Python类,它充当同名C ++类的包装器。由C ++版本的QgisInterface实现的所有方法,类变量等都可以通过Python包装器获得。

        要想使用QGIS的API进行开发,需要配置QGIS的python,以便能够正常调用其API。

配置

1.先设置系统变量path,要把qgis下的py37目录也放进去(切记要放到最前面,防止被其他地方安装的python覆盖),如:

C:\software\QGIS\apps\Python37;
C:\software\QGIS\bin;
C:\software\QGIS\apps\qgis-ltr\bin;

配置完可以再命令框内输入where python,查看python编译器路径;

 

2.PYTHONPATH变量设置:

PYTHONPATH:

C:\software\QGIS\apps\qgis-ltr\python;
C:\software\QGIS\apps\qgis-ltr\bin;
C:\software\QGIS\apps\qgis-ltr\python\qgis;
C:\software\QGIS\apps\Python37\Lib;
C:\software\QGIS\apps\Python37\Lib\site-packages;
C:\software\QGIS\apps\Python37\DLLs;
C:\software\QGIS\apps\Python37\Scripts;

 

3.PYTHONHOME设置如下,注意那个路径要设置到python37下,而不是qgis的bin下:(本机测试后发现即使不用也不影响运行)

PYTHONHOME:

C:\software\QGIS\apps\Python37\

 

4.检查配置是否成功的方法:

命令框输入python进行python编译器

执行from qgis.core  import *

如果没有提示错误,即可以认为配置成功

 

Qgis+anaconda

本人在本地机器上,使用anaconda对python环境进行管理,使用如上步骤进行配置QGIS的python和api环境时,出现了anacondaspyder无法打开的问题!

原因分析:

QGIS里面自带了python, 还有一些lib,比如qgis, numpy。这可能和一些集成开发环境,比如现在比较流行的anaconda有冲突

anaconda启动的时候,会先执行一个cw.py文件,该python文件主要工作配置anaconda的依赖python环境,文件地址:C:\software\anaconda

这个说明anaconda启动时需要配置其依赖的,当你配置了pythonpath的python环境时,导致anaconda无法顺利执行启动。删除pythonpath的环境变量后,anaconda可以正常启动。

 

解决方法

1.在anaconda中下载qgis相关包;

如果是基于anaconda下载qgis相关的库文件,而不是直接配置QGIS地址的话,能够基于anaconda的环境使用Qgis的包;

由于anaconda没有自带的qgis包,所以需要从其他渠道下载:

使用下面语句之一,从conda-forge通道下载qgis

conda install -c conda-forge qgis
conda install -c conda-forge/label/broken qgis
conda install -c conda-forge/label/cf201901 qgis
conda install -c conda-forge/label/cf202003 qgis

 

2.为QGIS单独弄一个纯粹的文本编辑器

比如,可以下载pycharm或spyder的独立版本,配置后qgis的python环境和包的位置。

 

QGIS库的介绍与使用

包的简介

所有PyQGIS库都在一个名为qgis的包下组织。但是,您通常不会直接导入qgis,因为所有有趣的库都是此主程序包中的子包; 以下是构成PyQGIS库的五个包:

PyQGIS库的五个包

qgis.core 这样可以访问整个QGIS中使用的核心GIS功能。
qgis.gui  这定义了一系列GUI小部件,您可以在自己的程序中包含这些小部件。
qgis.analysis   这提供了空间分析工具来分析矢量和栅格格式数据。
qgis.networkanalysis 这提供了构建和分析拓扑的工具。
qgis.utils 这实现了各种功能,允许您使用Python使用QGIS应用程序。

本文不对各包进行详细的介绍,具体可以查看官方文档和其他博客,推荐连接:

https://qgis.org/pyqgis/master/core/index.html

https://blog.csdn.net/fgh1991/article/details/90273203?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-1-90273203.nonecase#%E7%BB%84%E7%BB%87QGIS%20Python%E5%BA%93

示例

下面举个例子简单介绍,计算图层中所有线要素的长度:

#QGIS内置的python console可以不用导入以下两库
from qgis.core import *
import qgis.utils

#获取指定名称图层(当QGIS项目打开时,可以使用下面语句读取图层)
layer = QgsProject.instance().mapLayersByName("topo_centerroad")[0]
"""
#读取shp文件获取图层
lines_shp = os.path.join(TEST_DATA_DIR, 'lines.shp')
layer = QgsVectorLayer(lines_shp, 'Lines', 'ogr')
"""
#定义坐标转换
transf = QgsCoordinateTransform(QgsCoordinateReferenceSystem("EPSG:4326"),QgsCoordinateReferenceSystem("EPSG:3395"), QgsProject.instance())

#计算图层要素长度
for feature in layer.getFeatures():
    #获取图层要素属性
    id=str(feature.attribute('objectid'))
    #获取图层要素几何
    geom=feature.geometry()
    #图层几何坐标转换
    geom.transform(transf)
    #要素长度计算
    length=geom.length()
    print("道路ID "+id+":"+str(length)+'米')

python调用QGIS中的算法

QGIS除了基础的计算函数(例如计算几何长度)外,还存在一些更加高级的算法,存在于QGIS的工具箱当中,例如最短路径算法。这些算法在QGIS中不是直接用一个函数的继续封装,需要基于另外一套方法进行调用。

示例

首先从QGIS中导入QgsNativeAlgorithms和processing包,值得注意的是processing是在python插件目录下,不是QGIS中的那个。

from qgis.analysis import QgsNativeAlgorithms 
#相对路径 
gis_path = sys.executable process_path = qgis_path.split('apps')[0] + 'apps\qgis\python\plugins' 
sys.path.append(process_path)
 #绝对路径 
#sys.path.append(r'E:\software\QGIS\apps\qgis\python\plugins') 
# processing是插件!! 
import processing from processing.core.Processing import Processing

然后是初始化、调用和关闭:

qgs = QgsApplication([], False) 
qgs.initQgis() 

Processing.initialize() QgsApplication.processingRegistry().addProvider(QgsNativeAlgorithms()) 

processing.run("native:symmetricaldifference", {'INPUT': input[i], 'OVERLAY': over[i], 'OUTPUT': output[i]}) 

qgs.exitQgis()

核心是processing.run,输入参数包括算法ID,和算法的参数

 

算法ID的查询(如上算法native:symmetricaldifference)

1.通过算法查询所有算法

from qgis.core import QgsApplication

for alg in QgsApplication.processingRegistry().algorithms():

    print("{}:{} --> {}".format(alg.provider().name(), alg.name(), alg.displayName()))

2.从QGIS的工具箱内查询ID,如下图所示:

 

算法的参数的查询

使用QGIS工具箱执行后,可以日志面板查看输入的参数类型和格式

 

 

  • 13
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
要配置Python环境以使用QGIS,您可以按照以下步骤进行操作: 1. 安装QGIS软件:首先,您需要下载并安装QGIS软件。您可以从QGIS官方网站(https://www.qgis.org)上找到适用于您操作系统的最新版本。 2. 安装PythonQGIS使用Python作为其脚本语言,因此您需要安装Python。请确保安装与您的操作系统和QGIS版本兼容的Python版本。在安装过程中,请记住选择将Python添加到系统路径中。 3. 安装PyQGIS:PyQGIS是用于在Python中访问和操作QGIS功能的库。您可以使用pip命令来安装PyQGIS。打开命令提示符(或终端)并运行以下命令: ``` pip install pyqgis ``` 这将自动下载并安装PyQGIS库及其依赖项。 4. 配置环境变量:为了使Python正确地与QGIS集成,您需要配置一些环境变量。打开您的系统环境变量设置,并将以下路径添加到您的PATH变量中(根据您的实际安装路径进行替换): - QGIS安装目录中的bin文件夹:例如,C:\Program Files\QGIS 3.x\bin - QGIS安装目录中的apps文件夹:例如,C:\Program Files\QGIS 3.x\apps - QGIS安装目录中的plugins文件夹:例如,C:\Program Files\QGIS 3.x\plugins 添加这些路径后,请确保将更改保存并关闭环境变量设置。 5. 测试安装:现在,您可以通过编写一个简单Python脚本来测试您的安装是否成功。打开Python编辑器(例如,IDLE)并尝试导入PyQGIS: ```python from qgis.core import * ``` 如果没有出现错误,则说明您的配置已成功。您现在可以开始使用PythonQGIS进行交互了。 请注意,这只是一个基本的配置指南,并且可以根据您的操作系统和QGIS版本而有所不同。确保参考相关文档和资源以获取更详细的指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值