def defineCharacteristics(self): self.name, self.i18n_name = self.trAlgorithm('Distance matrix') self.group, self.i18n_group = self.trAlgorithm('Vector analysis tools') self.addParameter( ParameterVector(self.INPUT_LAYER, self.tr('Input point layer'), [ParameterVector.VECTOR_TYPE_POINT])) self.addParameter( ParameterTableField(self.INPUT_FIELD, self.tr('Input unique ID field'), self.INPUT_LAYER, ParameterTableField.DATA_TYPE_ANY)) self.addParameter( ParameterVector(self.TARGET_LAYER, self.tr('Target point layer'), ParameterVector.VECTOR_TYPE_POINT)) self.addParameter( ParameterTableField(self.TARGET_FIELD, self.tr('Target unique ID field'), self.TARGET_LAYER, ParameterTableField.DATA_TYPE_ANY)) self.addParameter( ParameterSelection(self.MATRIX_TYPE, self.tr('Output matrix type'), self.MAT_TYPES, 0)) self.addParameter( ParameterNumber(self.NEAREST_POINTS, self.tr('Use only the nearest (k) target points'), 0, 9999, 0)) self.addOutput( OutputTable(self.DISTANCE_MATRIX, self.tr('Distance matrix')))
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 = 'map' self.i18n_name = self.tr('map') # === INPUT PARAMETERS === self.addParameter( ParameterRaster(name=self.INPUT_LAYER_ASC, description=self.tr('Input layer asc'))) 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( OutputTable(name=self.OUTPUT_CSV, description=self.tr('Output csv (*.csv)')))
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 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): self.name = self.tr('Generate changed lots data') self.group = self.tr('Report') self.addParameter( ParameterRaster(self.INPUT_CD_LAYER, self.tr('Input change detection layer'), [ParameterRaster], False)) self.addParameter( ParameterRaster(self.INPUT_IMG_LAYER, self.tr('Input image layer'), [ParameterRaster], False)) self.addParameter( ParameterVector(self.INPUT_LOTS_LAYER, self.tr('Input Lots vector layer'), [ParameterVector.VECTOR_TYPE_ANY], False)) self.addParameter( ParameterTableField(self.INPUT_LOT_ID_FIELD, self.tr('Lot id field'), self.INPUT_LOTS_LAYER)) self.addParameter( ParameterNumber(self.SELECTION_THRESHOLD, self.tr('Lot selection threshold value'), 0.0, 1.0, 0.5)) self.addOutput( OutputVector(self.OUTPUT_VECTOR_LAYER, self.tr('CD vector'))) self.addOutput( OutputTable(self.OUTPUT_TABLE_LAYER, self.tr('CD table')))
def defineCharacteristics(self): self.name, self.i18n_name = self.trAlgorithm('Canopy Maxima') self.group, self.i18n_group = self.trAlgorithm('Points') self.addParameter( ParameterFile(self.INPUT, self.tr('Input FUSION canopy height model'))) self.addParameter( ParameterFile(self.GROUND, self.tr('Input ground .dtm layer [optional]'))) self.addParameter( ParameterNumber(self.THRESHOLD, self.tr('Height threshold'), 0, None, 10.0)) # begin self.addParameter( ParameterNumber(self.PARAM_A, self.tr('Variable window size: parameter A'), 0, None, 2.51503)) self.addParameter( ParameterNumber(self.PARAM_C, self.tr('Parameter C'), 0, None, 0.00901)) self.addParameter( ParameterBoolean( self.SUMMARY, self.tr('Summary (tree height summary statistics)'), False)) # end self.addOutput( OutputTable(self.OUTPUT, self.tr('Output file with maxima'))) self.addAdvancedModifiers()
def defineCharacteristics(self): self.addParameter(ParameterRaster( self.INPUT, self.tr('Input layer'), False)) self.addParameter(ParameterNumber(self.BAND, self.tr('Band number'), 1, 9999, 1)) self.addOutput(OutputTable(self.OUTPUT, self.tr('xyz')))
def defineCharacteristics(self): self.name = 'Distance matrix' self.group = 'Vector analysis tools' self.addParameter( ParameterVector(self.INPUT_LAYER, 'Input point layer', [ParameterVector.VECTOR_TYPE_POINT])) self.addParameter( ParameterTableField(self.INPUT_FIELD, 'Input unique ID field', self.INPUT_LAYER, ParameterTableField.DATA_TYPE_ANY)) self.addParameter( ParameterVector(self.TARGET_LAYER, 'Target point layer', ParameterVector.VECTOR_TYPE_POINT)) self.addParameter( ParameterTableField(self.TARGET_FIELD, 'Target unique ID field', self.TARGET_LAYER, ParameterTableField.DATA_TYPE_ANY)) self.addParameter( ParameterSelection(self.MATRIX_TYPE, 'Output matrix type', self.MAT_TYPES, 0)) self.addParameter( ParameterNumber(self.NEAREST_POINTS, 'Use only the nearest (k) target points', 0, 9999, 0)) self.addOutput(OutputTable(self.DISTANCE_MATRIX, 'Distance matrix'))
def initAlgorithm(self, config=None): self.addParameter( ParameterRaster(self.INPUT, self.tr('Input layer'), False)) self.addParameter( ParameterNumber(self.BAND, self.tr('Band number'), 1, 9999, 1)) self.addOutput(OutputTable(self.OUTPUT, self.tr('xyz')))
def defineCharacteristics(self): self.mat_types = [ self.tr('Linear (N*k x 3) distance matrix'), self.tr('Standard (N x T) distance matrix'), self.tr('Summary distance matrix (mean, std. dev., min, max)') ] self.addParameter( ParameterVector(self.INPUT_LAYER, self.tr('Input point layer'), [dataobjects.TYPE_VECTOR_POINT])) self.addParameter( ParameterTableField(self.INPUT_FIELD, self.tr('Input unique ID field'), self.INPUT_LAYER, ParameterTableField.DATA_TYPE_ANY)) self.addParameter( ParameterVector(self.TARGET_LAYER, self.tr('Target point layer'), dataobjects.TYPE_VECTOR_POINT)) self.addParameter( ParameterTableField(self.TARGET_FIELD, self.tr('Target unique ID field'), self.TARGET_LAYER, ParameterTableField.DATA_TYPE_ANY)) self.addParameter( ParameterSelection(self.MATRIX_TYPE, self.tr('Output matrix type'), self.mat_types, 0)) self.addParameter( ParameterNumber(self.NEAREST_POINTS, self.tr('Use only the nearest (k) target points'), 0, 9999, 0)) self.addOutput( OutputTable(self.DISTANCE_MATRIX, self.tr('Distance matrix')))
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().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 defineCharacteristics(self): self.name = 'gdal2xyz' self.group = '[GDAL] Conversion' self.addParameter(ParameterRaster(self.INPUT, 'Input layer', False)) self.addParameter(ParameterNumber(self.BAND, 'Band number', 1, 9999, 1)) self.addOutput(OutputTable(self.OUTPUT, 'Output file'))
def defineCharacteristics(self): self.name = 'Raster layer histogram' self.group = 'Graphics' self.addParameter(ParameterRaster(self.INPUT, 'Input layer')) self.addParameter(ParameterNumber(self.BINS, 'Number of bins', 2, None, 10)) self.addOutput(OutputHTML(self.PLOT, 'Output plot')) self.addOutput(OutputTable(self.TABLE, 'Output table'))
def __init__(self): super().__init__() self.addParameter(ParameterRaster( self.INPUT, self.tr('Input layer'), False)) self.addParameter(ParameterNumber(self.BAND, self.tr('Band number'), 1, 9999, 1)) self.addOutput(OutputTable(self.OUTPUT, self.tr('xyz')))
def defineCharacteristics(self): self.name, self.i18n_name = self.trAlgorithm('gdal2xyz') self.group, self.i18n_group = self.trAlgorithm('Raster conversion') self.addParameter(ParameterRaster( self.INPUT, self.tr('Input layer'), False)) self.addParameter(ParameterNumber(self.BAND, self.tr('Band number'), 1, 9999, 1)) self.addOutput(OutputTable(self.OUTPUT, self.tr('xyz')))
def defineCharacteristics(self): """ Algorithme variable and parameters parameters """ CholeAlgorithm.defineCharacteristics(self) # The name/group that the user will see in the toolbox self.group = 'util' self.i18n_group = self.tr('util') self.name = 'cluster' self.i18n_name = self.tr('cluster') # === INPUT PARAMETERS === self.addParameter(ParameterRaster( name=self.INPUT_ASC, description=self.tr('Input layer'))) self.addParameter(ParameterString( name = self.CLUSTER, description = self.tr('Clusters from value(s)'), default='' )) #name='', description='', options=[], default=None, isSource=False, optional=False): self.addParameter(ParameterSelection( name = self.CLUSTER_TYPE, description = self.tr('Cluster type'), options = ';'.join(self.clusterTypes) )) self.addParameter(ParameterNumber( name = self.CLUSTER_DISTANCE, description = self.tr('Distance in meters (only for euclidean and functional distance)'), optional = True )) self.addParameter(ParameterFile( name=self.CLUSTER_FRICTION, description=self.tr('Friction file'), isFolder=False, optional=True, ext='txt')) # === OUTPUT PARAMETERS === self.addOutput(OutputFile( name=self.SAVE_PROPERTIES, description=self.tr('Properties file'), ext='properties')) self.addOutput(OutputTable( name=self.OUTPUT_CSV, description=self.tr('Output csv (*.csv)'))) self.addOutput(ASCOutputRaster( name=self.OUTPUT_ASC, description=self.tr('Ouput Raster ascii')))
def defineCharacteristics(self): self.name, self.i18n_name = self.trAlgorithm('Raster layer histogram') self.group, self.i18n_group = self.trAlgorithm('Graphics') 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'))) self.addOutput(OutputTable(self.TABLE, self.tr('Table')))
def defineCharacteristics(self): self.addParameter(ParameterVector(self.INPUT_LAYER, self.tr('Input vector layer'))) self.addParameter(ParameterTableField(self.VALUES_FIELD_NAME, self.tr('Field to calculate statistics on'), self.INPUT_LAYER, ParameterTableField.DATA_TYPE_NUMBER)) self.addParameter(ParameterTableField(self.CATEGORIES_FIELD_NAME, self.tr('Field with categories'), self.INPUT_LAYER, ParameterTableField.DATA_TYPE_ANY)) self.addOutput(OutputTable(self.OUTPUT, self.tr('Statistics by category')))
def defineCharacteristics(self): self.name, self.i18n_name = self.trAlgorithm('Relief (automatic colors)') self.group, self.i18n_group = self.trAlgorithm('Raster terrain analysis') 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.addOutput(OutputRaster(self.OUTPUT_LAYER, self.tr('Relief'))) self.addOutput(OutputTable(self.FREQUENCY_DISTRIBUTION, self.tr('Frequency distribution')))
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('file'): out = OutputFile() return out
def defineCharacteristics(self): self.name, self.i18n_name = self.trAlgorithm('Statistics by categories') self.group, self.i18n_group = self.trAlgorithm('Vector table tools') self.addParameter(ParameterVector(self.INPUT_LAYER, self.tr('Input vector layer'), [ParameterVector.VECTOR_TYPE_ANY], False)) self.addParameter(ParameterTableField(self.VALUES_FIELD_NAME, self.tr('Field to calculate statistics on'), self.INPUT_LAYER, ParameterTableField.DATA_TYPE_NUMBER)) self.addParameter(ParameterTableField(self.CATEGORIES_FIELD_NAME, self.tr('Field with categories'), self.INPUT_LAYER, ParameterTableField.DATA_TYPE_ANY)) self.addOutput(OutputTable(self.OUTPUT, self.tr('Statistics by category')))
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 = 'grid' self.i18n_name = self.tr('grid') # === INPUT PARAMETERS === self.addParameter( ParameterRaster(name=self.INPUT_LAYER_ASC, description=self.tr('Input layer asc'))) self.addParameter( ParameterNumber(name=self.GRID_SIZES, description=self.tr('Grid size (pixels)'), default=3)) 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( OutputTable(name=self.OUTPUT_CSV, description=self.tr('Output csv (*.csv)'))) self.addOutput( ASCOutputRaster(name=self.OUTPUT_ASC, description=self.tr('Output ascii (*.asc)')))
def defineCharacteristics(self): self.name = 'Statistics by categories' self.group = 'Vector table tools' self.addParameter( ParameterVector(self.INPUT_LAYER, 'Input vector layer', [ParameterVector.VECTOR_TYPE_ANY], False)) self.addParameter( ParameterTableField(self.VALUES_FIELD_NAME, 'Field to calculate statistics on', self.INPUT_LAYER, ParameterTableField.DATA_TYPE_NUMBER)) self.addParameter( ParameterTableField(self.CATEGORIES_FIELD_NAME, 'Field with categories', self.INPUT_LAYER, ParameterTableField.DATA_TYPE_ANY)) self.addOutput(OutputTable(self.OUTPUT, 'Statistics'))
def defineCharacteristics(self): """Inputs and output description of the algorithm, along with some other properties. """ # The name that the user will see in the toolbox self.name = 'Coordinate format convertion' self.i18n_name = self.name # The branch of the toolbox under which the algorithm will appear self.group = 'Formatting' self.i18n_group = self.group # We add the input vector layer. It can have any kind of geometry # It is a mandatory (not optional) one, hence the False argument self.addParameter(ParameterTable(self.SOURCE_TABLE, 'Source table', optional=False)) self.addParameter(ParameterTableField(self.SOURCE_X_FIELD, "X (lon) or mgrs field ", parent=self.SOURCE_TABLE, optional=True)) self.addParameter(ParameterTableField(self.SOURCE_Y_FIELD, "Y (lat) or mgrs field", parent=self.SOURCE_TABLE, optional=True)) self.addParameter(ParameterSelection(self.SOURCE_FORMAT, "Source format", options=self.FORMAT_LIST, default=0)) self.addParameter(ParameterSelection(self.DESTINATION_FORMAT, "Destination format", options=self.FORMAT_LIST, default=0, optional=True)) self.addParameter(ParameterString(self.CUSTOM_FORMAT, "Custom coordinate format", default=self.CUSTOM_COORD_FORMAT, optional=True)) self.addParameter(ParameterString(self.OUTPUT_X_FIELD, "Destination X field", optional=True)) self.addParameter(ParameterString(self.OUTPUT_Y_FIELD, "Destination Y field", optional=True)) self.addParameter(ParameterString(self.OUTPUT_XY_FIELD, "Destination single XY field", optional=True)) self.addParameter(ParameterString(self.OUTPUT_COORDINATE_FORMAT, "Single field coord fromat", default=self.SINGLE_FIELD_COORD_FORMAT, optional=True)) # We add a table layer as output self.addOutput(OutputTable(self.OUTPUT_TABLE, 'Input table modified'))
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')))
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)))
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' self.i18n_name = self.tr('sliding') # === 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(ParameterNumber( name=self.WINDOW_SIZES, description=self.tr('Window size (pixels)'), default=3)) 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(OutputTable( name=self.OUTPUT_CSV, description=self.tr('Output csv (*.csv)'))) self.addOutput(ASCOutputRaster( name=self.OUTPUT_ASC, description=self.tr('Output ascii (*.asc)')))
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 = 'selected' self.i18n_name = self.tr('selected') # === 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(ParameterNumber( name=self.WINDOW_SIZES, description=self.tr('Windows sizes (pixels)'), default=3)) self.addParameter(ParameterSelection( name=self.PIXELS_POINTS_SELECT, description=self.tr('Pixels/points selection'), options = ';'.join(self.types_of_pixel_point_select))) self.addParameter(ParameterFile( name=self.PIXELS_FILE, description=self.tr('Pixels file'))) self.addParameter(ParameterFile( name=self.POINTS_FILE, description=self.tr('Points file'))) 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(OutputTable( name=self.OUTPUT_CSV, description=self.tr('Output csv (*.csv)'))) self.addOutput(ASCOutputRaster( name=self.OUTPUT_ASC, description=self.tr('Output ascii (*.asc)')))
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))