Example #1
0
 def defineCharacteristics(self):
     self.name = "Bar plot"
     self.group = "Graphics"
     self.addParameter(ParameterTable(self.INPUT, "Input table"))
     self.addParameter(ParameterTableField(self.NAME_FIELD, "Category name field", self.INPUT))
     self.addParameter(ParameterTableField(self.VALUE_FIELD, "Value field", self.INPUT))
     self.addOutput(OutputHTML(self.OUTPUT, "Output"))
    def defineCharacteristics(self):
        self.name = 'Basic statistics for numeric fields'
        self.group = 'Vector table tools'

        self.addParameter(
            ParameterVector(self.INPUT_LAYER, 'Input vector layer',
                            ParameterVector.VECTOR_TYPE_ANY, False))
        self.addParameter(
            ParameterTableField(self.FIELD_NAME,
                                'Field to calculate statistics on',
                                self.INPUT_LAYER,
                                ParameterTableField.DATA_TYPE_NUMBER))

        self.addOutput(
            OutputHTML(self.OUTPUT_HTML_FILE, 'Statistics for numeric field'))

        self.addOutput(OutputNumber(self.CV, 'Coefficient of Variation'))
        self.addOutput(OutputNumber(self.MIN, 'Minimum value'))
        self.addOutput(OutputNumber(self.MAX, 'Maximum value'))
        self.addOutput(OutputNumber(self.SUM, 'Sum'))
        self.addOutput(OutputNumber(self.MEAN, 'Mean value'))
        self.addOutput(OutputNumber(self.COUNT, 'Count'))
        self.addOutput(OutputNumber(self.RANGE, 'Range'))
        self.addOutput(OutputNumber(self.MEDIAN, 'Median'))
        self.addOutput(OutputNumber(self.UNIQUE, 'Number of unique values'))
        self.addOutput(OutputNumber(self.STD_DEV, 'Standard deviation'))
 def defineCharacteristics(self):
     self.name = "Raster layer histogram"
     self.group = "Graphics"
     self.addParameter(ParameterRaster(self.INPUT, "Input layer"))
     self.addParameter(ParameterNumber(self.BINS, "Number of bins", 2, None, 10))
     self.addOutput(OutputHTML(self.PLOT, "Output plot"))
     self.addOutput(OutputTable(self.TABLE, "Output table"))
 def defineCharacteristics(self):
     self.name = "Mean and standard deviation plot"
     self.group = "Graphics"
     self.addParameter(ParameterTable(self.INPUT, "Input table"))
     self.addParameter(ParameterTableField(self.NAME_FIELD, "Category name field", self.INPUT,ParameterTableField.DATA_TYPE_ANY))
     self.addParameter(ParameterTableField(self.MEAN_FIELD, "Mean field", self.INPUT))
     self.addParameter(ParameterTableField(self.STDDEV_FIELD, "StdDev field", self.INPUT))
     self.addOutput(OutputHTML(self.OUTPUT, "Output"))
Example #5
0
 def defineCharacteristics(self):
     self.name = 'Raster layer histogram'
     self.group = 'Graphics'
     self.addParameter(ParameterRaster(self.INPUT, 'Input layer'))
     self.addParameter(
         ParameterNumber(self.BINS, 'Number of bins', 2, None, 10))
     self.addOutput(OutputHTML(self.PLOT, 'Output plot'))
     self.addOutput(OutputTable(self.TABLE, 'Output table'))
Example #6
0
    def defineCharacteristics(self):
        self.name = 'Information'
        self.group = '[OGR] Miscellaneous'

        self.addParameter(
            ParameterVector(self.INPUT_LAYER, 'Input layer',
                            [ParameterVector.VECTOR_TYPE_ANY], False))

        self.addOutput(OutputHTML(self.OUTPUT, 'Layer information'))
Example #7
0
    def defineCharacteristics(self):
        self.name = 'Execute SQL'
        self.group = '[OGR] Miscellaneous'

        self.addParameter(ParameterVector(self.INPUT_LAYER, 'Input layer',
                          [ParameterVector.VECTOR_TYPE_ANY], False))
        self.addParameter(ParameterString(self.SQL, 'SQL', ''))

        self.addOutput(OutputHTML(self.OUTPUT, 'SQL result'))
Example #8
0
    def defineCharacteristics(self):
        self.name = "ogrinfo"
        self.group = "[OGR] Miscellaneous"

        self.addParameter(
            ParameterVector(self.INPUT_LAYER, "Input layer",
                            [ParameterVector.VECTOR_TYPE_ANY], False))

        self.addOutput(OutputHTML(self.OUTPUT, "Layer information"))
Example #9
0
 def defineCharacteristics(self):
     self.name = 'Information'
     self.group = '[GDAL] Miscellaneous'
     self.addParameter(ParameterRaster(information.INPUT, 'Input layer',
                       False))
     self.addParameter(ParameterBoolean(information.NOGCP,
                       'Suppress GCP info', False))
     self.addParameter(ParameterBoolean(information.NOMETADATA,
                       'Suppress metadata info', False))
     self.addOutput(OutputHTML(information.OUTPUT, 'Layer information'))
Example #10
0
 def defineCharacteristics(self):
     self.name = 'Polar plot'
     self.group = 'Graphics'
     self.addParameter(ParameterTable(self.INPUT, 'Input table'))
     self.addParameter(
         ParameterTableField(self.NAME_FIELD, 'Category name field',
                             self.INPUT))
     self.addParameter(
         ParameterTableField(self.VALUE_FIELD, 'Value field', self.INPUT))
     self.addOutput(OutputHTML(self.OUTPUT, 'Output'))
Example #11
0
 def defineCharacteristics(self):
     self.name = 'List unique values'
     self.group = 'Vector table tools'
     self.addParameter(ParameterVector(self.INPUT_LAYER, 'Input layer',
                       [ParameterVector.VECTOR_TYPE_ANY]))
     self.addParameter(ParameterTableField(self.FIELD_NAME, 'Target field',
                       self.INPUT_LAYER, ParameterTableField.DATA_TYPE_ANY))
     self.addOutput(OutputHTML(self.OUTPUT, 'Unique values'))
     self.addOutput(OutputNumber(self.TOTAL_VALUES, 'Total unique values'))
     self.addOutput(OutputString(self.UNIQUE_VALUES, 'Unique values'))
Example #12
0
 def defineCharacteristics(self):
     self.name = "Information"
     self.group = "[GDAL] Miscellaneous"
     self.addParameter(
         ParameterRaster(information.INPUT, "Input layer", False))
     self.addParameter(
         ParameterBoolean(information.NOGCP, "Suppress GCP info", False))
     self.addParameter(
         ParameterBoolean(information.NOMETADATA, "Suppress metadata info",
                          False))
     self.addOutput(OutputHTML(information.OUTPUT, "Layer information"))
Example #13
0
 def defineCharacteristics(self):
     self.name = "Raster layer statistics"
     self.group = "Raster tools"
     self.addParameter(ParameterRaster(self.INPUT, "Input layer"))
     self.addOutput(OutputHTML(self.OUTPUT_HTML_FILE, "Statistics"))
     self.addOutput(OutputNumber(self.MIN, "Minimum value"))
     self.addOutput(OutputNumber(self.MAX, "Maximum value"))
     self.addOutput(OutputNumber(self.SUM, "Sum"))
     self.addOutput(OutputNumber(self.MEAN, "Mean value"))
     self.addOutput(OutputNumber(self.COUNT, "valid cells count"))
     self.addOutput(OutputNumber(self.COUNT, "No-data cells count"))
     self.addOutput(OutputNumber(self.STD_DEV, "Standard deviation"))
Example #14
0
    def defineCharacteristics(self):
        self.name = "Execute SQL"
        self.group = "[OGR] Miscellaneous"

        #we add the input vector layer. It can have any kind of geometry
        #It is a mandatory (not optional) one, hence the False argument
        self.addParameter(
            ParameterVector(self.INPUT_LAYER, "Input layer",
                            [ParameterVector.VECTOR_TYPE_ANY], False))
        self.addParameter(ParameterString(self.SQL, "SQL", ""))

        self.addOutput(OutputHTML(self.OUTPUT, "SQL result"))
Example #15
0
 def defineCharacteristics(self):
     self.name = 'Vector layer histogram'
     self.group = 'Graphics'
     self.addParameter(
         ParameterVector(self.INPUT, 'Input layer',
                         [ParameterVector.VECTOR_TYPE_ANY]))
     self.addParameter(
         ParameterTableField(self.FIELD, 'Attribute', self.INPUT,
                             ParameterTableField.DATA_TYPE_NUMBER))
     self.addParameter(
         ParameterNumber(self.BINS, 'number of bins', 2, None, 10))
     self.addOutput(OutputHTML(self.OUTPUT, 'Output'))
Example #16
0
 def defineCharacteristics(self):
     self.name = 'Mean and standard deviation plot'
     self.group = 'Graphics'
     self.addParameter(ParameterTable(self.INPUT, 'Input table'))
     self.addParameter(
         ParameterTableField(self.NAME_FIELD, 'Category name field',
                             self.INPUT, ParameterTableField.DATA_TYPE_ANY))
     self.addParameter(
         ParameterTableField(self.MEAN_FIELD, 'Mean field', self.INPUT))
     self.addParameter(
         ParameterTableField(self.STDDEV_FIELD, 'StdDev field', self.INPUT))
     self.addOutput(OutputHTML(self.OUTPUT, 'Output'))
 def defineCharacteristics(self):
     self.name = "Vector layer histogram"
     self.group = "Graphics"
     self.addParameter(
         ParameterVector(self.INPUT, "Input layer",
                         [ParameterVector.VECTOR_TYPE_ANY]))
     self.addParameter(
         ParameterTableField(self.FIELD, "Attribute", self.INPUT,
                             ParameterTableField.DATA_TYPE_NUMBER))
     self.addParameter(
         ParameterNumber(self.BINS, "number of bins", 2, None, 10))
     self.addOutput(OutputHTML(self.OUTPUT, "Output"))
Example #18
0
 def defineCharacteristics(self):
     self.name = 'Raster layer statistics'
     self.group = 'Raster tools'
     self.addParameter(ParameterRaster(self.INPUT, 'Input layer'))
     self.addOutput(OutputHTML(self.OUTPUT_HTML_FILE, 'Statistics'))
     self.addOutput(OutputNumber(self.MIN, 'Minimum value'))
     self.addOutput(OutputNumber(self.MAX, 'Maximum value'))
     self.addOutput(OutputNumber(self.SUM, 'Sum'))
     self.addOutput(OutputNumber(self.MEAN, 'Mean value'))
     self.addOutput(OutputNumber(self.COUNT, 'valid cells count'))
     self.addOutput(OutputNumber(self.COUNT, 'No-data cells count'))
     self.addOutput(OutputNumber(self.STD_DEV, 'Standard deviation'))
Example #19
0
 def defineCharacteristics(self):
     self.name = 'Vector layer scatterplot'
     self.group = 'Graphics'
     self.addParameter(
         ParameterVector(self.INPUT, 'Input layer',
                         [ParameterVector.VECTOR_TYPE_ANY]))
     self.addParameter(
         ParameterTableField(self.XFIELD, 'X attribute', self.INPUT,
                             ParameterTableField.DATA_TYPE_NUMBER))
     self.addParameter(
         ParameterTableField(self.YFIELD, 'Y attribute', self.INPUT,
                             ParameterTableField.DATA_TYPE_NUMBER))
     self.addOutput(OutputHTML(self.OUTPUT, 'Output'))
    def defineCharacteristics(self):
        self.name = "Nearest neighbour analysis"
        self.group = "Vector analysis tools"

        self.addParameter(ParameterVector(self.POINTS, "Points", [ParameterVector.VECTOR_TYPE_POINT]))

        self.addOutput(OutputHTML(self.OUTPUT, "Result"))

        self.addOutput(OutputNumber(self.OBSERVED_MD, "Observed mean distance"))
        self.addOutput(OutputNumber(self.EXPECTED_MD, "Expected mean distance"))
        self.addOutput(OutputNumber(self.NN_INDEX, "Nearest neighbour index"))
        self.addOutput(OutputNumber(self.POINT_COUNT, "Number of points"))
        self.addOutput(OutputNumber(self.Z_SCORE, "Z-Score"))
 def defineCharacteristics(self):
     self.name = "Vector layer scatterplot"
     self.group = "Graphics"
     self.addParameter(
         ParameterVector(self.INPUT, "Input layer",
                         [ParameterVector.VECTOR_TYPE_ANY]))
     self.addParameter(
         ParameterTableField(self.XFIELD, "X attribute", self.INPUT,
                             ParameterTableField.DATA_TYPE_NUMBER))
     self.addParameter(
         ParameterTableField(self.YFIELD, "Y attribute", self.INPUT,
                             ParameterTableField.DATA_TYPE_NUMBER))
     self.addOutput(OutputHTML(self.OUTPUT, "Output"))
    def defineCharacteristics(self):
        self.name = 'Nearest neighbour analysis'
        self.group = 'Vector analysis tools'

        self.addParameter(
            ParameterVector(self.POINTS, 'Points',
                            [ParameterVector.VECTOR_TYPE_POINT]))

        self.addOutput(OutputHTML(self.OUTPUT, 'Result'))

        self.addOutput(OutputNumber(self.OBSERVED_MD,
                                    'Observed mean distance'))
        self.addOutput(OutputNumber(self.EXPECTED_MD,
                                    'Expected mean distance'))
        self.addOutput(OutputNumber(self.NN_INDEX, 'Nearest neighbour index'))
        self.addOutput(OutputNumber(self.POINT_COUNT, 'Number of points'))
        self.addOutput(OutputNumber(self.Z_SCORE, 'Z-Score'))
Example #23
0
 def parseDescription(self, lines):
     self.outputNumberName = ''
     self.outputNumberBool = False
     self.outputStringName = ''
     self.outputStringExist = False
     
     self.script = ''
     self.commands = []
     self.report = False
     self.showPlots = False
     self.showConsoleOutput = False
     self.useRasterPackage = True
     self.passFileNames = False
     self.useShapefilesPackage = False
     self.verboseCommands = []
     ender = 0
     line = lines.next().strip('\n').strip('\r')
     while ender < 10:
         if line.startswith('##'):
             try:
                 self.processParameterLine(line)
             except Exception:
                 raise WrongScriptException('Could not load R script:'
                         + self.descriptionFile + '.\n Problem with line "'
                         + line + '"')
         elif line.startswith('>'):
             self.commands.append(line[1:])
             self.verboseCommands.append(line[1:])
             if not self.showConsoleOutput:
                 self.addOutput(OutputHTML(RAlgorithm.R_CONSOLE_OUTPUT,
                                'R Console Output'))
             self.showConsoleOutput = True
         else:
             if line == '':
                 ender += 1
             else:
                 ender = 0
             self.commands.append(line)
         self.script += line + '\n'
         try:
             line = lines.next().strip('\n').strip('\r')
         except:
             break
Example #24
0
    def defineCharacteristics(self):
        self.name = "Basic statistics for numeric fields"
        self.group = "Vector table tools"

        self.addParameter(ParameterVector(self.INPUT_LAYER, "Input vector layer", ParameterVector.VECTOR_TYPE_ANY, False))
        self.addParameter(ParameterTableField(self.FIELD_NAME, "Field to calculate statistics on",
                                              self.INPUT_LAYER, ParameterTableField.DATA_TYPE_NUMBER))

        self.addOutput(OutputHTML(self.OUTPUT_HTML_FILE, "Statistics for numeric field"))

        self.addOutput(OutputNumber(self.CV, "Coefficient of Variation"))
        self.addOutput(OutputNumber(self.MIN, "Minimum value"))
        self.addOutput(OutputNumber(self.MAX, "Maximum value"))
        self.addOutput(OutputNumber(self.SUM, "Sum"))
        self.addOutput(OutputNumber(self.MEAN, "Mean value"))
        self.addOutput(OutputNumber(self.COUNT, "Count"))
        self.addOutput(OutputNumber(self.RANGE, "Range"))
        self.addOutput(OutputNumber(self.MEDIAN, "Median"))
        self.addOutput(OutputNumber(self.UNIQUE, "Number of unique values"))
        self.addOutput(OutputNumber(self.STD_DEV, "Standard deviation"))
Example #25
0
 def parseDescription(self, lines):
     self.script = ""
     self.commands = []
     self.showPlots = False
     self.showConsoleOutput = False
     self.useRasterPackage = True
     self.passFileNames = False
     self.verboseCommands = []
     ender = 0
     line = lines.next().strip("\n").strip("\r")
     while ender < 10:
         if line.startswith("##"):
             try:
                 self.processParameterLine(line)
             except Exception:
                 raise WrongScriptException("Could not load R script:" +
                                            self.descriptionFile +
                                            ".\n Problem with line \"" +
                                            line + "\"")
         elif line.startswith(">"):
             self.commands.append(line[1:])
             self.verboseCommands.append(line[1:])
             if not self.showConsoleOutput:
                 self.addOutput(
                     OutputHTML(RAlgorithm.R_CONSOLE_OUTPUT,
                                "R Console Output"))
             self.showConsoleOutput = True
         else:
             if line == '':
                 ender += 1
             else:
                 ender = 0
             self.commands.append(line)
         self.script += line + "\n"
         try:
             line = lines.next().strip("\n").strip("\r")
         except:
             break
    def defineCharacteristics(self):
        self.name = "Basic statistics for text fields"
        self.group = "Vector table tools"

        self.addParameter(
            ParameterVector(self.INPUT_LAYER, "Input vector layer",
                            ParameterVector.VECTOR_TYPE_ANY, False))
        self.addParameter(
            ParameterTableField(self.FIELD_NAME,
                                "Field to calculate statistics on",
                                self.INPUT_LAYER,
                                ParameterTableField.DATA_TYPE_STRING))

        self.addOutput(
            OutputHTML(self.OUTPUT_HTML_FILE, "Statistics for text field"))

        self.addOutput(OutputNumber(self.MIN_LEN, "Minimum length"))
        self.addOutput(OutputNumber(self.MAX_LEN, "Maximum length"))
        self.addOutput(OutputNumber(self.MEAN_LEN, "Mean length"))
        self.addOutput(OutputNumber(self.COUNT, "Count"))
        self.addOutput(OutputNumber(self.EMPTY, "Number of empty values"))
        self.addOutput(OutputNumber(self.FILLED, "Number of non-empty values"))
        self.addOutput(OutputNumber(self.UNIQUE, "Number of unique values"))
Example #27
0
    def defineCharacteristics(self):
        self.name = 'Basic statistics for text fields'
        self.group = 'Vector table tools'

        self.addParameter(
            ParameterVector(self.INPUT_LAYER, 'Input vector layer',
                            ParameterVector.VECTOR_TYPE_ANY, False))
        self.addParameter(
            ParameterTableField(self.FIELD_NAME,
                                'Field to calculate statistics on',
                                self.INPUT_LAYER,
                                ParameterTableField.DATA_TYPE_STRING))

        self.addOutput(
            OutputHTML(self.OUTPUT_HTML_FILE, 'Statistics for text field'))

        self.addOutput(OutputNumber(self.MIN_LEN, 'Minimum length'))
        self.addOutput(OutputNumber(self.MAX_LEN, 'Maximum length'))
        self.addOutput(OutputNumber(self.MEAN_LEN, 'Mean length'))
        self.addOutput(OutputNumber(self.COUNT, 'Count'))
        self.addOutput(OutputNumber(self.EMPTY, 'Number of empty values'))
        self.addOutput(OutputNumber(self.FILLED, 'Number of non-empty values'))
        self.addOutput(OutputNumber(self.UNIQUE, 'Number of unique values'))
Example #28
0
    def processParameterLine(self, line):
        param = None
        out = None
        line = line.replace("#", "")
        if line.lower().strip().startswith("showplots"):
            self.showPlots = True
            self.addOutput(OutputHTML(RAlgorithm.RPLOTS, "R Plots"))
            return
        if line.lower().strip().startswith("dontuserasterpackage"):
            self.useRasterPackage = False
            return
        if line.lower().strip().startswith("passfilenames"):
            self.passFileNames = True
            return
        tokens = line.split("=")
        desc = self.createDescriptiveName(tokens[0])
        if tokens[1].lower().strip() == "group":
            self.group = tokens[0]
            return
        if tokens[1].lower().strip().startswith("raster"):
            param = ParameterRaster(tokens[0], desc, False)
        elif tokens[1].lower().strip() == "vector":
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_ANY])
        elif tokens[1].lower().strip() == "table":
            param = ParameterTable(tokens[0], desc, False)
        elif tokens[1].lower().strip().startswith("multiple raster"):
            param = ParameterMultipleInput(tokens[0], desc,
                                           ParameterMultipleInput.TYPE_RASTER)
            param.optional = False
        elif tokens[1].lower().strip() == "multiple vector":
            param = ParameterMultipleInput(
                tokens[0], desc, ParameterMultipleInput.TYPE_VECTOR_ANY)
            param.optional = False
        elif tokens[1].lower().strip().startswith("selection"):
            options = tokens[1].strip()[len("selection"):].split(";")
            param = ParameterSelection(tokens[0], desc, options)
        elif tokens[1].lower().strip().startswith("boolean"):
            default = tokens[1].strip()[len("boolean") + 1:]
            param = ParameterBoolean(tokens[0], desc, default)
        elif tokens[1].lower().strip().startswith("number"):
            try:
                default = float(tokens[1].strip()[len("number") + 1:])
                param = ParameterNumber(tokens[0], desc, default=default)
            except:
                raise WrongScriptException("Could not load R script:" +
                                           self.descriptionFile +
                                           ".\n Problem with line \"" + line +
                                           "\"")
        elif tokens[1].lower().strip().startswith("field"):
            field = tokens[1].strip()[len("field") + 1:]
            found = False
            for p in self.parameters:
                if p.name == field:
                    found = True
                    break
            if found:
                param = ParameterTableField(tokens[0], tokens[0], field)
        elif tokens[1].lower().strip() == "extent":
            param = ParameterExtent(tokens[0], desc)
        elif tokens[1].lower().strip() == "file":
            param = ParameterFile(tokens[0], desc, False)
        elif tokens[1].lower().strip() == "folder":
            param = ParameterFile(tokens[0], desc, True)
        elif tokens[1].lower().strip().startswith("string"):
            default = tokens[1].strip()[len("string") + 1:]
            param = ParameterString(tokens[0], desc, default)
        elif tokens[1].lower().strip().startswith("output raster"):
            out = OutputRaster()
        elif tokens[1].lower().strip().startswith("output vector"):
            out = OutputVector()
        elif tokens[1].lower().strip().startswith("output table"):
            out = OutputTable()
        elif tokens[1].lower().strip().startswith("output file"):
            out = OutputFile()

        if param != None:
            self.addParameter(param)
        elif out != None:
            out.name = tokens[0]
            out.description = tokens[0]
            self.addOutput(out)
        else:
            raise WrongScriptException("Could not load R script:" +
                                       self.descriptionFile +
                                       ".\n Problem with line \"" + line +
                                       "\"")
Example #29
0
    def processParameterLine(self, line):
        param = None
        out = None
        line = line.replace('#', '')

        # If the line is in the format of the text description files for
        # normal algorithms, then process it using parameter and output
        # factories
        if '|' in line:
            self.processDescriptionParameterLine(line)
            return
        if line == "nomodeler":
            self.showInModeler = False
        tokens = line.split('=', 1)
        desc = self.createDescriptiveName(tokens[0])
        if tokens[1].lower().strip() == 'group':
            self.group = tokens[0]
            return
        if tokens[1].lower().strip() == 'name':
            self.name = tokens[0]
            return
        if tokens[1].lower().strip() == 'raster':
            param = ParameterRaster(tokens[0], desc, False)
        elif tokens[1].lower().strip() == 'vector':
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_ANY])
        elif tokens[1].lower().strip() == 'vector point':
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_POINT])
        elif tokens[1].lower().strip() == 'vector line':
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_LINE])
        elif tokens[1].lower().strip() == 'vector polygon':
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_POLYGON])
        elif tokens[1].lower().strip() == 'table':
            param = ParameterTable(tokens[0], desc, False)
        elif tokens[1].lower().strip() == 'multiple raster':
            param = ParameterMultipleInput(tokens[0], desc,
                                           ParameterMultipleInput.TYPE_RASTER)
            param.optional = False
        elif tokens[1].lower().strip() == 'multiple vector':
            param = ParameterMultipleInput(
                tokens[0], desc, ParameterMultipleInput.TYPE_VECTOR_ANY)
            param.optional = False
        elif tokens[1].lower().strip().startswith('selection'):
            options = tokens[1].strip()[len('selection '):].split(';')
            param = ParameterSelection(tokens[0], desc, options)
        elif tokens[1].lower().strip().startswith('boolean'):
            default = tokens[1].strip()[len('boolean') + 1:]
            param = ParameterBoolean(tokens[0], desc, default)
        elif tokens[1].lower().strip() == 'extent':
            param = ParameterExtent(tokens[0], desc)
        elif tokens[1].lower().strip() == 'file':
            param = ParameterFile(tokens[0], desc, False)
        elif tokens[1].lower().strip() == 'folder':
            param = ParameterFile(tokens[0], desc, True)
        elif tokens[1].lower().strip().startswith('number'):
            default = tokens[1].strip()[len('number') + 1:]
            param = ParameterNumber(tokens[0], desc, default=default)
        elif tokens[1].lower().strip().startswith('field'):
            field = tokens[1].strip()[len('field') + 1:]
            found = False
            for p in self.parameters:
                if p.name == field:
                    found = True
                    break
            if found:
                param = ParameterTableField(tokens[0], desc, field)
        elif tokens[1].lower().strip().startswith('string'):
            default = tokens[1].strip()[len('string') + 1:]
            param = ParameterString(tokens[0], desc, default)
        elif tokens[1].lower().strip().startswith('longstring'):
            default = tokens[1].strip()[len('longstring') + 1:]
            param = ParameterString(tokens[0], desc, default, multiline=True)
        elif tokens[1].lower().strip().startswith('crs'):
            default = tokens[1].strip()[len('crs') + 1:]
            if not default:
                default = 'EPSG:4326'
            param = ParameterCrs(tokens[0], desc, default)
        elif tokens[1].lower().strip().startswith('output raster'):
            out = OutputRaster()
        elif tokens[1].lower().strip().startswith('output vector'):
            out = OutputVector()
        elif tokens[1].lower().strip().startswith('output table'):
            out = OutputTable()
        elif tokens[1].lower().strip().startswith('output html'):
            out = OutputHTML()
        elif tokens[1].lower().strip().startswith('output file'):
            out = OutputFile()
            subtokens = tokens[1].split(' ')
            if len(subtokens > 2):
                out.ext = subtokens[2]
        elif tokens[1].lower().strip().startswith('output directory'):
            out = OutputDirectory()
        elif tokens[1].lower().strip().startswith('output number'):
            out = OutputNumber()
        elif tokens[1].lower().strip().startswith('output string'):
            out = OutputString()

        if param is not None:
            self.addParameter(param)
        elif out is not None:
            out.name = tokens[0]
            out.description = desc
            self.addOutput(out)
        else:
            raise WrongScriptException(
                'Could not load script:' + self.descriptionFile
                or '' + '.\n Problem with line "' + line + '"')
Example #30
0
 def processParameterLine(self, line):
     param = None
     out = None
     line = line.replace('#', '')
     if line.lower().strip().startswith('report'):
         self.report = True
         self.addOutput(OutputHTML(RAlgorithm.KNITR_REPORT, 'HTML Report'))
         return
     if line.lower().strip().startswith('showplots'):
         self.showPlots = True
         self.addOutput(OutputHTML(RAlgorithm.RPLOTS, 'R Plots'))
         return
     if line.lower().strip().startswith('dontuserasterpackage'):
         self.useRasterPackage = False
         return
     if line.lower().strip().startswith('passfilenames'):
         self.passFileNames = True
         return
     if line.lower().strip().startswith('shapefilespackage'):
         self.useShapefilesPackage = True
         return
     tokens = line.split('=')
     desc = self.createDescriptiveName(tokens[0])
     if tokens[1].lower().strip() == 'group':
         self.group = tokens[0]
         return
     if tokens[1].lower().strip().startswith('raster'):
         param = ParameterRaster(tokens[0], desc, False)
     elif tokens[1].lower().strip() == 'vector':
         param = ParameterVector(tokens[0], desc,
                                 [ParameterVector.VECTOR_TYPE_ANY])
     elif tokens[1].lower().strip() == 'table':
         param = ParameterTable(tokens[0], desc, False)
     elif tokens[1].lower().strip().startswith('multiple raster'):
         param = ParameterMultipleInput(tokens[0], desc,
                 ParameterMultipleInput.TYPE_RASTER)
         param.optional = False
     elif tokens[1].lower().strip() == 'multiple vector':
         param = ParameterMultipleInput(tokens[0], desc,
                 ParameterMultipleInput.TYPE_VECTOR_ANY)
         param.optional = False
     elif tokens[1].lower().strip().startswith('selection'):
         options = tokens[1].strip()[len('selection'):].split(';')
         param = ParameterSelection(tokens[0], desc, options)
     elif tokens[1].lower().strip().startswith('boolean'):
         default = tokens[1].strip()[len('boolean') + 1:]
         param = ParameterBoolean(tokens[0], desc, default)
     elif tokens[1].lower().strip().startswith('number'):
         try:
             default = float(tokens[1].strip()[len('number') + 1:])
             param = ParameterNumber(tokens[0], desc, default=default)
         except:
             raise WrongScriptException('Could not load R script:'
                     + self.descriptionFile + '.\n Problem with line "'
                     + line + '"')
     elif tokens[1].lower().strip().startswith('field'):
         field = tokens[1].strip()[len('field') + 1:]
         found = False
         for p in self.parameters:
             if p.name == field:
                 found = True
                 break
         if found:
             param = ParameterTableField(tokens[0], desc, field)
     elif tokens[1].lower().strip() == 'extent':
         param = ParameterExtent(tokens[0], desc)
     elif tokens[1].lower().strip() == 'file':
         param = ParameterFile(tokens[0], desc, False)
     elif tokens[1].lower().strip() == 'folder':
         param = ParameterFile(tokens[0], desc, True)
     elif tokens[1].lower().strip().startswith('string'):
         default = tokens[1].strip()[len('string') + 1:]
         param = ParameterString(tokens[0], desc, default)
     elif tokens[1].lower().strip().startswith('output raster'):
         out = OutputRaster()
     elif tokens[1].lower().strip().startswith('output vector'):
         out = OutputVector()
     elif tokens[1].lower().strip().startswith('output table'):
         out = OutputTable()
     elif tokens[1].lower().strip().startswith('output file'):
         out = OutputFile()
     elif tokens[1].lower().strip().startswith('output string'):
         out = OutputString()
         self.outputStringExist = True
         self.outputStringName = tokens[0]
     elif tokens[1].lower().strip().startswith('output number'):
         out = OutputNumber()
         self.outputNumberBool = True
         self.outputNumberName = tokens[0]
         
     if param is not None:
         self.addParameter(param)
     elif out is not None:
         out.name = tokens[0]
         out.description = tokens[0]
         self.addOutput(out)
     else:
         raise WrongScriptException('Could not load R script:'
                                    + self.descriptionFile
                                    + '.\n Problem with line "' + line + '"'
                                    )