• QGIS问题
  • 如何将QGIS的处理脚本独立运行(脱离QGIS页面)

我编写了PyQGIS的处理脚本,但是我想在QGIS GUI之外运行它。请问可以这样运行吗?

虽然借助sys.path.append(),我可以导入了处理类Processing,但却无法运行。该怎么解决?

import os, sys
from qgis.core import *

QgsApplication.setPrefixPath('/usr', True)
qgs = QgsApplication([], False)
qgs.initQgis()

sys.path.append('/usr/share/qgis/python/plugins')
from processing.core.Processing import Processing
Processing.initialize()
import processing

layer1 = QgsVectorLayer('data/1.SHP')
layer2 = QgsVectorLayer('data/2.SHP')

processing.run('qgis:union', layer1, layer2, 'test.shp')
  • 我想可以这么修改吧,你可以试试看。

    import sys
    from qgis.core import (
         QgsApplication, 
         QgsProcessingFeedback, 
         QgsVectorLayer
    )
    
    QgsApplication.setPrefixPath('/usr', True)
    qgs = QgsApplication([], False)
    qgs.initQgis()
    
    # 设置处理插件路径
    sys.path.append('/docs/dev/qgis/build/output/python/plugins')
    
    import processing
    from processing.core.Processing import Processing
    Processing.initialize()
    
    layer1 = QgsVectorLayer('/path/to/geodata/1.shp', 'layer 1', 'ogr')
    layer2 = QgsVectorLayer('/path/to/geodata/2.shp', 'layer 2', 'ogr')
    
    # 使用processing.algorithmHelp("qgis:union"),查看参数说明。
    params = { 
        'INPUT' : layer1,
        'OVERLAY' : layer2, 
        'OUTPUT' : '/path/to/output_layer.gpkg|layername=output'
    }
    feedback = QgsProcessingFeedback()
    
    res = processing.run('qgis:union', params, feedback=feedback)
    
    # 输出图层
    res['OUTPUT']

我想可以这么修改吧,你可以试试看。

import sys
from qgis.core import (
     QgsApplication, 
     QgsProcessingFeedback, 
     QgsVectorLayer
)

QgsApplication.setPrefixPath('/usr', True)
qgs = QgsApplication([], False)
qgs.initQgis()

# 设置处理插件路径
sys.path.append('/docs/dev/qgis/build/output/python/plugins')

import processing
from processing.core.Processing import Processing
Processing.initialize()

layer1 = QgsVectorLayer('/path/to/geodata/1.shp', 'layer 1', 'ogr')
layer2 = QgsVectorLayer('/path/to/geodata/2.shp', 'layer 2', 'ogr')

# 使用processing.algorithmHelp("qgis:union"),查看参数说明。
params = { 
    'INPUT' : layer1,
    'OVERLAY' : layer2, 
    'OUTPUT' : '/path/to/output_layer.gpkg|layername=output'
}
feedback = QgsProcessingFeedback()

res = processing.run('qgis:union', params, feedback=feedback)

# 输出图层
res['OUTPUT']
© 2025 北京九州地图科技有限公司 版权所有 京公网安备11010802045452号 京ICP备2023023502号-2