首先从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()
代码中演示的是QGIS–>vector–>Geoprocessing Tools–>Symmetrical difference,如果想调用其他的算法,可以下载算法列表https://download.youkuaiyun.com/download/xiaoxi___0818/12359081,当然也可以通过QGIS查询,注意是在QGIS中的python console中:
from qgis.core import QgsApplication
for alg in QgsApplication.processingRegistry().algorithms():
print("{}:{} --> {}".format(alg.provider().name(), alg.name(), alg.displayName()))
想知道更多的用法,查询pyqgis cookbook链接:https://docs.qgis.org/3.10/en/docs/pyqgis_developer_cookbook/cheat_sheet.html
刚入坑QGIS,若有错误,请多多指教!转载请注明链接!