from qgis.core import QgsProcessing from qgis.core import QgsProcessingAlgorithm from qgis.core import QgsProcessingMultiStepFeedback from qgis.core import QgsProcessingParameterVectorLayer from qgis.core import QgsProcessingParameterFeatureSink import processing class ExampleAlgo(QgsProcessingAlgorithm): def name(self): return 'ex_script' def displayName(self): return 'Example script' def group(self): return 'Example Scripts' def groupId(self): return 'examplescripts' def createInstance(self): return type(self)() def initAlgorithm(self, config=None): self.addParameter( QgsProcessingParameterVectorLayer( 'input', 'INPUT', types=[QgsProcessing.TypeVectorAnyGeometry] ) ) self.addParameter( QgsProcessingParameterFeatureSink( 'output', 'OUTPUT', type=QgsProcessing.TypeVectorPolygon ) ) def processAlgorithm(self, parameters, context, feedback): feedback = QgsProcessingMultiStepFeedback(1, feedback) results = {} outputs = {} # Buffer alg_params = { 'DISSOLVE': False, 'DISTANCE': 100, 'END_CAP_STYLE': 0, # Round 'INPUT': parameters['input'], 'JOIN_STYLE': 0, # Round 'MITER_LIMIT': 2, 'SEGMENTS': 5, 'OUTPUT': parameters['output'] } outputs['Buffer'] = processing.run( 'native:buffer', alg_params, context=context, feedback=feedback, is_child_algorithm=True) results['Output'] = outputs['Buffer']['OUTPUT'] return results