def testGetAsStringWhenFile(self): parameter = ParameterMultipleInput('myName', 'myDesc', datatype=dataobjects.TYPE_FILE) self.assertEqual(parameter.getAsString('/some/path'), '/some/path')
def __init__(self): super().__init__() # Required parameters self.addParameter( ParameterMultipleInput(self.INPUT, self.tr('Input layers'), dataobjects.TYPE_RASTER)) # Advanced parameters params = [] params.append( ParameterString( self.PIXELSIZE, self. tr('Pixel size to be used for the output file (XSIZE YSIZE like 512 512)' ), None, False, True)) params.append( ParameterSelection(self.ALGORITHM, self.tr('Resampling algorithm'), self.ALGO, 0, False, optional=True)) params.append( ParameterCrs(self.S_SRS, self.tr('Override source CRS'), None, True)) params.append( ParameterNumber(self.PYRAMIDLEVELS, self.tr('Number of pyramids levels to build'), None, None, None, True)) params.append( ParameterBoolean(self.ONLYPYRAMIDS, self.tr('Build only the pyramids'), False, True)) params.append( ParameterSelection(self.RTYPE, self.tr('Output raster type'), self.TYPE, 5, False, optional=True)) params.append( ParameterSelection(self.FORMAT, self.tr('Output raster format'), list(GdalUtils.getSupportedRasters().keys()), 0, False, optional=True)) params.append( ParameterBoolean(self.USEDIRFOREACHROW, self.tr('Use a directory for each row'), False, True)) params.append( ParameterString( self.CSVFILE, self. tr('Name of the csv file containing the tile(s) georeferencing information' ), None, False, True)) params.append( ParameterString(self.CSVDELIM, self.tr('Column delimiter used in the CSV file'), None, False, True)) params.append( ParameterString( self.TILEINDEX, self.tr( 'name of shape file containing the result tile(s) index'), None, False, True)) params.append( ParameterString( self.TILEINDEXFIELD, self. tr('name of the attribute containing the tile name in the result shape file' ), None, False, True)) for param in params: param.setFlags(param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(param) self.addOutput( OutputDirectory( self.TARGETDIR, self.tr('The directory where the tile result is created')))
def okPressed(self): description = unicode(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 in ( ModelerParameterDefinitionDialog.PARAMETER_TABLE_FIELD, ModelerParameterDefinitionDialog.PARAMETER_TABLE_MULTIPLE_FIELD)\ or isinstance(self.param, (ParameterTableField, ParameterTableMultipleField)): 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.itemData(self.parentCombo.currentIndex()) datatype = self.datatypeCombo.itemData( self.datatypeCombo.currentIndex()) if (self.paramType == ModelerParameterDefinitionDialog.PARAMETER_TABLE_FIELD or isinstance(self.param, ParameterTableField)): self.param = ParameterTableField( name, description, parent, datatype) else: self.param = ParameterTableMultipleField( name, description, parent, datatype) elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_RASTER or \ isinstance(self.param, ParameterRaster): self.param = ParameterRaster( name, description, self.yesNoCombo.currentIndex() == 1) elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_TABLE or \ isinstance(self.param, ParameterTable): self.param = ParameterTable( name, description, self.yesNoCombo.currentIndex() == 1) elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_VECTOR or \ isinstance(self.param, ParameterVector): self.param = ParameterVector( name, description, [self.shapetypeCombo.currentIndex() - 1], self.yesNoCombo.currentIndex() == 1) elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_MULTIPLE or \ isinstance(self.param, ParameterMultipleInput): self.param = ParameterMultipleInput( name, description, self.datatypeCombo.currentIndex() - 1, self.yesNoCombo.currentIndex() == 1) elif self.paramType == ModelerParameterDefinitionDialog.PARAMETER_NUMBER or \ isinstance(self.param, ParameterNumber): try: vmin = unicode(self.minTextBox.text()).strip() if vmin == '': vmin = None else: vmin = float(vmin) vmax = unicode(self.maxTextBox.text()).strip() if vmax == '': vmax = None else: vmax = float(vmax) self.param = ParameterNumber(name, description, vmin, vmax, unicode(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_STRING or \ isinstance(self.param, ParameterString): self.param = ParameterString(name, description, unicode(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, unicode(self.defaultTextBox.text())) self.param.optional = self.yesNoCombo.currentIndex() == 1 self.close()
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))
def processInputParameterToken(self, token, name): param = None desc = self.createDescriptiveName(name) 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) return param
def defineCharacteristics(self): self.addParameter(ParameterMultipleInput(self.LAYERS, self.tr('Layers to merge'), datatype=dataobjects.TYPE_VECTOR_ANY)) self.addOutput(OutputVector(self.OUTPUT, self.tr('Merged')))
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( 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() == '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 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)))
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()) if not self.requiredCheck.isChecked(): self.param.setFlags( self.param.flags() | QgsProcessingParameterDefinition.FlagOptional) self.close()
<<<<<<< HEAD ======= >>>>>>> upstream/master class gdaltindex(GdalAlgorithm): INPUT = 'INPUT' OUTPUT = 'OUTPUT' FIELD_NAME = 'FIELD_NAME' PROJ_DIFFERENCE = 'PROJ_DIFFERENCE' def defineCharacteristics(self): <<<<<<< HEAD self.name = 'Tile Index' self.group = '[GDAL] Miscellaneous' self.addParameter(ParameterMultipleInput(self.INPUT, self.tr('Input layers'), ParameterMultipleInput.TYPE_RASTER)) self.addParameter(ParameterString(self.FIELD_NAME, self.tr('Tile index field'), 'location', optional=True)) self.addParameter(ParameterBoolean(self.PROJ_DIFFERENCE, self.tr('Skip files with different projection reference'), False)) self.addOutput(OutputVector(gdaltindex.OUTPUT, self.tr('Output layer'))) def processAlgorithm(self, progress): fieldName = str(self.getParameterValue(self.FIELD_NAME)) ======= self.name, self.i18n_name = self.trAlgorithm('Tile Index') self.group, self.i18n_group = self.trAlgorithm('[GDAL] Miscellaneous') self.addParameter(ParameterMultipleInput(self.INPUT, self.tr('Input layers'), ParameterMultipleInput.TYPE_RASTER)) self.addParameter(ParameterString(self.FIELD_NAME,
def okPressed(self): description = unicode(self.nameTextBox.text()) if description.strip() == '': QtGui.QMessageBox.warning(self, 'Unable to define parameter', 'Invalid parameter name') return if self.param is None: validChars = \ 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' safeName = ''.join(c for c in description if c in validChars) name = self.paramType.upper().replace(' ', '') + '_' \ + safeName.upper() else: name = self.param.name if self.paramType \ == ModelerParameterDefinitionDialog.PARAMETER_BOOLEAN \ or isinstance(self.param, ParameterBoolean): self.param = ParameterBoolean(name, description, self.yesNoCombo.currentIndex() == 0) elif self.paramType \ == ModelerParameterDefinitionDialog.PARAMETER_TABLE_FIELD \ or isinstance(self.param, ParameterTableField): if self.parentCombo.currentIndex() < 0: QtGui.QMessageBox.warning(self, 'Unable to define parameter', 'Wrong or missing parameter values') return parent = self.parentCombo.itemData(self.parentCombo.currentIndex()) self.param = ParameterTableField(name, description, parent) elif self.paramType \ == ModelerParameterDefinitionDialog.PARAMETER_RASTER \ or isinstance(self.param, ParameterRaster): self.param = ParameterRaster(name, description, self.yesNoCombo.currentIndex() == 1) elif self.paramType \ == ModelerParameterDefinitionDialog.PARAMETER_TABLE \ or isinstance(self.param, ParameterTable): self.param = ParameterTable(name, description, self.yesNoCombo.currentIndex() == 1) elif self.paramType \ == ModelerParameterDefinitionDialog.PARAMETER_VECTOR \ or isinstance(self.param, ParameterVector): self.param = ParameterVector(name, description, [self.shapetypeCombo.currentIndex() - 1], self.yesNoCombo.currentIndex() == 1) elif self.paramType \ == ModelerParameterDefinitionDialog.PARAMETER_MULTIPLE \ or isinstance(self.param, ParameterMultipleInput): self.param = ParameterMultipleInput(name, description, self.datatypeCombo.currentIndex() - 1, self.yesNoCombo.currentIndex() == 1) elif self.paramType \ == ModelerParameterDefinitionDialog.PARAMETER_NUMBER \ or isinstance(self.param, ParameterNumber): try: vmin = str(self.minTextBox.text()).strip() if vmin == '': vmin = None else: vmin = float(vmin) vmax = str(self.maxTextBox.text()).strip() if vmax == '': vmax = None else: vmax = float(vmax) self.param = ParameterNumber(name, description, vmin, vmax, float(str(self.defaultTextBox.text()))) except: QtGui.QMessageBox.warning(self, 'Unable to define parameter', 'Wrong or missing parameter values') return elif self.paramType \ == ModelerParameterDefinitionDialog.PARAMETER_STRING \ or isinstance(self.param, ParameterString): self.param = ParameterString(name, description, unicode(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) self.close()
def defineCharacteristics(self): self.name = "crop raster datasets" self.group = "[pktools] raster" self.addParameter( ParameterMultipleInput(self.INPUT, 'Input layer raster data set', ParameterMultipleInput.TYPE_RASTER)) self.addOutput(OutputRaster(self.OUTPUT, "Output raster data set")) self.addParameter( ParameterSelection( self.RTYPE, 'Output raster type (leave as none to keep original type)', self.TYPE, 0)) self.addParameter( ParameterNumber(self.DX, "Output resolution in x (leave 0 for no change)", 0.0, None, 0.0)) self.addParameter( ParameterNumber(self.DY, "Output resolution in y (leave 0 for no change)", 0.0, None, 0.0)) self.addParameter( ParameterFile( self.EXTENT, "get boundary from extent from polygons in vector file", False, optional=True)) self.addParameter( ParameterBoolean( self.CUT, "Crop the extent of the target dataset to the extent of the cutline.", False)) self.addParameter( ParameterFile( self.MASK, "Use the first band of the specified file as a validity mask (0 is nodata)", False, optional=True)) self.addParameter( ParameterString(self.MSKBAND, "Mask band to read (0 indexed)", "0")) self.addParameter( ParameterString(self.MSKNODATA, "Mask value not to consider for composite.", "0")) self.addParameter( ParameterExtent(self.PROJWIN, 'Georeferenced boundingbox')) self.addParameter( ParameterString( self.NODATA, "invalid value(s) for input raster dataset (e.g., 0;255)", "none")) self.addParameter( ParameterString( self.BAND, "Band(s) in input image to crop, e.g., 0;1;2 (leave empty to retain all bands)", '', optional=True)) self.addParameter( ParameterSelection(self.RESAMPLE, "resampling method", self.RESAMPLE_OPTIONS, 0)) self.addParameter( ParameterString(self.EXTRA, 'Additional parameters', '-of GTiff', optional=True))
def defineCharacteristics(self): self.name = "composite/mosaic raster datasets" self.group = "[pktools] raster" self.addParameter( ParameterMultipleInput(self.INPUT, 'Input layer raster data set', ParameterMultipleInput.TYPE_RASTER)) self.addParameter( ParameterString( self.BAND, "band index(es) to crop (leave empty if all bands must be retained" )) self.addParameter( ParameterSelection(self.CRULE, "composite rule", self.CRULE_OPTIONS, 0)) self.addOutput(OutputRaster(self.OUTPUT, "Output raster data set")) self.addParameter( ParameterSelection( self.RTYPE, 'Output raster type (leave as none to keep original type)', self.TYPE, 0)) self.addParameter( ParameterNumber(self.DX, "Output resolution in x (leave 0 for no change)", 0.0, None, 0.0)) self.addParameter( ParameterNumber(self.DY, "Output resolution in y (leave 0 for no change)", 0.0, None, 0.0)) self.addParameter( ParameterFile( self.EXTENT, "get boundary from extent from polygons in vector file", False, optional=True)) self.addParameter( ParameterBoolean( self.CUT, "Crop the extent of the target dataset to the extent of the cutline.", False)) self.addParameter( ParameterFile( self.MASK, "Use the first band of the specified file as a validity mask (0 is nodata)", False, optional=True)) self.addParameter( ParameterString(self.MSKBAND, "Mask band to read (0 indexed)", "0")) self.addParameter( ParameterString(self.MSKNODATA, "Mask value not to consider for composite.", "0")) self.addParameter( ParameterExtent(self.PROJWIN, 'Georeferenced boundingbox')) self.addParameter( ParameterString( self.CB, "band index(es) used for the composite rule (0 based), e.g., 0;1 in case of maxndvi", "0")) 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.DSTNODATA, "nodata value to put in output raster dataset if not valid or out of bounds", "0")) self.addParameter( ParameterString( self.MINGUI, "flag values smaller or equal to this value as invalid", "none")) self.addParameter( ParameterString( self.MAXGUI, "flag values larger or equal to this value as invalid", "none")) self.addParameter( ParameterSelection(self.RESAMPLE, "resampling method", self.RESAMPLE_OPTIONS, 0)) self.addParameter( ParameterString(self.EXTRA, 'Additional parameters', '-of GTiff', optional=True))
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
def defineCharacteristics(self): self.name, self.i18n_name = self.trAlgorithm('Retile') self.group, self.i18n_group = self.trAlgorithm('[GDAL] Miscellaneous') # Required parameters self.addParameter( ParameterMultipleInput(self.INPUT, self.tr('Input layers'), ParameterMultipleInput.TYPE_RASTER)) # Advanced parameters params = [] params.append( ParameterString( self.PIXELSIZE, self. tr('Pixel size to be used for the output file (XSIZE YSIZE like 512 512)' ), None, False, True)) params.append( ParameterSelection(self.ALGORITHM, self.tr('Resampling algorithm'), self.ALGO, 0, False, True)) params.append( ParameterCrs(self.S_SRS, self.tr('Override source CRS'), None, True)) params.append( ParameterNumber(self.PYRAMIDLEVELS, self.tr('Number of pyramids levels to build'), None, None, None, True)) params.append( ParameterBoolean(self.ONLYPYRAMIDS, self.tr('Build only the pyramids'), False, True)) params.append( ParameterSelection(self.RTYPE, self.tr('Output raster type'), self.TYPE, 5, False, True)) params.append( ParameterSelection(self.FORMAT, self.tr('Output raster format'), GdalUtils.getSupportedRasters().keys(), 0, False, True)) params.append( ParameterBoolean(self.USEDIRFOREACHROW, self.tr('Use a directory for each row'), False, True)) params.append( ParameterString( self.CSVFILE, self. tr('Name of the csv file containing the tile(s) georeferencing information' ), None, False, True)) params.append( ParameterString(self.CSVDELIM, self.tr('Column delimiter used in the CSV file'), None, False, True)) params.append( ParameterString( self.TILEINDEX, self.tr( 'name of shape file containing the result tile(s) index'), None, False, True)) params.append( ParameterString( self.TILEINDEXFIELD, self. tr('name of the attribute containing the tile name in the result shape file' ), None, False, True)) for param in params: param.isAdvanced = True self.addParameter(param) self.addOutput( OutputDirectory( self.TARGETDIR, self.tr('The directory where the tile result is created')))