Thursday, 9 May 2019

pyqgis 3 - Change Output name in Script - QGIS 3


I exported a model as script using the properly option in QGIS 3.8. The Script works perfectly, but the output name is changed.


Heres a print of the model:


enter image description here


I want that the script´s output name, from the Processing Toolbox, be the one that I designed in the def initAlgorithm section, and not the given default name.


In the model, the output name comes as "output_name" and in the script, the output name comes as "Reprojected".


Here's the converted Script:


    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
from qgis.core import QgsCoordinateReferenceSystem
import processing


class Rename(QgsProcessingAlgorithm):

def initAlgorithm(self, config=None):

self.addParameter(QgsProcessingParameterVectorLayer('shapeinput', 'ShapeInput', types=[QgsProcessing.TypeVector], defaultValue=None))
self.addParameter(QgsProcessingParameterFeatureSink('Output_name', 'output_name', type=QgsProcessing.TypeVectorAnyGeometry, createByDefault=True, defaultValue=None))

def processAlgorithm(self, parameters, context, model_feedback):
# Use a multi-step feedback, so that individual child algorithm progress reports are adjusted for the
# overall progress through the model
feedback = QgsProcessingMultiStepFeedback(1, model_feedback)
results = {}
outputs = {}


# Reproject Layer
alg_params = {
'INPUT': parameters['shapeinput'],
'TARGET_CRS': QgsCoordinateReferenceSystem('EPSG:4326'),
'OUTPUT': parameters['Output_name']
}
outputs['ReprojectLayer'] = processing.run('native:reprojectlayer', alg_params, context=context, feedback=feedback, is_child_algorithm=True)
results['Output_name'] = outputs['ReprojectLayer']['OUTPUT']
return results


def name(self):
return 'rename'

def displayName(self):
return 'rename'

def group(self):
return 'rename'

def groupId(self):

return ''

def createInstance(self):
return Rename()


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...