最近在QGIS中使用了内置的python console以及自带的处理算法解决问题,但python console内置在软件内部,想要使用必须打开QGIS,而且计算效率低。因此,希望能够在软件外部调用QGIS的API和算法等。
一开始希望使用anaconda内的spyder作为python IDE来实现,但使用过程中发现,anaconda本身的运行的python环境和QGIS的python环境不兼容,暂时没解决,所以计划使用pycharm作为独立的IDE,来运行QGIS的python环境。
将QGIS相关的路径配置到环境变量当中;
PATH变量
C:\software\QGIS\apps\qgis-ltr\bin
C:\software\QGIS\apps\Python37
PYTHONPATH变量
C:\software\QGIS\apps\qgis-ltr\python;
C:\software\QGIS\apps\qgis-ltr\bin;
C:\software\QGIS\apps\qgis-ltr\python\qgis;
(其中的qgis-ltr也可能是qgis,根据自己的目录设置)
打开file->setting,设置Python Interpreter;点击add,添加\QGIS\bin\python-qgis-ltr.bat作为python环境
当然,也可以在一开始新建项目的时候就指定好python环境。选择QGIS的python解释器
QGIS的API是由C++写的,后面封装成python包,调用API一般需要同时使用到dll文件和python的包才行。因此,导入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 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()