""" *************************************************************************** Output.py --------------------- Date : August 2012 Copyright : (C) 2012 by Victor Olaya Email : volayaf at gmail dot com *************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * *************************************************************************** """ __author__ = "Victor Olaya" __date__ = "August 2012" __copyright__ = "(C) 2012, Victor Olaya" import sys from qgis.core import ( QgsExpressionContext, QgsExpressionContextUtils, QgsExpression, QgsExpressionContextScope, QgsProject, QgsSettings, QgsVectorFileWriter, QgsProcessingUtils, QgsProcessingParameterDefinition, QgsProcessingOutputRasterLayer, QgsProcessingOutputVectorLayer, QgsProcessingOutputMapLayer, QgsProcessingOutputHtml, QgsProcessingOutputNumber, QgsProcessingOutputString, QgsProcessingOutputBoolean, QgsProcessingOutputFolder, QgsProcessingOutputMultipleLayers, QgsProcessingOutputPointCloudLayer, ) def getOutputFromString(s): try: if "|" in s and s.startswith("Output"): tokens = s.split("|") params = [t if str(t) != "None" else None for t in tokens[1:]] clazz = getattr(sys.modules[__name__], tokens[0]) return clazz(*params) else: tokens = s.split("=") if tokens[1].lower()[: len("output")] != "output": return None name = tokens[0] description = tokens[0] token = tokens[1].strip()[len("output") + 1 :] out = None if token.lower().strip().startswith("outputraster"): out = QgsProcessingOutputRasterLayer(name, description) elif token.lower().strip() == "outputvector": out = QgsProcessingOutputVectorLayer(name, description) elif token.lower().strip() == "outputlayer": out = QgsProcessingOutputMapLayer(name, description) elif token.lower().strip() == "outputmultilayers": out = QgsProcessingOutputMultipleLayers(name, description) # elif token.lower().strip() == 'vector point': # out = OutputVector(datatype=[dataobjects.TYPE_VECTOR_POINT]) # elif token.lower().strip() == 'vector line': # out = OutputVector(datatype=[OutputVector.TYPE_VECTOR_LINE]) # elif token.lower().strip() == 'vector polygon': # out = OutputVector(datatype=[OutputVector.TYPE_VECTOR_POLYGON]) # elif token.lower().strip().startswith('table'): # out = OutputTable() elif token.lower().strip().startswith("outputhtml"): out = QgsProcessingOutputHtml(name, description) # elif token.lower().strip().startswith('file'): # out = OutputFile() # ext = token.strip()[len('file') + 1:] # if ext: # out.ext = ext elif token.lower().strip().startswith("outputfolder"): out = QgsProcessingOutputFolder(name, description) elif token.lower().strip().startswith("outputnumber"): out = QgsProcessingOutputNumber(name, description) elif token.lower().strip().startswith("outputstring"): out = QgsProcessingOutputString(name, description) elif token.lower().strip().startswith("outputboolean"): out = QgsProcessingOutputBoolean(name, description) elif token.lower().strip().startswith("outputPointCloud"): out = QgsProcessingOutputPointCloudLayer(name, description) # elif token.lower().strip().startswith('extent'): # out = OutputExtent() return out except: return None