用于QGIS 3.8处理的独立pyqgis脚本

时间:2019-12-16 09:22:38

标签: python qgis

使用在cheatsheet中找到的processing模块的代码示例,在qgis python控制台中,我可以打印可用算法的列表。我想通过Windows框的“独立” python脚本执行相同的操作。有可能吗?

我基于"C:\OSGeo4W64\bin\python-qgis.bat"(来自this answer)制作了Windows批处理脚本来设置环境:

@ECHO OFF 

REM this batch file sets required environment variables to allow pyqgis scripts to work
REM and then runs VS Code in that environment.

set OSGEO4W_ROOT=C:\OSGeo4W64

@echo off
call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
call "%OSGEO4W_ROOT%\bin\qt5_env.bat"
call "%OSGEO4W_ROOT%\bin\py3_env.bat"

@echo off
path %OSGEO4W_ROOT%\bin;%OSGEO4W_ROOT%\apps\qgis\bin;%PATH%
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/qgis
set GDAL_FILENAME_IS_UTF8=YES

set VSI_CACHE=TRUE
set VSI_CACHE_SIZE=1000000
set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\qgis\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins
set PYTHONPATH=%OSGEO4W_ROOT%\apps\qgis\python;%PYTHONPATH%

cd /d %~dp0

SET VSCBIN=C:\Program Files\Microsoft VS Code\

call "%VSCBIN%\Code.exe" %*

然后,在运行该批处理脚本之后,我在VS Code中创建了一个与备忘单中内容相同的python脚本:

from qgis.core import QgsApplication

for alg in QgsApplication.processingRegistry().algorithms():
    print("{}:{} --> {}".format(alg.provider().name(), alg.name(), alg.displayName()))

但是它不会产生任何输出。它不会产生任何错误,因此仅需一点点进展。从通过运行批处理文件"C:\OSGeo4W64\bin\python-qgis.bat"打开的python控制台运行时,此代码也将不起作用。

我可以从其他示例中看到,我可能还需要像这样初始化QgsApplication:

from qgis.core import QgsApplication

# Supply path to qgis install location
QgsApplication.setPrefixPath("C:\\OSGeo4W64\\apps\\qgis", True)
# (not sure why the above line is needed as the batch file already sets the prefix path)

# init Qgis, but don't create the GUI
qgs = QgsApplication([], False)
qgs.initQgis()

for alg in QgsApplication.processingRegistry().algorithms():
    print("{}:{} --> {}".format(alg.provider().name(), alg.name(), alg.displayName()))

但是仍然没有输出。我没有错误,所以我知道导入必须没问题。似乎与QGIS本身没有任何“链接”。我在做什么错了?

0 个答案:

没有答案