Skip to content

Instantly share code, notes, and snippets.

@ka7eh
Created June 15, 2017 22:01
Show Gist options
  • Save ka7eh/2a59c1d25b047934c7da1c4afd1528e4 to your computer and use it in GitHub Desktop.
Save ka7eh/2a59c1d25b047934c7da1c4afd1528e4 to your computer and use it in GitHub Desktop.
An example of how to load and run multiple QGIS algorithms outside of QGIS GUI
import os
import sys
from qgis.core import *
from PyQt4.QtGui import *
home = os.path.expanduser('~')
sys.path.extend([
'/usr/share/qgis/python/plugins/processing',
'/usr/share/qgis/python',
os.path.join(home, '.qgis2/python'),
os.path.join(home, '.qgis2/python/plugins'),
'/usr/share/qgis/python/plugins'
])
import processing
from processing.core.Processing import Processing
from processing.tools import *
app = QApplication([])
QgsApplication.setPrefixPath('/usr', True)
QgsApplication.initQgis()
Processing.initialize()
inp = QgsVectorLayer(os.path.join(home, 'path/to/dataset.gdb/'), 'dataset', 'ogr')
print('Creating Vector Grid')
crs = inp.crs().authid()
extent = ','.join([
str(inp.extent().xMinimum()),
str(inp.extent().xMaximum()),
str(inp.extent().yMinimum()),
str(inp.extent().yMaximum())
])
gridcellsize = 10000
outputs_QGISVECTORGRID_1 = processing.runalg('qgis:creategrid', 1, extent, gridcellsize, gridcellsize, crs, None)
print('Dissolving')
dissolvefields = ['field1', 'field2']
outputs_QGISDISSOLVE_1 = processing.runalg('qgis:dissolve', inp, False, dissolvefields, None)
print('Clipping')
outputs_QGISCLIP_1 = processing.runalg('qgis:clip', outputs_QGISDISSOLVE_1['OUTPUT'],
outputs_QGISVECTORGRID_1['OUTPUT'], None)
print('Exploding')
outputs_QGISMULTIPARTTOSINGLEPARTS_1 = processing.runalg('qgis:multiparttosingleparts', outputs_QGISCLIP_1['OUTPUT'],
None)
print('Cleaning')
cleanminarea = 10
cleanthreshold = 1
outputs = processing.runalg('grass7:v.clean', outputs_QGISMULTIPARTTOSINGLEPARTS_1['OUTPUT'], 0, cleanthreshold, extent, cleanthreshold, cleanminarea, None, None)
QgsApplication.exitQgis()
QApplication.exit()
print(outputs)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment