def processOutputParameterToken(self, token): out = None if token.lower().strip().startswith('raster'): out = OutputRaster() elif token.lower().strip().startswith('vector'): out = OutputVector() elif token.lower().strip().startswith('table'): out = OutputTable() elif token.lower().strip().startswith('html'): out = OutputHTML() elif token.lower().strip().startswith('file'): out = OutputFile() ext = token.strip()[len('file') + 1:] if ext: out.ext = ext elif token.lower().strip().startswith('directory'): out = OutputDirectory() elif token.lower().strip().startswith('number'): out = OutputNumber() elif token.lower().strip().startswith('string'): out = OutputString() elif token.lower().strip().startswith('extent'): out = OutputExtent() return out
def defineCharacteristics(self): """Here we define the inputs and output of the algorithm, along with some other properties. """ # The name that the user will see in the toolbox self.name = 'Build virtual vector' # The branch of the toolbox under which the algorithm will appear self.group = 'Vector general tools' # We add the inputs self.addParameter( ParameterMultipleInput( name=self.INPUT_DATASOURCES, description=self.tr('Input datasources'), datatype=ParameterMultipleInput.TYPE_VECTOR_ANY, optional=False)) self.addParameter( ParameterBoolean(name=self.INPUT_OVERWRITE_FLAG, description=self.tr('Overwrite output vrt'), default=False)) # We add outputs self.addOutput( OutputFile(self.OUTPUT_VRT_FILE, self.tr('Virtual vector'))) self.addOutput( OutputString(self.OUTPUT_VRT_STRING, self.tr('Virtual string')))
def processOutputParameterToken(self, token): out = None if token.lower().strip().startswith('raster'): out = OutputRaster() elif token.lower().strip().startswith('vector'): out = OutputVector() elif token.lower().strip().startswith('table'): out = OutputTable() else: if token.lower().strip().startswith('file'): out = OutputFile() ext = token.strip()[len('file') + 1:] if ext: out.ext = ext elif token.lower().strip().startswith('directory'): out = OutputDirectory() elif token.lower().strip().startswith('number'): out = OutputNumber() elif token.lower().strip().startswith('string'): out = OutputString() if not self.saveOutputValues and out: outVal = OutputFile(RAlgorithm.R_OUTPUT_VALUES, self.tr('R Output values'), ext='txt') outVal.hidden = True self.addOutput(outVal) self.saveOutputValues = True return out
def processOutputParameterToken(self, token): out = None if token.lower().strip().startswith('raster'): out = OutputRaster() elif token.lower().strip().startswith('vector'): out = OutputVector() elif token.lower().strip().startswith('table'): out = OutputTable() elif token.lower().strip().startswith('html'): out = OutputHTML() elif token.lower().strip().startswith('file'): out = OutputFile() subtokens = token.split(' ') if len(subtokens) > 2: out.ext = subtokens[2] elif token.lower().strip().startswith('directory'): out = OutputDirectory() elif token.lower().strip().startswith('number'): out = OutputNumber() elif token.lower().strip().startswith('string'): out = OutputString() elif token.lower().strip().startswith('extent'): out = OutputExtent() return out
def processOutputParameterToken(self, token): out = None if token.lower().strip().startswith('raster'): out = OutputRaster() elif token.lower().strip() == 'vector': out = OutputVector() elif token.lower().strip() == 'vector point': out = OutputVector(datatype=[dataobjects.TYPE_VECTOR_POINT]) elif token.lower().strip() == 'vector line': out = OutputVector(datatype=[OutputVector.TYPE_VECTOR_LINE]) elif token.lower().strip() == 'vector polygon': out = OutputVector(datatype=[OutputVector.TYPE_VECTOR_POLYGON]) elif token.lower().strip().startswith('table'): out = OutputTable() elif token.lower().strip().startswith('html'): out = OutputHTML() elif token.lower().strip().startswith('file'): out = OutputFile() subtokens = token.split(' ') if len(subtokens) > 2: out.ext = subtokens[2] elif token.lower().strip().startswith('directory'): out = OutputDirectory() elif token.lower().strip().startswith('number'): out = OutputNumber() elif token.lower().strip().startswith('string'): out = OutputString() elif token.lower().strip().startswith('extent'): out = OutputExtent() return out
def defineCharacteristics(self): self.addParameter(ParameterVector(self.INPUT_LAYER, self.tr('Input layer'))) self.addParameter(ParameterTableField(self.FIELD_NAME, self.tr('Target field'), self.INPUT_LAYER, ParameterTableField.DATA_TYPE_ANY)) self.addOutput(OutputHTML(self.OUTPUT, self.tr('Unique values'))) self.addOutput(OutputNumber(self.TOTAL_VALUES, self.tr('Total unique values'))) self.addOutput(OutputString(self.UNIQUE_VALUES, self.tr('Unique values')))
def defineCharacteristics(self): self.name, self.i18n_name = self.trAlgorithm('List unique values') self.group, self.i18n_group = self.trAlgorithm('Vector table tools') self.addParameter(ParameterVector(self.INPUT_LAYER, self.tr('Input layer'), [ParameterVector.VECTOR_TYPE_ANY])) self.addParameter(ParameterTableField(self.FIELD_NAME, self.tr('Target field'), self.INPUT_LAYER, ParameterTableField.DATA_TYPE_ANY)) self.addOutput(OutputHTML(self.OUTPUT, self.tr('Unique values'))) self.addOutput(OutputNumber(self.TOTAL_VALUES, self.tr('Total unique values'))) self.addOutput(OutputString(self.UNIQUE_VALUES, self.tr('Unique values')))
def initAlgorithm(self, config=None): self.addParameter(ParameterMultipleInput(self.DATASOURCES, self.tr('Input datasources'), dataobjects.TYPE_TABLE)) self.addParameter(ParameterBoolean(self.UNIONED, self.tr('Create "unioned" VRT'), default=False)) self.addOutput(OutputFile(self.VRT_FILE, self.tr('Virtual vector'), ext='vrt')) self.addOutput(OutputString(self.VRT_STRING, self.tr('Virtual string')))
def defineCharacteristics(self): self.name = 'List unique values' self.group = 'Vector table tools' self.addParameter( ParameterVector(self.INPUT_LAYER, 'Input layer', [ParameterVector.VECTOR_TYPE_ANY])) self.addParameter( ParameterTableField(self.FIELD_NAME, 'Target field', self.INPUT_LAYER, ParameterTableField.DATA_TYPE_ANY)) self.addOutput(OutputHTML(self.OUTPUT, 'Unique values')) self.addOutput(OutputNumber(self.TOTAL_VALUES, 'Total unique values')) self.addOutput(OutputString(self.UNIQUE_VALUES, 'Unique values'))
def defineCharacteristics(self): self.name, self.i18n_name = self.trAlgorithm('Build virtual vector') self.group, self.i18n_group = self.trAlgorithm('Vector general tools') self.addParameter(ParameterMultipleInput(self.DATASOURCES, self.tr('Input datasources'))) self.addParameter(ParameterBoolean(self.UNIONED, self.tr('Create "unioned" VRT'), default=False)) self.addOutput(OutputFile(self.VRT_FILE, self.tr('Virtual vector'), ext='vrt')) self.addOutput(OutputString(self.VRT_STRING, self.tr('Virtual string')))
def defineCharacteristics(self): self.name, self.i18n_name = self.trAlgorithm('Build virtual vector') self.group, self.i18n_group = self.trAlgorithm('Vector general tools') self.addParameter( ParameterMultipleInput( name=self.INPUT_DATASOURCES, description=self.tr('Input datasources'), datatype=ParameterMultipleInput.TYPE_VECTOR_ANY, optional=False)) self.addParameter( ParameterBoolean(name=self.INPUT_OVERWRITE_FLAG, description=self.tr('Overwrite output vrt'), default=False)) self.addOutput( OutputFile(self.OUTPUT_VRT_FILE, self.tr('Virtual vector'), ext='vrt')) self.addOutput( OutputString(self.OUTPUT_VRT_STRING, self.tr('Virtual string')))
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))