File: outputs.py

package info (click to toggle)
qgis 3.40.6%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,181,336 kB
  • sloc: cpp: 1,593,302; python: 370,494; xml: 23,474; perl: 3,664; sh: 3,482; ansic: 2,257; sql: 2,133; yacc: 1,068; lex: 577; javascript: 540; lisp: 411; makefile: 157
file content (103 lines) | stat: -rw-r--r-- 4,561 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
"""
***************************************************************************
    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