2024-11-29 15:38:02 +01:00

104 lines
4.5 KiB
Python

"""
***************************************************************************
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