Exemplo n.º 1
0
    def defineCharacteristics(self):
        self.name, self.i18n_name = self.trAlgorithm('Hillshade')
        self.group, self.i18n_group = self.trAlgorithm('[GDAL] Analysis')
        self.addParameter(ParameterRaster(self.INPUT, self.tr('Input layer')))
        self.addParameter(ParameterNumber(self.BAND,
                                          self.tr('Band number'), 1, 99, 1))
        self.addParameter(ParameterBoolean(self.COMPUTE_EDGES,
                                           self.tr('Compute edges'), False))
        self.addParameter(ParameterBoolean(self.ZEVENBERGEN,
                                           self.tr("Use Zevenbergen&Thorne formula (instead of the Horn's one)"),
                                           False))
        self.addParameter(ParameterNumber(self.Z_FACTOR,
                                          self.tr('Z factor (vertical exaggeration)'),
                                          0.0, 99999999.999999, 1.0))
        self.addParameter(ParameterNumber(self.SCALE,
                                          self.tr('Scale (ratio of vert. units to horiz.)'),
                                          0.0, 99999999.999999, 1.0))
        self.addParameter(ParameterNumber(self.AZIMUTH,
                                          self.tr('Azimuth of the light'), 0.0, 359.0, 315.0))
        self.addParameter(ParameterNumber(self.ALTITUDE,
                                          self.tr('Altitude of the light'), 0.0, 99999999.999999, 45.0))

        self.addOutput(OutputRaster(self.OUTPUT, self.tr('Hillshade')))
Exemplo n.º 2
0
    def defineCharacteristics(self):
        self.name, self.i18n_name = self.trAlgorithm('Peuker Douglas')
        self.cmdName = 'peukerdouglas'
        self.group, self.i18n_group = self.trAlgorithm(
            'Stream Network Analysis tools')

        self.addParameter(
            ParameterRaster(self.ELEVATION_GRID, self.tr('Elevation Grid'),
                            False))
        self.addParameter(
            ParameterNumber(self.CENTER_WEIGHT,
                            self.tr('Center Smoothing Weight'), 0, None, 0.4))
        self.addParameter(
            ParameterNumber(self.SIDE_WEIGHT, self.tr('Side Smoothing Weight'),
                            0, None, 0.1))
        self.addParameter(
            ParameterNumber(self.DIAGONAL_WEIGHT,
                            self.tr('Diagonal Smoothing Weight'), 0, None,
                            0.05))

        self.addOutput(
            OutputRaster(self.STREAM_SOURCE_GRID,
                         self.tr('Stream Source Grid')))
Exemplo n.º 3
0
    def defineCharacteristics(self):
        self.name, self.i18n_name = self.trAlgorithm('Zonal Statistics')
        self.group, self.i18n_group = self.trAlgorithm('Raster tools')

        self.addParameter(
            ParameterRaster(self.INPUT_RASTER, self.tr('Raster layer')))
        self.addParameter(
            ParameterNumber(self.RASTER_BAND, self.tr('Raster band'), 1, 999,
                            1))
        self.addParameter(
            ParameterVector(self.INPUT_VECTOR,
                            self.tr('Vector layer containing zones'),
                            [dataobjects.TYPE_VECTOR_POLYGON]))
        self.addParameter(
            ParameterString(self.COLUMN_PREFIX,
                            self.tr('Output column prefix'), '_'))
        self.addParameter(
            ParameterBoolean(self.GLOBAL_EXTENT,
                             self.tr('Load whole raster in memory')))
        self.addOutput(
            OutputVector(self.OUTPUT_LAYER,
                         self.tr('Zonal statistics'),
                         datatype=[dataobjects.TYPE_VECTOR_POLYGON]))
Exemplo n.º 4
0
 def defineCharacteristics(self):
     self.name = 'Clip raster by mask layer'
     self.group = '[GDAL] Extraction'
     self.addParameter(ParameterRaster(self.INPUT, 'Input layer', False))
     self.addParameter(
         ParameterVector(self.MASK, 'Mask layer',
                         [ParameterVector.VECTOR_TYPE_POLYGON]))
     self.addParameter(
         ParameterString(
             self.NO_DATA,
             'Nodata value, leave as none to take the nodata value from input',
             'none'))
     self.addParameter(
         ParameterBoolean(self.ALPHA_BAND, 'Create and output alpha band',
                          False))
     self.addParameter(
         ParameterBoolean(self.KEEP_RESOLUTION,
                          'Keep resolution of output raster', False))
     self.addParameter(
         ParameterString(self.EXTRA,
                         'Additional creation parameters',
                         '',
                         optional=True))
     self.addOutput(OutputRaster(self.OUTPUT, 'Output layer'))
Exemplo n.º 5
0
    def defineCharacteristics(self):
        self.addParameter(ParameterRaster(self.INPUT, self.tr('Input layer')))
        self.addParameter(
            ParameterNumber(self.BAND, self.tr('Band number'), 1, 99, 1))
        self.addParameter(
            ParameterBoolean(self.COMPUTE_EDGES, self.tr('Compute edges'),
                             False))
        self.addParameter(
            ParameterBoolean(
                self.ZEVENBERGEN,
                self.
                tr("Use Zevenbergen&Thorne formula (instead of the Horn's one)"
                   ), False))
        self.addParameter(
            ParameterBoolean(
                self.TRIG_ANGLE,
                self.tr('Return trigonometric angle (instead of azimuth)'),
                False))
        self.addParameter(
            ParameterBoolean(self.ZERO_FLAT,
                             self.tr('Return 0 for flat (instead of -9999)'),
                             False))

        self.addOutput(OutputRaster(self.OUTPUT, self.tr('Aspect')))
Exemplo n.º 6
0
    def defineCharacteristics(self):
        self.STATS = {self.tr('Count'): QgsZonalStatistics.Count,
                      self.tr('Sum'): QgsZonalStatistics.Sum,
                      self.tr('Mean'): QgsZonalStatistics.Mean,
                      self.tr('Median'): QgsZonalStatistics.Median,
                      self.tr('Std. dev.'): QgsZonalStatistics.StDev,
                      self.tr('Min'): QgsZonalStatistics.Min,
                      self.tr('Max'): QgsZonalStatistics.Max,
                      self.tr('Range'): QgsZonalStatistics.Range,
                      self.tr('Minority'): QgsZonalStatistics.Minority,
                      self.tr('Majority'): QgsZonalStatistics.Majority,
                      self.tr('Variety'): QgsZonalStatistics.Variety,
                      self.tr('All'): QgsZonalStatistics.All
                      }

        self.name, self.i18n_name = self.trAlgorithm('Zonal Statistics (QGIS)')
        self.group, self.i18n_group = self.trAlgorithm('Raster tools')

        self.addParameter(ParameterRaster(self.INPUT_RASTER,
                                          self.tr('Raster layer')))
        self.addParameter(ParameterNumber(self.RASTER_BAND,
                                          self.tr('Raster band'),
                                          1, 999, 1))
        self.addParameter(ParameterVector(self.INPUT_VECTOR,
                                          self.tr('Vector layer containing zones'),
                                          [dataobjects.TYPE_VECTOR_POLYGON]))
        self.addParameter(ParameterString(self.COLUMN_PREFIX,
                                          self.tr('Output column prefix'), '_'))
        self.addParameter(ParameterSelection(self.STATISTICS,
                                             self.tr('Statistics to calculate'),
                                             list(self.STATS.keys()),
                                             multiple=True))
        self.addOutput(OutputVector(self.OUTPUT_LAYER,
                                    self.tr('Zonal statistics'),
                                    True,
                                    datatype=[dataobjects.TYPE_VECTOR_POLYGON]))
Exemplo n.º 7
0
 def initAlgorithm(self, config=None):
     self.addParameter(
         ParameterRaster(self.INPUT, self.tr('Input layer'), False))
     self.addParameter(ParameterString(self.VALUES, self.tr('Values'), ''))
     self.addParameter(
         ParameterSelection(self.UNITS, self.tr('Distance units'),
                            self.DISTUNITS, 0))
     self.addParameter(
         ParameterNumber(self.MAX_DIST,
                         self.tr('Max distance (negative value to ignore)'),
                         -1, 9999, -1))
     self.addParameter(
         ParameterNumber(self.NODATA,
                         self.tr('Nodata (negative value to ignore)'), -1,
                         9999, -1))
     self.addParameter(
         ParameterNumber(
             self.BUF_VAL,
             self.tr('Fixed buf value (negative value to ignore)'), -1,
             9999, -1))
     self.addParameter(
         ParameterSelection(self.RTYPE, self.tr('Output raster type'),
                            self.TYPE, 5))
     self.addOutput(OutputRaster(self.OUTPUT, self.tr('Distance')))
Exemplo n.º 8
0
    def defineCharacteristics(self):
        self.addParameter(ParameterRaster(self.INPUT, self.tr('Input layer')))
        self.addParameter(
            ParameterNumber(self.BAND, self.tr('Band number'), 1, 99, 1))
        self.addParameter(
            ParameterBoolean(self.COMPUTE_EDGES, self.tr('Compute edges'),
                             False))
        self.addParameter(
            ParameterBoolean(
                self.ZEVENBERGEN,
                self.
                tr("Use Zevenbergen&Thorne formula (instead of the Horn's one)"
                   ), False))
        self.addParameter(
            ParameterBoolean(
                self.AS_PERCENT,
                self.tr('Slope expressed as percent (instead of degrees)'),
                False))
        self.addParameter(
            ParameterNumber(self.SCALE,
                            self.tr('Scale (ratio of vert. units to horiz.)'),
                            0.0, 99999999.999999, 1.0))

        self.addOutput(OutputRaster(self.OUTPUT, self.tr('Slope')))
Exemplo n.º 9
0
    def defineCharacteristics(self):
        self.name = "extract regular grid"
        self.group = "[pktools] raster/vector"
        self.addParameter(ParameterRaster(self.INPUT, 'Input raster data set'))
        self.addParameter(
            ParameterSelection(self.RULE, "extraction rule", self.RULE_OPTIONS,
                               0))

        self.addOutput(OutputVector(self.OUTPUT, 'Output vector data set'))
        self.addParameter(
            ParameterSelection(self.FORMAT, 'Destination Format', FORMATS))
        self.addParameter(
            ParameterNumber(
                self.BUFFER,
                "Buffer for calculating statistics for point features", 1, 25,
                1))
        self.addParameter(
            ParameterNumber(self.GRID,
                            "Cell grid size (in projected units, e.g,. m)", 0,
                            1000000, 100))

        self.addParameter(
            ParameterString(
                self.SRCNODATA,
                "invalid value(s) for input raster dataset (e.g., 0;255)",
                "none"))
        self.addParameter(
            ParameterString(
                self.BNDNODATA,
                "Band(s) in input image to check if pixel is valid (e.g., 0;1)",
                "0"))
        self.addParameter(
            ParameterString(self.EXTRA,
                            'Additional parameters',
                            '',
                            optional=True))
Exemplo n.º 10
0
 def defineCharacteristics(self):
     self.name = 'Warp (reproject)'
     self.group = '[GDAL] Projections'
     self.addParameter(ParameterRaster(self.INPUT, 'Input layer', False))
     self.addParameter(
         ParameterCrs(self.SOURCE_SRS, 'Source SRS (EPSG Code)',
                      'EPSG:4326'))
     self.addParameter(
         ParameterCrs(self.DEST_SRS, 'Destination SRS (EPSG Code)',
                      'EPSG:4326'))
     self.addParameter(
         ParameterNumber(
             self.TR,
             'Output file resolution in target georeferenced units (leave 0 for no change)',
             0.0, None, 0.0))
     self.addParameter(
         ParameterSelection(self.METHOD, 'Resampling method',
                            self.METHOD_OPTIONS))
     self.addParameter(
         ParameterString(self.EXTRA,
                         'Additional creation parameters',
                         '',
                         optional=True))
     self.addOutput(OutputRaster(self.OUTPUT, 'Output layer'))
Exemplo n.º 11
0
    def defineCharacteristics(self):
        self.name, self.i18n_name = self.trAlgorithm('Contour')
        self.group, self.i18n_group = self.trAlgorithm('[GDAL] Extraction')
        self.addParameter(
            ParameterRaster(self.INPUT_RASTER, self.tr('Input layer'), False))
        self.addParameter(
            ParameterNumber(self.INTERVAL,
                            self.tr('Interval between contour lines'), 0.0,
                            99999999.999999, 10.0))
        self.addParameter(
            ParameterString(
                self.FIELD_NAME,
                self.
                tr('Attribute name (if not set, no elevation attribute is attached)'
                   ),
                'ELEV',
                optional=True))
        self.addParameter(
            ParameterString(self.EXTRA,
                            self.tr('Additional creation parameters'),
                            '',
                            optional=True))

        self.addOutput(OutputVector(self.OUTPUT_VECTOR, self.tr('Contours')))
Exemplo n.º 12
0
 def defineCharacteristics(self):
     self.name, self.i18n_name = self.trAlgorithm('Raster calculator')
     self.group, self.i18n_group = self.trAlgorithm('[GDAL] Miscellaneous')
     self.addParameter(ParameterRaster(
         self.INPUT_A, self.tr('Input layer A'), False))
     self.addParameter(ParameterString(self.BAND_A,
                                       self.tr('Number of raster band for raster A'), '1', optional=True))
     self.addParameter(ParameterRaster(
         self.INPUT_B, self.tr('Input layer B'), True))
     self.addParameter(ParameterString(self.BAND_B,
                                       self.tr('Number of raster band for raster B'), '1', optional=True))
     self.addParameter(ParameterRaster(
         self.INPUT_C, self.tr('Input layer C'), True))
     self.addParameter(ParameterString(self.BAND_C,
                                       self.tr('Number of raster band for raster C'), '1', optional=True))
     self.addParameter(ParameterRaster(
         self.INPUT_D, self.tr('Input layer D'), True))
     self.addParameter(ParameterString(self.BAND_D,
                                       self.tr('Number of raster band for raster D'), '1', optional=True))
     self.addParameter(ParameterRaster(
         self.INPUT_E, self.tr('Input layer E'), True))
     self.addParameter(ParameterString(self.BAND_E,
                                       self.tr('Number of raster band for raster E'), '1', optional=True))
     self.addParameter(ParameterRaster(
         self.INPUT_F, self.tr('Input layer F'), True))
     self.addParameter(ParameterString(self.BAND_F,
                                       self.tr('Number of raster band for raster F'), '1', optional=True))
     self.addParameter(ParameterString(self.FORMULA,
                                       self.tr('Calculation in gdalnumeric syntax using +-/* or any numpy array functions (i.e. logical_and())'), 'A*2', optional=False))
     self.addParameter(ParameterString(self.NO_DATA,
                                       self.tr('Set output nodata value'), '', optional=True))
     self.addParameter(ParameterSelection(self.RTYPE,
                                          self.tr('Output raster type'), self.TYPE, 5))
     #self.addParameter(ParameterBoolean(
     #    self.DEBUG, self.tr('Print debugging information'), False))
     self.addParameter(ParameterString(self.EXTRA,
                                       self.tr('Additional creation parameters'), '', optional=True))
     self.addOutput(OutputRaster(self.OUTPUT, self.tr('Calculated')))
Exemplo n.º 13
0
 def __init__(self):
     super().__init__()
     self.addParameter(ParameterRaster(
         self.INPUT_A, self.tr('Input layer A'), False))
     self.addParameter(ParameterString(self.BAND_A,
                                       self.tr('Number of raster band for raster A'), '1', optional=True))
     self.addParameter(ParameterRaster(
         self.INPUT_B, self.tr('Input layer B'), True))
     self.addParameter(ParameterString(self.BAND_B,
                                       self.tr('Number of raster band for raster B'), '1', optional=True))
     self.addParameter(ParameterRaster(
         self.INPUT_C, self.tr('Input layer C'), True))
     self.addParameter(ParameterString(self.BAND_C,
                                       self.tr('Number of raster band for raster C'), '1', optional=True))
     self.addParameter(ParameterRaster(
         self.INPUT_D, self.tr('Input layer D'), True))
     self.addParameter(ParameterString(self.BAND_D,
                                       self.tr('Number of raster band for raster D'), '1', optional=True))
     self.addParameter(ParameterRaster(
         self.INPUT_E, self.tr('Input layer E'), True))
     self.addParameter(ParameterString(self.BAND_E,
                                       self.tr('Number of raster band for raster E'), '1', optional=True))
     self.addParameter(ParameterRaster(
         self.INPUT_F, self.tr('Input layer F'), True))
     self.addParameter(ParameterString(self.BAND_F,
                                       self.tr('Number of raster band for raster F'), '1', optional=True))
     self.addParameter(ParameterString(self.FORMULA,
                                       self.tr('Calculation in gdalnumeric syntax using +-/* or any numpy array functions (i.e. logical_and())'), 'A*2', optional=False))
     self.addParameter(ParameterString(self.NO_DATA,
                                       self.tr('Set output nodata value'), '', optional=True))
     self.addParameter(ParameterSelection(self.RTYPE,
                                          self.tr('Output raster type'), self.TYPE, 5))
     #self.addParameter(ParameterBoolean(
     #    self.DEBUG, self.tr('Print debugging information'), False))
     self.addParameter(ParameterString(self.EXTRA,
                                       self.tr('Additional creation parameters'), '', optional=True))
     self.addOutput(OutputRaster(self.OUTPUT, self.tr('Calculated')))
Exemplo n.º 14
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
            return
        tokens = line.split('=', 1)
        desc = self.createDescriptiveName(tokens[0])
        if tokens[1].lower().strip() == 'group':
            self.group = self.i18n_group = tokens[0]
            return
        if tokens[1].lower().strip() == 'name':
            self.name = self.i18n_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('selectionfromfile'):
            options = tokens[1].strip()[len('selectionfromfile '):].split(';')
            param = ParameterSelection(tokens[0], desc, options, isSource=True)
        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(
                self.tr('Could not load script: %s.\n'
                        'Problem with line "%s"', 'ScriptAlgorithm') % (self.descriptionFile or '', line))
Exemplo n.º 15
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() == '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().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(
                    self.tr('Could not load R script: %s.\n Problem with line %s' % (self.descriptionFile, 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() == 'crs':
            param = ParameterCrs(tokens[0], desc)
        elif tokens[1].lower().strip() == 'point':
            param = ParameterPoint(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('longstring'):
            default = tokens[1].strip()[len('longstring') + 1:]
            param = ParameterString(tokens[0], desc, default, multiline=True)
        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 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(
                self.tr('Could not load R script: %s.\n Problem with line %s' % (self.descriptionFile, line)))
Exemplo n.º 16
0
    def processInputParameterToken(self, token, name):
        param = None

        descName = self.createDescriptiveName(name)

        if token.lower().strip() == 'raster':
            param = ParameterRaster(name, descName, False)
        elif token.lower().strip() == 'vector':
            param = ParameterVector(name, descName,
                                    [dataobjects.TYPE_VECTOR_ANY])
        elif token.lower().strip() == 'vector point':
            param = ParameterVector(name, descName,
                                    [dataobjects.TYPE_VECTOR_POINT])
        elif token.lower().strip() == 'vector line':
            param = ParameterVector(name, descName,
                                    [dataobjects.TYPE_VECTOR_LINE])
        elif token.lower().strip() == 'vector polygon':
            param = ParameterVector(name, descName,
                                    [dataobjects.TYPE_VECTOR_POLYGON])
        elif token.lower().strip() == 'table':
            param = ParameterTable(name, descName, False)
        elif token.lower().strip() == 'multiple raster':
            param = ParameterMultipleInput(name, descName,
                                           dataobjects.TYPE_RASTER)
            param.optional = False
        elif token.lower().strip() == 'multiple vector':
            param = ParameterMultipleInput(name, descName,
                                           dataobjects.TYPE_VECTOR_ANY)
            param.optional = False
        elif token.lower().strip().startswith('selectionfromfile'):
            options = token.strip()[len('selectionfromfile '):].split(';')
            param = ParameterSelection(name, descName, options, isSource=True)
        elif token.lower().strip().startswith('selection'):
            options = token.strip()[len('selection '):].split(';')
            param = ParameterSelection(name, descName, options)
        elif token.lower().strip().startswith('boolean'):
            default = token.strip()[len('boolean') + 1:]
            if default:
                param = ParameterBoolean(name, descName, default)
            else:
                param = ParameterBoolean(name, descName)
        elif token.lower().strip() == 'extent':
            param = ParameterExtent(name, descName)
        elif token.lower().strip() == 'point':
            param = ParameterPoint(name, descName)
        elif token.lower().strip() == 'file':
            param = ParameterFile(name, descName, False)
        elif token.lower().strip() == 'folder':
            param = ParameterFile(name, descName, True)
        elif token.lower().strip().startswith('number'):
            default = token.strip()[len('number') + 1:]
            if default:
                param = ParameterNumber(name, descName, default=default)
            else:
                param = ParameterNumber(name, descName)
        elif token.lower().strip().startswith('field'):
            if token.lower().strip().startswith('field number'):
                field = token.strip()[len('field number') + 1:]
                datatype = ParameterTableField.DATA_TYPE_NUMBER
            elif token.lower().strip().startswith('field string'):
                field = token.strip()[len('field string') + 1:]
                datatype = ParameterTableField.DATA_TYPE_STRING
            else:
                field = token.strip()[len('field') + 1:]
                datatype = ParameterTableField.DATA_TYPE_ANY
            found = False
            for p in self.parameters:
                if p.name == field:
                    found = True
                    break
            if found:
                param = ParameterTableField(
                    name=name,
                    description=descName,
                    parent=field,
                    datatype=datatype
                )
        elif token.lower().strip().startswith('multiple field'):
            if token.lower().strip().startswith('multiple field number'):
                field = token.strip()[len('multiple field number') + 1:]
                datatype = ParameterTableMultipleField.DATA_TYPE_NUMBER
            elif token.lower().strip().startswith('multiple field string'):
                field = token.strip()[len('multiple field string') + 1:]
                datatype = ParameterTableMultipleField.DATA_TYPE_STRING
            else:
                field = token.strip()[len('multiple field') + 1:]
                datatype = ParameterTableMultipleField.DATA_TYPE_ANY
            found = False
            for p in self.parameters:
                if p.name == field:
                    found = True
                    break
            if found:
                param = ParameterTableMultipleField(
                    name=name,
                    description=descName,
                    parent=field,
                    datatype=datatype
                )
        elif token.lower().strip().startswith('string'):
            default = token.strip()[len('string') + 1:]
            if default:
                param = ParameterString(name, descName, default)
            else:
                param = ParameterString(name, descName)
        elif token.lower().strip().startswith('longstring'):
            default = token.strip()[len('longstring') + 1:]
            if default:
                param = ParameterString(name, descName, default, multiline=True)
            else:
                param = ParameterString(name, descName, multiline=True)
        elif token.lower().strip().startswith('crs'):
            default = token.strip()[len('crs') + 1:]
            if default:
                param = ParameterCrs(name, descName, default)
            else:
                param = ParameterCrs(name, descName)

        return param
Exemplo n.º 17
0
 def defineCharacteristics(self):
     self.name, self.i18n_name = self.trAlgorithm('Extract projection')
     self.group, self.i18n_group = self.trAlgorithm('[GDAL] Projections')
     self.addParameter(ParameterRaster(self.INPUT, self.tr('Input file')))
     self.addParameter(ParameterBoolean(self.PRJ_FILE,
                                        self.tr('Create also .prj file'), False))
Exemplo n.º 18
0
 def processInputParameterToken(self, token, name):
     param = None
     
     descName = self.createDescriptiveName(name)
     
     if token.lower().strip() == 'raster':
         param = ParameterRaster(name, descName, False)
     elif token.lower().strip() == 'vector':
         param = ParameterVector(name, descName,
                                 [ParameterVector.VECTOR_TYPE_ANY])
     elif token.lower().strip() == 'vector point':
         param = ParameterVector(name, descName,
                                 [ParameterVector.VECTOR_TYPE_POINT])
     elif token.lower().strip() == 'vector line':
         param = ParameterVector(name, descName,
                                 [ParameterVector.VECTOR_TYPE_LINE])
     elif token.lower().strip() == 'vector polygon':
         param = ParameterVector(name, descName,
                                 [ParameterVector.VECTOR_TYPE_POLYGON])
     elif token.lower().strip() == 'table':
         param = ParameterTable(name, descName, False)
     elif token.lower().strip() == 'multiple raster':
         param = ParameterMultipleInput(name, descName,
                                        ParameterMultipleInput.TYPE_RASTER)
         param.optional = False
     elif token.lower().strip() == 'multiple vector':
         param = ParameterMultipleInput(name, descName,
                                        ParameterMultipleInput.TYPE_VECTOR_ANY)
         param.optional = False
     elif token.lower().strip().startswith('selectionfromfile'):
         options = token.strip()[len('selectionfromfile '):].split(';')
         param = ParameterSelection(name, descName, options, isSource=True)
     elif token.lower().strip().startswith('selection'):
         options = tokens[1].strip()[len('selection '):].split(';')
         param = ParameterSelection(name, descName, options)
     elif token.lower().strip().startswith('boolean'):
         default = token.strip()[len('boolean') + 1:]
         param = ParameterBoolean(name, descName, default)
     elif token.lower().strip() == 'extent':
         param = ParameterExtent(name, descName)
     elif token.lower().strip() == 'file':
         param = ParameterFile(name, descName, False)
     elif token.lower().strip() == 'folder':
         param = ParameterFile(name, descName, True)
     elif token.lower().strip().startswith('number'):
         default = token.strip()[len('number') + 1:]
         param = ParameterNumber(name, descName, default=default)
     elif token.lower().strip().startswith('field'):
         field = token.strip()[len('field') + 1:]
         found = False
         for p in self.parameters:
             if p.name == field:
                 found = True
                 break
         if found:
             param = ParameterTableField(name, descName, field)
     elif token.lower().strip().startswith('string'):
         default = token.strip()[len('string') + 1:]
         param = ParameterString(name, descName, default)
     elif token.lower().strip().startswith('longstring'):
         default = token.strip()[len('longstring') + 1:]
         param = ParameterString(name, descName, default, multiline=True)
     elif token.lower().strip().startswith('crs'):
         default = token.strip()[len('crs') + 1:]
         if not default:
             default = 'EPSG:4326'
         param = ParameterCrs(name, descName, default)
         
     return param
Exemplo n.º 19
0
    def defineCharacteristics(self):
        self.name, self.i18n_name = self.trAlgorithm('Warp (reproject)')
        self.group, self.i18n_group = self.trAlgorithm('[GDAL] Projections')
        self.addParameter(
            ParameterRaster(self.INPUT, self.tr('Input layer'), False))
        self.addParameter(
            ParameterCrs(self.SOURCE_SRS,
                         self.tr('Source SRS'),
                         '',
                         optional=True))
        self.addParameter(
            ParameterCrs(self.DEST_SRS, self.tr('Destination SRS'), ''))
        self.addParameter(
            ParameterString(
                self.NO_DATA,
                self.
                tr("Nodata value, leave blank to take the nodata value from input"
                   ),
                '',
                optional=True))
        self.addParameter(
            ParameterNumber(
                self.TR,
                self.
                tr('Output file resolution in target georeferenced units (leave 0 for no change)'
                   ), 0.0, None, 0.0))
        self.addParameter(
            ParameterSelection(self.METHOD, self.tr('Resampling method'),
                               self.METHOD_OPTIONS))
        self.addParameter(
            ParameterBoolean(
                self.USE_RASTER_EXTENT,
                self.tr('Set georeferenced extents of output file'), False))
        self.addParameter(
            ParameterExtent(self.RASTER_EXTENT,
                            self.tr('Raster extent'),
                            optional=True))
        self.addParameter(
            ParameterCrs(self.EXTENT_CRS,
                         self.tr('CRS of the raster extent'),
                         '',
                         optional=True))

        params = []
        params.append(
            ParameterSelection(self.RTYPE, self.tr('Output raster type'),
                               self.TYPE, 5))
        params.append(
            ParameterSelection(self.COMPRESS,
                               self.tr('GeoTIFF options. Compression type:'),
                               self.COMPRESSTYPE, 4))
        params.append(
            ParameterNumber(self.JPEGCOMPRESSION,
                            self.tr('Set the JPEG compression level'), 1, 100,
                            75))
        params.append(
            ParameterNumber(self.ZLEVEL,
                            self.tr('Set the DEFLATE compression level'), 1, 9,
                            6))
        params.append(
            ParameterNumber(
                self.PREDICTOR,
                self.tr('Set the predictor for LZW or DEFLATE compression'), 1,
                3, 1))
        params.append(
            ParameterBoolean(
                self.TILED,
                self.tr(
                    'Create tiled output (only used for the GTiff format)'),
                False))
        params.append(
            ParameterSelection(
                self.BIGTIFF,
                self.
                tr('Control whether the created file is a BigTIFF or a classic TIFF'
                   ), self.BIGTIFFTYPE, 0))
        params.append(
            ParameterBoolean(
                self.TFW,
                self.
                tr('Force the generation of an associated ESRI world file (.tfw))'
                   ), False))
        params.append(
            ParameterString(self.EXTRA,
                            self.tr('Additional creation parameters'),
                            '',
                            optional=True))

        for param in params:
            param.isAdvanced = True
            self.addParameter(param)

        self.addOutput(OutputRaster(self.OUTPUT, self.tr('Reprojected')))
Exemplo n.º 20
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
            return
        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(
                self.tr("Could not load script: %s.\n" "Problem with line %d", "ScriptAlgorithm")
                % (self.descriptionFile or "", line)
            )
Exemplo n.º 21
0
 def __init__(self):
     super().__init__()
     self.addParameter(ParameterRaster(self.INPUT, self.tr('Input file')))
     self.addParameter(
         ParameterBoolean(self.PRJ_FILE, self.tr('Create also .prj file'),
                          False))
Exemplo n.º 22
0
    def defineCharacteristics(self):

        # The name that the user will see in the toolbox
        self.name = 'Dynamic Time Warping (DTW)'

        # The branch of the toolbox under which the algorithm will appear
        self.group = 'Image manipulation'

        self.addParameter(
            ParameterRaster(self.REF_RASTER, self.tr('Reference image'),
                            False))

        self.addParameter(
            ParameterFile(
                self.REF_CSV,
                self.
                tr('Reference variable (1 csv with 1 value per date).  Delimiter is comma : \',\'.'
                   ),
                ext='csv',
                optional=False))
        ##
        self.addParameter(
            ParameterMultipleInput(self.SYNC_RASTER,
                                   self.tr('Image(s) to sync'),
                                   ParameterMultipleInput.TYPE_RASTER, True))

        #
        self.addParameter(
            ParameterFile(
                self.SYNC_CSV,
                self.
                tr('Sync variable (1 csv with 1 value per date). Respect the same order as the sync raster list. Delimiter is comma : \',\'.'
                   ),
                ext='csv',
                optional=False))

        # add num
        self.addParameter(
            ParameterNumber(
                self.N_SAMPLES,
                self.
                tr('Number of dates to resample (minimum is the number of dates of your largest dataset). -1 to use the minimum.'
                   ),
                minValue=-1,
                default=-1))

        # add num
        self.addParameter(
            ParameterNumber(
                self.N_SPECTRAL_BANDS,
                self.tr('Number of spectral bands used for each date'),
                minValue=1,
                default=4))

        #MASK
        self.addParameter(
            ParameterRaster(
                self.MASK_RASTER,
                self.tr('Mask image. Each pixel > 0 is classed as nodata.'),
                True))

        self.addParameter(
            ParameterNumber(self.NO_DATA,
                            self.tr('No data value'),
                            minValue=-10000,
                            default=-10000))

        # We add a vector layer as output
        self.addOutput(
            OutputDirectory(self.OUTPUT_FOLDER, self.tr('Output folder')))
Exemplo n.º 23
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() == '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().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(
                    self.tr(
                        'Could not load R script: %s.\n Problem with line %s' %
                        (self.descriptionFile, 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() == 'point':
            param = ParameterPoint(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('longstring'):
            default = tokens[1].strip()[len('longstring') + 1:]
            param = ParameterString(tokens[0], desc, default, multiline=True)
        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 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(
                self.tr('Could not load R script: %s.\n Problem with line %s' %
                        (self.descriptionFile, line)))
Exemplo n.º 24
0
    def defineCharacteristics(self):
        self.name, self.i18n_name = self.trAlgorithm('Relief')
        self.group, self.i18n_group = self.trAlgorithm(
            'Raster terrain analysis')

        class ParameterReliefColors(Parameter):
            default_metadata = {
                'widget_wrapper':
                'processing.algs.qgis.ui.ReliefColorsWidget.ReliefColorsWidgetWrapper'
            }

            def __init__(self,
                         name='',
                         description='',
                         parent=None,
                         optional=True):
                Parameter.__init__(self, name, description, None, optional)
                self.parent = parent

            def setValue(self, value):
                if value is None:
                    if not self.optional:
                        return False
                    self.value = None
                    return True

                if value == '':
                    if not self.optional:
                        return False

                if isinstance(value, str):
                    self.value = value if value != '' else None
                else:
                    self.value = ParameterReliefColors.colorsToString(value)
                return True

            def getValueAsCommandLineParameter(self):
                return '"{}"'.format(self.value)

            def getAsScriptCode(self):
                param_type = ''
                param_type += 'relief colors '
                return '##' + self.name + '=' + param_type

            @classmethod
            def fromScriptCode(self, line):
                isOptional, name, definition = _splitParameterOptions(line)
                descName = _createDescriptiveName(name)
                parent = definition.lower().strip()[len('relief colors') + 1:]
                return ParameterReliefColors(name, description, parent)

            @staticmethod
            def colorsToString(colors):
                s = ''
                for c in colors:
                    s += '{:f}, {:f}, {:d}, {:d}, {:d};'.format(
                        c[0], c[1], c[2], c[3], c[4])
                return s[:-1]

        self.addParameter(
            ParameterRaster(self.INPUT_LAYER, self.tr('Elevation layer')))
        self.addParameter(
            ParameterNumber(self.Z_FACTOR, self.tr('Z factor'), 1.0, 999999.99,
                            1.0))
        self.addParameter(
            ParameterBoolean(self.AUTO_COLORS,
                             self.tr('Generate relief classes automatically'),
                             False))
        self.addParameter(
            ParameterReliefColors(self.COLORS, self.tr('Relief colors'),
                                  self.INPUT_LAYER, True))
        self.addOutput(OutputRaster(self.OUTPUT_LAYER, self.tr('Relief')))
        self.addOutput(
            OutputTable(self.FREQUENCY_DISTRIBUTION,
                        self.tr('Frequency distribution')))
Exemplo n.º 25
0
 def okPressed(self):
     description = str(self.nameTextBox.text())
     if description.strip() == '':
         QMessageBox.warning(self, self.tr('Unable to define parameter'),
                             self.tr('Invalid parameter name'))
         return
     if self.param is None:
         validChars = \
             'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
         safeName = ''.join(c for c in description if c in validChars)
         name = safeName.lower()
         i = 2
         while name in self.alg.inputs:
             name = safeName.lower() + str(i)
     else:
         name = self.param.name
     if (self.paramType
             == ModelerParameterDefinitionDialog.PARAMETER_BOOLEAN
             or isinstance(self.param, ParameterBoolean)):
         self.param = ParameterBoolean(name, description,
                                       self.state.isChecked())
     elif (self.paramType
           == ModelerParameterDefinitionDialog.PARAMETER_TABLE_FIELD
           or isinstance(self.param, ParameterTableField)):
         if self.parentCombo.currentIndex() < 0:
             QMessageBox.warning(
                 self, self.tr('Unable to define parameter'),
                 self.tr('Wrong or missing parameter values'))
             return
         parent = self.parentCombo.currentData()
         datatype = self.datatypeCombo.currentData()
         self.param = ParameterTableField(
             name,
             description,
             parent,
             datatype,
             multiple=self.multipleCheck.isChecked())
     elif (self.paramType
           == ModelerParameterDefinitionDialog.PARAMETER_RASTER
           or isinstance(self.param, ParameterRaster)):
         self.param = ParameterRaster(name, description)
     elif (self.paramType
           == ModelerParameterDefinitionDialog.PARAMETER_TABLE
           or isinstance(self.param, ParameterTable)):
         self.param = ParameterTable(name, description)
     elif (self.paramType
           == ModelerParameterDefinitionDialog.PARAMETER_VECTOR
           or isinstance(self.param, ParameterVector)):
         self.param = ParameterVector(
             name, description, [self.shapetypeCombo.currentIndex() - 1])
     elif (self.paramType
           == ModelerParameterDefinitionDialog.PARAMETER_MULTIPLE
           or isinstance(self.param, ParameterMultipleInput)):
         self.param = ParameterMultipleInput(
             name, description,
             self.datatypeCombo.currentIndex() - 1)
     elif (self.paramType
           == ModelerParameterDefinitionDialog.PARAMETER_NUMBER
           or isinstance(self.param, ParameterNumber)):
         try:
             vmin = self.minTextBox.text().strip()
             if vmin == '':
                 vmin = None
             else:
                 vmin = float(vmin)
             vmax = self.maxTextBox.text().strip()
             if vmax == '':
                 vmax = None
             else:
                 vmax = float(vmax)
             self.param = ParameterNumber(name, description, vmin, vmax,
                                          str(self.defaultTextBox.text()))
         except:
             QMessageBox.warning(
                 self, self.tr('Unable to define parameter'),
                 self.tr('Wrong or missing parameter values'))
             return
     elif (self.paramType
           == ModelerParameterDefinitionDialog.PARAMETER_EXPRESSION
           or isinstance(self.param, ParameterExpression)):
         parent = self.parentCombo.currentData()
         self.param = ParameterExpression(
             name,
             description,
             default=str(self.defaultEdit.expression()),
             parent_layer=parent)
     elif (self.paramType
           == ModelerParameterDefinitionDialog.PARAMETER_STRING
           or isinstance(self.param, ParameterString)):
         self.param = ParameterString(name, description,
                                      str(self.defaultTextBox.text()))
     elif (self.paramType
           == ModelerParameterDefinitionDialog.PARAMETER_EXTENT
           or isinstance(self.param, ParameterExtent)):
         self.param = ParameterExtent(name, description)
     elif (self.paramType == ModelerParameterDefinitionDialog.PARAMETER_FILE
           or isinstance(self.param, ParameterFile)):
         isFolder = self.fileFolderCombo.currentIndex() == 1
         self.param = ParameterFile(name, description, isFolder=isFolder)
     elif (self.paramType
           == ModelerParameterDefinitionDialog.PARAMETER_POINT
           or isinstance(self.param, ParameterPoint)):
         self.param = ParameterPoint(name, description,
                                     str(self.defaultTextBox.text()))
     elif (self.paramType == ModelerParameterDefinitionDialog.PARAMETER_CRS
           or isinstance(self.param, ParameterCrs)):
         self.param = ParameterCrs(name,
                                   description,
                                   default=self.selector.crs().authid())
     self.param.optional = not self.requiredCheck.isChecked()
     self.close()
Exemplo n.º 26
0
    def defineCharacteristics(self):
        self.name, self.i18n_name = self.trAlgorithm(
            'Clip raster by mask layer')
        self.group, self.i18n_group = self.trAlgorithm('[GDAL] Extraction')
        self.addParameter(
            ParameterRaster(self.INPUT, self.tr('Input layer'), False))
        self.addParameter(
            ParameterVector(self.MASK, self.tr('Mask layer'),
                            [dataobjects.TYPE_VECTOR_POLYGON]))
        self.addParameter(
            ParameterString(
                self.NO_DATA,
                self.
                tr("Nodata value, leave blank to take the nodata value from input"
                   ),
                '',
                optional=True))
        self.addParameter(
            ParameterBoolean(self.ALPHA_BAND,
                             self.tr('Create and output alpha band'), False))
        self.addParameter(
            ParameterBoolean(
                self.CROP_TO_CUTLINE,
                self.
                tr('Crop the extent of the target dataset to the extent of the cutline'
                   ), True))
        self.addParameter(
            ParameterBoolean(self.KEEP_RESOLUTION,
                             self.tr('Keep resolution of output raster'),
                             False))

        params = []
        params.append(
            ParameterSelection(self.RTYPE, self.tr('Output raster type'),
                               self.TYPE, 5))
        params.append(
            ParameterSelection(self.COMPRESS,
                               self.tr('GeoTIFF options. Compression type:'),
                               self.COMPRESSTYPE, 4))
        params.append(
            ParameterNumber(self.JPEGCOMPRESSION,
                            self.tr('Set the JPEG compression level'), 1, 100,
                            75))
        params.append(
            ParameterNumber(self.ZLEVEL,
                            self.tr('Set the DEFLATE compression level'), 1, 9,
                            6))
        params.append(
            ParameterNumber(
                self.PREDICTOR,
                self.tr('Set the predictor for LZW or DEFLATE compression'), 1,
                3, 1))
        params.append(
            ParameterBoolean(
                self.TILED,
                self.tr(
                    'Create tiled output (only used for the GTiff format)'),
                False))
        params.append(
            ParameterSelection(
                self.BIGTIFF,
                self.
                tr('Control whether the created file is a BigTIFF or a classic TIFF'
                   ), self.BIGTIFFTYPE, 0))
        params.append(
            ParameterBoolean(
                self.TFW,
                self.
                tr('Force the generation of an associated ESRI world file (.tfw))'
                   ), False))
        params.append(
            ParameterString(self.EXTRA,
                            self.tr('Additional creation parameters'),
                            '',
                            optional=True))

        for param in params:
            param.isAdvanced = True
            self.addParameter(param)

        self.addOutput(OutputRaster(self.OUTPUT, self.tr('Clipped (mask)')))
Exemplo n.º 27
0
 def defineCharacteristics(self):
     self.addParameter(ParameterRaster(self.INPUT, self.tr('Raster layer')))
     self.addParameter(
         ParameterFile(self.STYLE, self.tr('Style file'), False, False,
                       'qml'))
     self.addOutput(OutputRaster(self.OUTPUT, self.tr('Styled'), True))
Exemplo n.º 28
0
 def initAlgorithm(self, config=None):
     self.addParameter(ParameterRaster(self.INPUT, self.tr('Input file')))
     self.addParameter(
         ParameterBoolean(self.PRJ_FILE, self.tr('Create also .prj file'),
                          False))
Exemplo n.º 29
0
    def defineCharacteristics(self):
        """Algorithme variable and parameters parameters"""

        CholeAlgorithm.defineCharacteristics(self)

        # The name/group that the user will see in the toolbox
        self.group = 'landscape metrics'
        self.i18n_group = self.tr('landscape metrics')
        self.name = 'sliding multi'
        self.i18n_name = self.tr('sliding multi')

        # === INPUT PARAMETERS ===
        self.addParameter(
            ParameterRaster(name=self.INPUT_LAYER_ASC,
                            description=self.tr('Input layer asc')))

        self.addParameter(
            ParameterSelection(name=self.WINDOW_SHAPE,
                               description=self.tr('Window shape'),
                               options=';'.join(self.types_of_shape)))

        self.addParameter(
            ParameterFile(name=self.FRICTION_FILE,
                          description=self.tr('Friction file')))

        self.addParameter(
            ParameterString(name=self.WINDOW_SIZES,
                            description=self.tr('Windows sizes (pixels)')))

        self.addParameter(
            ParameterNumber(
                name=self.DELTA_DISPLACEMENT,
                description=self.tr('Delta od displacement (pixels)'),
                default=1))

        self.addParameter(
            ParameterBoolean(name=self.INTERPOLATE_VALUES_BOOL,
                             description=self.tr('Interpolate Values'),
                             default=False))

        self.addParameter(
            ParameterString(
                name=self.FILTER,
                description=self.tr('Filters - Analyse only (optional)'),
                default='',
                optional=True))

        self.addParameter(
            ParameterString(
                name=self.UNFILTER,
                default='',
                description=self.tr('Filters - Do not analyse (optional)'),
                optional=True))

        self.addParameter(
            ParameterNumber(
                name=self.MAXIMUM_RATE_MISSING_VALUES,
                description=self.tr('Maximum rate of mising values'),
                minValue=0,
                maxValue=100,
                default=100))

        self.addParameter(
            ParameterString(name=self.METRICS,
                            description=self.tr('Select metrics')))

        # === OUTPUT PARAMETERS ===
        self.addOutput(
            OutputFile(name=self.SAVE_PROPERTIES,
                       description=self.tr('Properties file'),
                       ext='properties'))

        self.addOutput(
            OutputDirectory(name=self.OUTPUT_DIR,
                            description=self.tr('Output directory')))

        self.addParameter(
            ParameterBoolean(name=self.OPEN_ALL_ASC,
                             description=self.tr('Open all ascii'),
                             default=True,
                             optional=True))
Exemplo n.º 30
0
    def defineCharacteristics(self):
        self.addParameter(ParameterRaster(self.INPUT, self.tr('Input layer')))
        self.addParameter(
            ParameterNumber(self.BINS, self.tr('Number of bins'), 2, None, 10))

        self.addOutput(OutputHTML(self.PLOT, self.tr('Histogram')))
Exemplo n.º 31
0
Arquivo: warp.py Projeto: mkhoin/QGIS
    def __init__(self):
        super().__init__()
        self.addParameter(
            ParameterRaster(self.INPUT, self.tr('Input layer'), False))
        self.addParameter(
            ParameterCrs(self.SOURCE_SRS,
                         self.tr('Source SRS'),
                         '',
                         optional=True))
        self.addParameter(
            ParameterCrs(self.DEST_SRS, self.tr('Destination SRS'),
                         'EPSG:4326'))
        self.addParameter(
            ParameterString(
                self.NO_DATA,
                self.
                tr("Nodata value, leave blank to take the nodata value from input"
                   ),
                '',
                optional=True))
        self.addParameter(
            ParameterNumber(
                self.TR,
                self.
                tr('Output file resolution in target georeferenced units (leave 0 for no change)'
                   ), 0.0, None, 0.0))
        self.addParameter(
            ParameterSelection(self.METHOD, self.tr('Resampling method'),
                               self.METHOD_OPTIONS))
        self.addParameter(
            ParameterBoolean(
                self.USE_RASTER_EXTENT,
                self.tr('Set georeferenced extents of output file'), False))
        self.addParameter(
            ParameterExtent(self.RASTER_EXTENT,
                            self.tr('Raster extent'),
                            optional=True))
        self.addParameter(
            ParameterCrs(
                self.EXTENT_CRS,
                self.
                tr('CRS of the raster extent, leave blank for using Destination SRS'
                   ),
                optional=True))
        self.addParameter(
            ParameterString(
                self.OPTIONS,
                self.tr('Additional creation options'),
                optional=True,
                metadata={
                    'widget_wrapper':
                    'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper'
                }))
        self.addParameter(
            ParameterBoolean(
                self.MULTITHREADING,
                self.tr('Use multithreaded warping implementation'), False))
        self.addParameter(
            ParameterSelection(self.RTYPE, self.tr('Output raster type'),
                               self.TYPE, 5))

        self.addOutput(OutputRaster(self.OUTPUT, self.tr('Reprojected')))
Exemplo n.º 32
0
 def defineCharacteristics(self):
     self.addParameter(ParameterVector(self.INPUT, self.tr('Input layer')))
     self.addParameter(ParameterTableField(self.FIELD,
                                           self.tr('Attribute field'), self.INPUT))
     self.addParameter(ParameterRaster(self.INPUT_RASTER,
                                       self.tr('Existing raster layer'), False))
Exemplo n.º 33
0
    def initAlgorithm(self, config=None):
        # Required parameters
        self.addParameter(ParameterRaster(self.INPUT, self.tr('Input layer')))

        # Advanced parameters
        params = []
        params.append(
            ParameterSelection(self.PROFILE,
                               self.tr('Tile cutting profile'),
                               self.PROFILES,
                               0,
                               False,
                               optional=True))
        params.append(
            ParameterSelection(self.RESAMPLING,
                               self.tr('Resampling method'),
                               self.RESAMPLINGS,
                               0,
                               False,
                               optional=True))
        params.append(
            ParameterCrs(
                self.S_SRS,
                self.
                tr('The spatial reference system used for the source input data'
                   ), None, True))
        params.append(
            ParameterString(self.ZOOM, self.tr('Zoom levels to render'), None,
                            False, True))
        params.append(
            ParameterBoolean(
                self.RESUME,
                self.tr('Resume mode, generate only missing files'), False,
                True))
        params.append(
            ParameterString(
                self.NODATA,
                self.tr(
                    'NODATA transparency value to assign to the input data'),
                None, False, True))
        params.append(
            ParameterBoolean(
                self.FORCEKML,
                self.
                tr('Generate KML for Google Earth - default for "geodetic" profile and "raster" in EPSG:4326'
                   ), False, True))
        params.append(
            ParameterBoolean(
                self.NOKML,
                self.tr(
                    'Avoid automatic generation of KML files for EPSG:4326'),
                False, True))
        params.append(
            ParameterString(
                self.URL,
                self.
                tr('URL address where the generated tiles are going to be published'
                   ), None, False, True))
        params.append(
            ParameterSelection(self.WEBVIEWER,
                               self.tr('Web viewer to generate'),
                               self.WEBVIEWERS,
                               0,
                               False,
                               optional=True))
        params.append(
            ParameterString(self.TITLE, self.tr('Title of the map'), None,
                            False, True))
        params.append(
            ParameterString(self.COPYRIGHT, self.tr('Copyright for the map'),
                            None, False, True))
        params.append(
            ParameterString(
                self.GOOGLEKEY,
                self.
                tr('Google Maps API key from http://code.google.com/apis/maps/signup.html'
                   ), None, False, True))
        params.append(
            ParameterString(
                self.BINGKEY,
                self.tr(
                    'Bing Maps API key from https://www.bingmapsportal.com/'),
                None, False, True))

        for param in params:
            param.setFlags(param.flags()
                           | QgsProcessingParameterDefinition.FlagAdvanced)
            self.addParameter(param)

        self.addOutput(
            OutputDirectory(
                self.OUTPUTDIR,
                self.tr('The directory where the tile result is created')))
Exemplo n.º 34
0
 def initAlgorithm(self, config=None):
     self.addParameter(ParameterRaster(self.INPUT_RASTER,
                                       self.tr('Raster layer')))
     self.addParameter(ParameterVector(self.INPUT_VECTOR,
                                       self.tr('Vector layer'), [dataobjects.TYPE_VECTOR_POLYGON]))
     self.addOutput(OutputVector(self.OUTPUT_LAYER, self.tr('Points from polygons'), datatype=[dataobjects.TYPE_VECTOR_POINT]))
Exemplo n.º 35
0
    def defineCharacteristics(self):
        self.name, self.i18n_name = self.trAlgorithm('Clip raster by extent')
        self.group, self.i18n_group = self.trAlgorithm('[GDAL] Extraction')
        self.addParameter(
            ParameterRaster(self.INPUT, self.tr('Input layer'), False))
        self.addParameter(
            ParameterString(
                self.NO_DATA,
                self.
                tr("Nodata value, leave blank to take the nodata value from input"
                   ),
                '',
                optional=True))
        self.addParameter(
            ParameterExtent(self.PROJWIN, self.tr('Clipping extent')))

        params = []
        params.append(
            ParameterSelection(self.RTYPE, self.tr('Output raster type'),
                               self.TYPE, 5))
        params.append(
            ParameterSelection(self.COMPRESS,
                               self.tr('GeoTIFF options. Compression type:'),
                               self.COMPRESSTYPE, 4))
        params.append(
            ParameterNumber(self.JPEGCOMPRESSION,
                            self.tr('Set the JPEG compression level'), 1, 100,
                            75))
        params.append(
            ParameterNumber(self.ZLEVEL,
                            self.tr('Set the DEFLATE compression level'), 1, 9,
                            6))
        params.append(
            ParameterNumber(
                self.PREDICTOR,
                self.tr('Set the predictor for LZW or DEFLATE compression'), 1,
                3, 1))
        params.append(
            ParameterBoolean(
                self.TILED,
                self.tr(
                    'Create tiled output (only used for the GTiff format)'),
                False))
        params.append(
            ParameterSelection(
                self.BIGTIFF,
                self.
                tr('Control whether the created file is a BigTIFF or a classic TIFF'
                   ), self.BIGTIFFTYPE, 0))
        params.append(
            ParameterBoolean(
                self.TFW,
                self.
                tr('Force the generation of an associated ESRI world file (.tfw))'
                   ), False))
        params.append(
            ParameterString(self.EXTRA,
                            self.tr('Additional creation parameters'),
                            '',
                            optional=True))

        for param in params:
            param.isAdvanced = True
            self.addParameter(param)

        self.addOutput(OutputRaster(self.OUTPUT, self.tr('Clipped (extent)')))
Exemplo n.º 36
0
    def processInputParameterToken(self, token, name):
        param = None
        optional = False
        isAdvanced = False

        desc = self.createDescriptiveName(name)

        tokens = token.lower().strip().split(' ')
        if "optional" in tokens[0]:
            optional = True
        if "advanced" in tokens[0]:
            isAdvanced = True
        if optional or isAdvanced:
            token = (' ').join(tokens[1:])

        if token.lower().strip().startswith('raster'):
            param = ParameterRaster(name, desc, False)
        elif token.lower().strip() == 'vector':
            param = ParameterVector(name, desc,
                                    [ParameterVector.VECTOR_TYPE_ANY])
        elif token.lower().strip() == 'vector point':
            param = ParameterVector(name, desc,
                                    [ParameterVector.VECTOR_TYPE_POINT])
        elif token.lower().strip() == 'vector line':
            param = ParameterVector(name, desc,
                                    [ParameterVector.VECTOR_TYPE_LINE])
        elif token.lower().strip() == 'vector polygon':
            param = ParameterVector(name, desc,
                                    [ParameterVector.VECTOR_TYPE_POLYGON])
        elif token.lower().strip() == 'table':
            param = ParameterTable(name, desc, False)
        elif token.lower().strip().startswith('multiple raster'):
            param = ParameterMultipleInput(name, desc,
                                           ParameterMultipleInput.TYPE_RASTER)
            param.optional = False
        elif token.lower().strip() == 'multiple vector':
            param = ParameterMultipleInput(name, desc,
                                           ParameterMultipleInput.TYPE_VECTOR_ANY)
            param.optional = False
        elif token.lower().strip().startswith('selection'):
            options = token.strip()[len('selection'):].split(';')
            param = ParameterSelection(name, desc, options)
        elif token.lower().strip().startswith('boolean'):
            default = token.strip()[len('boolean') + 1:]
            if default:
                param = ParameterBoolean(name, desc, default)
            else:
                param = ParameterBoolean(name, desc)
        elif token.lower().strip().startswith('number'):
            default = token.strip()[len('number') + 1:]
            if default:
                param = ParameterNumber(name, desc, default=default)
            else:
                param = ParameterNumber(name, desc)
        elif token.lower().strip().startswith('field'):
            field = token.strip()[len('field') + 1:]
            found = False
            for p in self.parameters:
                if p.name == field:
                    found = True
                    break
            if found:
                param = ParameterTableField(name, desc, field)
        elif token.lower().strip().startswith('multiple field'):
            field = token.strip()[len('multiple field') + 1:]
            found = False
            for p in self.parameters:
                if p.name == field:
                    found = True
                    break
            if found:
                param = ParameterTableMultipleField(name, desc, field)
        elif token.lower().strip() == 'extent':
            param = ParameterExtent(name, desc)
        elif token.lower().strip() == 'point':
            param = ParameterPoint(name, desc)
        elif token.lower().strip().startswith('file'):
            param = ParameterFile(name, desc, False)
            ext = token.strip()[len('file') + 1:]
            if ext:
                param.ext = ext
        elif token.lower().strip().startswith('folder'):
            param = ParameterFile(name, desc, True)
        elif token.lower().strip().startswith('string'):
            default = token.strip()[len('string') + 1:]
            if default:
                param = ParameterString(name, desc, default)
            else:
                param = ParameterString(name, desc)
        elif token.lower().strip().startswith('longstring'):
            default = token.strip()[len('longstring') + 1:]
            if default:
                param = ParameterString(name, desc, default, multiline=True)
            else:
                param = ParameterString(name, desc, multiline=True)
        elif token.lower().strip().startswith('crs'):
            default = token.strip()[len('crs') + 1:]
            if default:
                param = ParameterCrs(name, desc, default)
            else:
                param = ParameterCrs(name, desc)

        if param is not None:
            param.optional = optional
            param.isAdvanced = isAdvanced

        return param