def initAlgorithm(self, config=None): self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer'))) self.addParameter( QgsProcessingParameterBand(self.BAND, self.tr('Band number'), 1, parentLayerParameterName=self.INPUT)) self.addParameter( QgsProcessingParameterPoint(self.OBSERVER, self.tr('Observer location'))) self.addParameter( QgsProcessingParameterNumber( self.OBSERVER_HEIGHT, self.tr('Observer height, DEM units'), type=QgsProcessingParameterNumber.Double, minValue=0.0, defaultValue=1.0)) self.addParameter( QgsProcessingParameterNumber( self.TARGET_HEIGHT, self.tr('Target height, DEM units'), type=QgsProcessingParameterNumber.Double, minValue=0.0, defaultValue=1.0)) self.addParameter( QgsProcessingParameterDistance( self.MAX_DISTANCE, self.tr( 'Maximum distance from observer to compute visibility'), parentParameterName=self.INPUT, minValue=0.0, defaultValue=100.0)) options_param = QgsProcessingParameterString( self.OPTIONS, self.tr('Additional creation options'), defaultValue='', optional=True) options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) options_param.setMetadata({ 'widget_wrapper': { 'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper' } }) self.addParameter(options_param) extra_param = QgsProcessingParameterString( self.EXTRA, self.tr('Additional command-line parameters'), defaultValue=None, optional=True) extra_param.setFlags(extra_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(extra_param) self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Output')))
def initAlgorithm(self, config=None): self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer'))) self.addParameter( QgsProcessingParameterFeatureSource( self.MASK, self.tr('Mask layer'), [QgsProcessing.TypeVectorPolygon])) self.addParameter( QgsProcessingParameterNumber( self.NODATA, self.tr('Assign a specified nodata value to output bands'), type=QgsProcessingParameterNumber.Double, defaultValue=None, optional=True)) self.addParameter( QgsProcessingParameterBoolean( self.ALPHA_BAND, self.tr('Create an output alpha band'), defaultValue=False)) self.addParameter( QgsProcessingParameterBoolean( self.CROP_TO_CUTLINE, self. tr('Match the extent of the clipped raster to the extent of the mask layer' ), defaultValue=True)) self.addParameter( QgsProcessingParameterBoolean( self.KEEP_RESOLUTION, self.tr('Keep resolution of output raster'), defaultValue=False)) options_param = QgsProcessingParameterString( self.OPTIONS, self.tr('Additional creation options'), defaultValue='', optional=True) options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) options_param.setMetadata({ 'widget_wrapper': { 'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper' } }) self.addParameter(options_param) dataType_param = QgsProcessingParameterEnum( self.DATA_TYPE, self.tr('Output data type'), self.TYPES, allowMultiple=False, defaultValue=0) dataType_param.setFlags( dataType_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(dataType_param) self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Clipped (mask)')))
def initAlgorithm(self, config=None): self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT_A, self.tr('Input layer A'), optional=False)) self.addParameter( QgsProcessingParameterBand(self.BAND_A, self.tr('Number of raster band for A'), parentLayerParameterName=self.INPUT_A)) self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT_B, self.tr('Input layer B'), optional=True)) self.addParameter( QgsProcessingParameterBand(self.BAND_B, self.tr('Number of raster band for B'), parentLayerParameterName=self.INPUT_B, optional=True)) self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT_C, self.tr('Input layer C'), optional=True)) self.addParameter( QgsProcessingParameterBand(self.BAND_C, self.tr('Number of raster band for C'), parentLayerParameterName=self.INPUT_C, optional=True)) self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT_D, self.tr('Input layer D'), optional=True)) self.addParameter( QgsProcessingParameterBand(self.BAND_D, self.tr('Number of raster band for D'), parentLayerParameterName=self.INPUT_D, optional=True)) self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT_E, self.tr('Input layer E'), optional=True)) self.addParameter( QgsProcessingParameterBand(self.BAND_E, self.tr('Number of raster band for E'), parentLayerParameterName=self.INPUT_E, optional=True)) self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT_F, self.tr('Input layer F'), optional=True)) self.addParameter( QgsProcessingParameterBand(self.BAND_F, self.tr('Number of raster band for F'), parentLayerParameterName=self.INPUT_F, optional=True)) self.addParameter( QgsProcessingParameterString( self.FORMULA, self. tr('Calculation in gdalnumeric syntax using +-/* or any numpy array functions (i.e. logical_and())' ), 'A*2', optional=False)) self.addParameter( QgsProcessingParameterNumber( self.NO_DATA, self.tr('Set output nodata value'), type=QgsProcessingParameterNumber.Double, defaultValue=None, optional=True)) self.addParameter( QgsProcessingParameterEnum(self.RTYPE, self.tr('Output raster type'), options=self.TYPE, defaultValue=5)) #self.addParameter(ParameterBoolean( # self.DEBUG, self.tr('Print debugging information'), False)) self.addParameter( QgsProcessingParameterString( self.EXTRA, self.tr('Additional creation parameters'), '', optional=True)) # advanced raster params options_param = QgsProcessingParameterString( self.OPTIONS, self.tr('Additional creation parameters'), defaultValue='', optional=True) options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) options_param.setMetadata({ 'widget_wrapper': { 'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper' } }) self.addParameter(options_param) self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Calculated')))
def initAlgorithm(self, config=None): self.filters = ( (self.tr('Morphological dilation'), 'dilate'), (self.tr('Morphological erosion'), 'erode'), (self.tr('Morpholigical closing'), 'close'), (self.tr('Morpholigical opening'), 'open'), (self.tr('Smooth NODATA'), 'smoothnodata'), (self.tr('Number of valid values'), 'nvalid'), (self.tr('Median'), 'median'), (self.tr('Variance'), 'var'), (self.tr('Minimum'), 'min'), (self.tr('Maximum'), 'max'), (self.tr('Sum'), 'sum'), (self.tr('Mean'), 'mean'), (self.tr('Standard deviation'), 'stdev'), (self.tr('Savitzky-Golay'), 'savgolay'), (self.tr('Percentile'), 'percentile'), (self.tr('Proportion'), 'proportion'), (self.tr('Discrete wavelet transform'), 'dwt'), (self.tr('Discrete inverse wavelet transform'), 'dwti'), (self.tr('Discrete wavelet + inverse with cut'), 'dwt_cut'), (self.tr('Markov random field'), 'mrf'), (self.tr('Is minimum?'), 'ismin'), (self.tr('Is maximum?'), 'ismax'), (self.tr('Pixel shift'), 'shift'), (self.tr('Scramble'), 'scramble'), (self.tr('Mode'), 'mode'), (self.tr('Horizontal edge detection'), 'sobelx'), (self.tr('Vertical edge detection'), 'sobely'), (self.tr('Diagonal edge detection (NE-SW)'), 'sobelxy'), (self.tr('Diagonal edge detection (NW-SE)'), 'sobelyx'), (self.tr('Count digital numbers'), 'countid'), (self.tr('Rank pixels in order'), 'order'), (self.tr('Density'), 'density'), (self.tr('Homogenity'), 'homog'), (self.tr('Heterogenity'), 'heterog'), (self.tr('Sauvola\'s thresholding'), 'sauvola'), ) self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer'))) self.addParameter( QgsProcessingParameterEnum(self.FILTER, self.tr('Post-processing filter'), options=[i[0] for i in self.filters], defaultValue=0)) self.addParameter( QgsProcessingParameterNumber( self.KERNEL_X, self.tr('Kernel size in X'), type=QgsProcessingParameterNumber.Integer, minValue=0, defaultValue=3)) self.addParameter( QgsProcessingParameterNumber( self.KERNEL_Y, self.tr('Kernel size in Y'), type=QgsProcessingParameterNumber.Integer, minValue=0, defaultValue=3)) params = [] params.append( QgsProcessingParameterBoolean( self.CIRCULAR, self.tr('Use circular disc kernel for dilation and erosion'), defaultValue=False)) params.append( QgsProcessingParameterString(self.ARGUMENTS, self.tr('Additional arguments'), defaultValue=None, optional=True)) options = QgsProcessingParameterString( self.OPTIONS, self.tr('Raster creation options'), defaultValue=None, optional=True) options.setMetadata({ 'widget_wrapper': { 'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper' } }) params.append(options) for p in params: p.setFlags(p.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(p) self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Output file')))
def initAlgorithm(self, config=None): self.addParameter( QgsProcessingParameterMultipleLayers(self.INPUT, self.tr('Input layers'), QgsProcessing.TypeRaster)) self.addParameter( QgsProcessingParameterBoolean( self.PCT, self.tr('Grab pseudocolor table from first layer'), defaultValue=False)) self.addParameter( QgsProcessingParameterBoolean( self.SEPARATE, self.tr('Place each input file into a separate band'), defaultValue=False)) nodata_param = QgsProcessingParameterNumber( self.NODATA_INPUT, self.tr('Input pixel value to treat as "nodata"'), type=QgsProcessingParameterNumber.Integer, defaultValue=None, optional=True) nodata_param.setFlags(nodata_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(nodata_param) nodata_out_param = QgsProcessingParameterNumber( self.NODATA_OUTPUT, self.tr('Assign specified "nodata" value to output'), type=QgsProcessingParameterNumber.Integer, defaultValue=None, optional=True) nodata_out_param.setFlags( nodata_out_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(nodata_out_param) options_param = QgsProcessingParameterString( self.OPTIONS, self.tr('Additional creation parameters'), defaultValue='', optional=True) options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) options_param.setMetadata({ 'widget_wrapper': { 'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper' } }) self.addParameter(options_param) self.addParameter( QgsProcessingParameterEnum(self.DATA_TYPE, self.tr('Output data type'), self.TYPES, allowMultiple=False, defaultValue=5)) self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Merged')))
def initAlgorithm(self, config=None): self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer'), optional=False)) self.addParameter( QgsProcessingParameterCrs(self.SOURCE_SRS, self.tr('Source SRS'), optional=True)) self.addParameter( QgsProcessingParameterCrs(self.DEST_SRS, self.tr('Destination SRS'), 'EPSG:4326')) self.addParameter( QgsProcessingParameterString( self.NO_DATA, self. tr("Nodata value, leave blank to take the nodata value from input" ), optional=True)) self.addParameter( QgsProcessingParameterNumber( self.TR, self. tr('Output file resolution in target georeferenced units (leave 0 for no change)' ), minValue=0.0, defaultValue=0.0)) self.addParameter( QgsProcessingParameterEnum(self.METHOD, self.tr('Resampling method'), self.METHOD_OPTIONS)) self.addParameter( QgsProcessingParameterBoolean( self.USE_RASTER_EXTENT, self.tr('Set georeferenced extents of output file'), False)) self.addParameter( QgsProcessingParameterExtent(self.RASTER_EXTENT, self.tr('Raster extent'), optional=True)) self.addParameter( QgsProcessingParameterCrs( self.EXTENT_CRS, self. tr('CRS of the raster extent, leave blank for using Destination SRS' ), optional=True)) co = QgsProcessingParameterString( self.OPTIONS, self.tr('Additional creation options'), optional=True) co.setMetadata({ 'widget_wrapper': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper' }) self.addParameter(co) self.addParameter( QgsProcessingParameterBoolean( self.MULTITHREADING, self.tr('Use multithreaded warping implementation'), False)) self.addParameter( QgsProcessingParameterEnum(self.RTYPE, self.tr('Output raster type'), self.TYPE, defaultValue=5)) self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Reprojected')))
def initAlgorithm(self, config=None): self.units = [self.tr("Pixels"), self.tr("Georeferenced units")] self.addParameter( QgsProcessingParameterFeatureSource(self.INPUT, self.tr('Input layer'))) self.addParameter( QgsProcessingParameterField( self.FIELD, self.tr('Field to use for a burn-in value'), None, self.INPUT, QgsProcessingParameterField.Numeric, optional=True)) self.addParameter( QgsProcessingParameterNumber( self.BURN, self.tr('A fixed value to burn'), type=QgsProcessingParameterNumber.Double, defaultValue=0.0, optional=True)) self.addParameter( QgsProcessingParameterEnum(self.UNITS, self.tr('Output raster size units'), self.units)) self.addParameter( QgsProcessingParameterNumber( self.WIDTH, self.tr('Width/Horizontal resolution'), type=QgsProcessingParameterNumber.Double, minValue=0.0, defaultValue=0.0)) self.addParameter( QgsProcessingParameterNumber( self.HEIGHT, self.tr('Height/Vertical resolution'), type=QgsProcessingParameterNumber.Double, minValue=0.0, defaultValue=0.0)) self.addParameter( QgsProcessingParameterExtent(self.EXTENT, self.tr('Output extent'))) self.addParameter( QgsProcessingParameterNumber( self.NODATA, self.tr('Assign a specified nodata value to output bands'), type=QgsProcessingParameterNumber.Double, defaultValue=0.0, optional=True)) options_param = QgsProcessingParameterString( self.OPTIONS, self.tr('Additional creation parameters'), defaultValue='', optional=True) options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) options_param.setMetadata({ 'widget_wrapper': { 'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper' } }) self.addParameter(options_param) dataType_param = QgsProcessingParameterEnum( self.DATA_TYPE, self.tr('Output data type'), self.TYPES, allowMultiple=False, defaultValue=5) dataType_param.setFlags( dataType_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(dataType_param) init_param = QgsProcessingParameterNumber( self.INIT, self.tr('Pre-initialize the output image with value'), type=QgsProcessingParameterNumber.Double, defaultValue=0.0, optional=True) init_param.setFlags(init_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(init_param) invert_param = QgsProcessingParameterBoolean( self.INVERT, self.tr('Invert rasterization'), defaultValue=False) invert_param.setFlags(invert_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(invert_param) self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Rasterized')))
def initAlgorithm(self, config=None): self.addParameter(QgsProcessingParameterRasterLayer('inputnirband', 'INPUT_NIR_BAND', defaultValue=None)) self.addParameter(QgsProcessingParameterRasterLayer('inputredband', 'INPUT_RED_BAND', defaultValue=None)) self.addParameter(QgsProcessingParameterRasterDestination('Output', 'OUTPUT', createByDefault=True, defaultValue=None))
def initAlgorithm(self, config=None): self.TYPES = [ self.tr('Use Input Layer Data Type'), 'Byte', 'Int16', 'UInt16', 'UInt32', 'Int32', 'Float32', 'Float64', 'CInt16', 'CInt32', 'CFloat32', 'CFloat64' ] self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer'))) self.addParameter( QgsProcessingParameterCrs( self.TARGET_CRS, self.tr('Override the projection for the output file'), defaultValue=None, optional=True)) self.addParameter( QgsProcessingParameterNumber( self.NODATA, self.tr('Assign a specified nodata value to output bands'), type=QgsProcessingParameterNumber.Double, defaultValue=None, optional=True)) self.addParameter( QgsProcessingParameterBoolean( self.COPY_SUBDATASETS, self. tr('Copy all subdatasets of this file to individual output files' ), defaultValue=False)) options_param = QgsProcessingParameterString( self.OPTIONS, self.tr('Additional creation options'), defaultValue='', optional=True) options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) options_param.setMetadata({ 'widget_wrapper': { 'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper' } }) self.addParameter(options_param) extra_param = QgsProcessingParameterString( self.EXTRA, self.tr('Additional command-line parameters'), defaultValue=None, optional=True) extra_param.setFlags(extra_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(extra_param) dataType_param = QgsProcessingParameterEnum( self.DATA_TYPE, self.tr('Output data type'), self.TYPES, allowMultiple=False, defaultValue=0) dataType_param.setFlags( dataType_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(dataType_param) self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Converted')))
def initAlgorithm(self, config): for par in self.param: pl = par.split('|') if pl[0] == 'ParameterRaster': self.addParameter( QgsProcessingParameterRasterLayer(pl[1], self.tr(pl[2]), '', bool(strtobool(pl[3])))) if pl[0] == 'ParameterVector': self.addParameter( QgsProcessingParameterVectorLayer(pl[1], self.tr( pl[2]), [QgsProcessing.TypeVector], '', bool(strtobool(pl[4])))) if pl[0] == 'ParameterNumber': try: int(pl[5]) if pl[4] != 'None': self.addParameter( QgsProcessingParameterNumber( pl[1], self.tr(pl[2]), 0, int(pl[5]), False, int(pl[3]), int(pl[4]))) else: self.addParameter( QgsProcessingParameterNumber( pl[1], self.tr(pl[2]), 0, int(pl[5]), False, int(pl[3]))) except ValueError: if pl[4] != 'None': self.addParameter( QgsProcessingParameterNumber( pl[1], self.tr(pl[2]), 1, float(pl[5]), False, float(pl[3]), float(pl[4]))) else: self.addParameter( QgsProcessingParameterNumber( pl[1], self.tr(pl[2]), 1, float(pl[5]), False, float(pl[3]))) if pl[0] == 'ParameterBoolean': self.addParameter( QgsProcessingParameterBoolean(pl[1], self.tr(pl[2]), bool(strtobool(pl[3])), False)) if pl[0] == 'ParameterEnum': self.addParameter( QgsProcessingParameterEnum(pl[1], self.tr(pl[2]), literal_eval(pl[3]), False, pl[4], False)) for out in self.outputline: ol = out.split('|') if ol[0] == 'OutputRaster': self.addParameter( QgsProcessingParameterRasterDestination( ol[1][1:], self.tr(ol[2]))) if ol[0] == 'OutputVector': self.addParameter( QgsProcessingParameterVectorDestination( ol[1][1:], self.tr(ol[2]))) if ol[0] == 'OutputFile': self.addParameter( QgsProcessingParameterFileDestination( ol[1][1:], self.tr(ol[2])))
def initAlgorithm(self, config=None): self.DIRECTIONS = OrderedDict([ (self.tr('Forward direction'), QgsVectorLayerDirector.DirectionForward), (self.tr('Backward direction'), QgsVectorLayerDirector.DirectionBackward), (self.tr('Both directions'), QgsVectorLayerDirector.DirectionBoth) ]) self.STRATEGIES = [ self.tr('Shortest distance'), self.tr('Fastest time') ] self.addParameter( QgsProcessingParameterFeatureSource( self.INPUT, self.tr('Vector layer representing network'), [QgsProcessing.TypeVectorLine])) self.addParameter( QgsProcessingParameterFeatureSource( self.START_POINTS, self.tr('Start Points'), [QgsProcessing.TypeVectorPoint])) self.addParameter( QgsProcessingParameterField(self.ID_FIELD, self.tr('Unique Point ID Field'), None, self.START_POINTS, optional=False)) self.addParameter( QgsProcessingParameterNumber( self.MAX_DIST, self.tr('Maximum cost level of Iso-Area'), QgsProcessingParameterNumber.Double, 2500.0, False, 0, 99999999.99)) self.addParameter( QgsProcessingParameterNumber( self.INTERVAL, self.tr('Contour Interval (distance or time value)'), QgsProcessingParameterNumber.Double, 500.0, False, 0, 99999999.99)) self.addParameter( QgsProcessingParameterNumber( self.CELL_SIZE, self.tr('Cellsize of interpolation raster'), QgsProcessingParameterNumber.Integer, 10, False, 1, 99999999)) self.addParameter( QgsProcessingParameterEnum(self.STRATEGY, self.tr('Path type to calculate'), self.STRATEGIES, defaultValue=0)) params = [] params.append( QgsProcessingParameterField(self.DIRECTION_FIELD, self.tr('Direction field'), None, self.INPUT, optional=True)) params.append( QgsProcessingParameterString( self.VALUE_FORWARD, self.tr('Value for forward direction'), optional=True)) params.append( QgsProcessingParameterString( self.VALUE_BACKWARD, self.tr('Value for backward direction'), optional=True)) params.append( QgsProcessingParameterString(self.VALUE_BOTH, self.tr('Value for both directions'), optional=True)) params.append( QgsProcessingParameterEnum(self.DEFAULT_DIRECTION, self.tr('Default direction'), list(self.DIRECTIONS.keys()), defaultValue=2)) params.append( QgsProcessingParameterField(self.SPEED_FIELD, self.tr('Speed field (km/h)'), None, self.INPUT, optional=True)) params.append( QgsProcessingParameterNumber(self.DEFAULT_SPEED, self.tr('Default speed (km/h)'), QgsProcessingParameterNumber.Double, 5.0, False, 0, 99999999.99)) params.append( QgsProcessingParameterNumber(self.TOLERANCE, self.tr('Topology tolerance'), QgsProcessingParameterNumber.Double, 0.00001, False, 0, 99999999.99)) for p in params: p.setFlags(p.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(p) self.addParameter( QgsProcessingParameterRasterDestination( self.OUTPUT_INTERPOLATION, self.tr('Output Interpolation'))) self.addParameter( QgsProcessingParameterFeatureSink(self.OUTPUT_POLYGONS, self.tr('Output Polygon'), QgsProcessing.TypeVectorPolygon))
def initAlgorithm(self, config=None): """ Here we define the inputs and output of the algorithm, along with some other properties. """ # INPUTS self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT_PAN, self.tr('Panchromatic layer'))) self.addParameter( QgsProcessingParameterBand(self.BAND_PAN, self.tr('Pan Band'), 1, self.INPUT_PAN)) self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT_XS, self.tr('Multispectral layer'))) self.addParameter( QgsProcessingParameterBand(self.BAND_R, self.tr('Red Band'), 1, self.INPUT_XS)) self.addParameter( QgsProcessingParameterBand(self.BAND_G, self.tr('Green Band'), 2, self.INPUT_XS)) self.addParameter( QgsProcessingParameterBand(self.BAND_B, self.tr('Blue Band'), 3, self.INPUT_XS)) self.addParameter( QgsProcessingParameterBand(self.BAND_NIR, self.tr('NIR Band'), 0, self.INPUT_XS, optional=True)) weight_r = QgsProcessingParameterNumber( self.WEIGHT_R, self.tr('Weight Red Band'), type=QgsProcessingParameterNumber.Double, defaultValue=0.25, minValue=0, maxValue=1) weight_g = QgsProcessingParameterNumber( self.WEIGHT_G, self.tr('Weight Green Band'), type=QgsProcessingParameterNumber.Double, defaultValue=0.25, minValue=0, maxValue=1) weight_b = QgsProcessingParameterNumber( self.WEIGHT_B, self.tr('Weight Blue Band'), type=QgsProcessingParameterNumber.Double, defaultValue=0.25, minValue=0, maxValue=1) weight_nir = QgsProcessingParameterNumber( self.WEIGHT_NIR, self.tr('Weight NIR Band'), type=QgsProcessingParameterNumber.Double, defaultValue=0.25, minValue=0, maxValue=1, optional=True) weight_r.setMetadata({'widget_wrapper': {'decimals': 2}}) weight_g.setMetadata({'widget_wrapper': {'decimals': 2}}) weight_b.setMetadata({'widget_wrapper': {'decimals': 2}}) weight_nir.setMetadata({'widget_wrapper': {'decimals': 2}}) self.addParameter(weight_r) self.addParameter(weight_g) self.addParameter(weight_b) self.addParameter(weight_nir) self.addParameter( QgsProcessingParameterExtent(self.OUT_EXTENT, self.tr('Output extent'))) self.addParameter( QgsProcessingParameterCrs(self.OUT_CRS, self.tr('Output CRS'), None, optional=True)) # OUTPUT self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Output layer')))
def initAlgorithm(self, config=None): """ Here we define the inputs and output of the algorithm, along with some other properties. """ self.addParameter( QgsProcessingParameterRasterLayer( self.INPUT, self.tr('Input DEM raster layer'), [QgsProcessing.TypeRaster])) self.addParameter( QgsProcessingParameterNumber( name="VE_FACTOR", description="Vertical exaggeration factor", type=QgsProcessingParameterNumber.Double, defaultValue=1, minValue=-1000, maxValue=1000)) self.addParameter( QgsProcessingParameterEnum(name="SKY_MODEL", description="Sky model", options=self.sky_model_options, defaultValue="overcast")) self.addParameter( QgsProcessingParameterNumber( name="NUM_DIRECTIONS", description="Number of horizon search directions", type=QgsProcessingParameterNumber.Integer, defaultValue=32, minValue=8, maxValue=128)) self.addParameter( QgsProcessingParameterNumber( name="SHADOW_DIST", description="Max shadow modeling distance", type=QgsProcessingParameterNumber.Integer, defaultValue=100, minValue=10, maxValue=1000)) self.addParameter( QgsProcessingParameterNumber( name="SHADOW_AZIMUTH", description="Shadow azimuth", type=QgsProcessingParameterNumber.Double, defaultValue=315, minValue=0, maxValue=360)) self.addParameter( QgsProcessingParameterNumber( name="SHADOW_ELEVATION", description="Shadow elevation", type=QgsProcessingParameterNumber.Double, defaultValue=35, minValue=0, maxValue=90)) self.addParameter( QgsProcessingParameterBoolean(name="SAVE_AS_8BIT", description="Save as 8bit raster", defaultValue=False)) self.addParameter( QgsProcessingParameterBoolean(name="FILL_NO_DATA", description="Fill no-data (holes)", defaultValue=True)) self.addParameter( QgsProcessingParameterBoolean(name="KEEP_ORIG_NO_DATA", description="Keep original no-data", defaultValue=False)) self.addParameter( QgsProcessingParameterRasterDestination( self.OUTPUT, self.tr('Output visualization raster layer')))
def accept(self): description = 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 self.alg.parameterDefinition(name): name = safeName.lower() + str(i) i += 1 else: name = self.param.name() # Destination parameter if (isinstance(self.param, QgsProcessingParameterFeatureSink)): self.param = QgsProcessingParameterFeatureSink( name=name, description=self.param.description(), type=self.param.dataType(), defaultValue=self.defaultWidget.value()) elif (isinstance(self.param, QgsProcessingParameterFileDestination)): self.param = QgsProcessingParameterFileDestination( name=name, description=self.param.description(), fileFilter=self.param.fileFilter(), defaultValue=self.defaultWidget.value()) elif (isinstance(self.param, QgsProcessingParameterFolderDestination)): self.param = QgsProcessingParameterFolderDestination( name=name, description=self.param.description(), defaultValue=self.defaultWidget.value()) elif (isinstance(self.param, QgsProcessingParameterRasterDestination)): self.param = QgsProcessingParameterRasterDestination( name=name, description=self.param.description(), defaultValue=self.defaultWidget.value()) elif (isinstance(self.param, QgsProcessingParameterVectorDestination)): self.param = QgsProcessingParameterVectorDestination( name=name, description=self.param.description(), type=self.param.dataType(), defaultValue=self.defaultWidget.value()) else: if self.paramType: typeId = self.paramType else: typeId = self.param.type() paramTypeDef = QgsApplication.instance().processingRegistry( ).parameterType(typeId) if not paramTypeDef: msg = self.tr( 'The parameter `{}` is not registered, are you missing a required plugin?' .format(typeId)) raise UndefinedParameterException(msg) self.param = paramTypeDef.create(name) self.param.setDescription(description) self.param.setMetadata(paramTypeDef.metadata()) if not self.requiredCheck.isChecked(): self.param.setFlags( self.param.flags() | QgsProcessingParameterDefinition.FlagOptional) else: self.param.setFlags( self.param.flags() & ~QgsProcessingParameterDefinition.FlagOptional) if self.advancedCheck.isChecked(): self.param.setFlags( self.param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) else: self.param.setFlags( self.param.flags() & ~QgsProcessingParameterDefinition.FlagAdvanced) settings = QgsSettings() settings.setValue( "/Processing/modelParametersDefinitionDialogGeometry", self.saveGeometry()) QDialog.accept(self)
def initAlgorithm(self, config=None): self.methods = ((self.tr('Nearest neighbour'), 'near'), (self.tr('Bilinear'), 'bilinear'), (self.tr('Cubic'), 'cubic'), (self.tr('Cubic spline'), 'cubicspline'), (self.tr('Lanczos windowed sinc'), 'lanczos'), (self.tr('Average'), 'average'), (self.tr('Mode'), 'mode'), (self.tr('Maximum'), 'max'), (self.tr('Minimum'), 'min'), (self.tr('Median'), 'med'), (self.tr('First quartile'), 'q1'), (self.tr('Third quartile'), 'q3')) self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer'))) self.addParameter( QgsProcessingParameterCrs(self.SOURCE_CRS, self.tr('Source CRS'), optional=True)) self.addParameter( QgsProcessingParameterCrs(self.TARGET_CRS, self.tr('Target CRS'), 'EPSG:4326')) self.addParameter( QgsProcessingParameterNumber( self.NODATA, self.tr('Nodata value for output bands'), type=QgsProcessingParameterNumber.Double, defaultValue=0.0)) self.addParameter( QgsProcessingParameterNumber( self.TARGET_RESOLUTION, self.tr( 'Output file resolution in target georeferenced units'), type=QgsProcessingParameterNumber.Double, minValue=0.0, defaultValue=None)) options_param = QgsProcessingParameterString( self.OPTIONS, self.tr('Additional creation parameters'), defaultValue='', optional=True) options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) options_param.setMetadata({ 'widget_wrapper': { 'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper' } }) self.addParameter(options_param) self.addParameter( QgsProcessingParameterEnum(self.RESAMPLING, self.tr('Resampling method to use'), options=[i[0] for i in self.methods], defaultValue=0)) dataType_param = QgsProcessingParameterEnum( self.DATA_TYPE, self.tr('Output data type'), self.TYPES, allowMultiple=False, defaultValue=5) dataType_param.setFlags( dataType_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(dataType_param) target_extent_param = QgsProcessingParameterExtent( self.TARGET_EXTENT, self.tr('Georeferenced extents of output file to be created'), optional=True) target_extent_param.setFlags( target_extent_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(target_extent_param) target_extent_crs_param = QgsProcessingParameterCrs( self.TARGET_EXTENT_CRS, self.tr('CRS of the target raster extent'), optional=True) multithreading_param = QgsProcessingParameterBoolean( self.MULTITHREADING, self.tr('Use multithreaded warping implementation'), defaultValue=False) multithreading_param.setFlags( multithreading_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(multithreading_param) self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Reprojected')))
def initAlgorithm(self, config): x_min = -100e3 x_max = 200e3 y_min = -150e3 y_max = 150e3 dx = 750 dy = 750 x0 = -25e3 y0 = 0.0 sigma_x = 15e3 sigma_y = 15e3 self.addParameter( QgsProcessingParameterCrs(self.TARGET_CRS, self.tr('Target CRS'), 'ProjectCrs')) self.addParameter( QgsProcessingParameterExtent( self.EXTENT, self.tr('Extent'), "{}, {}, {}, {}".format(x_min, x_max, y_min, y_max))) self.addParameter( QgsProcessingParameterNumber(self.DX, self.tr("Grid spacing (dx, meters)"), QgsProcessingParameterNumber.Double, defaultValue=dx, minValue=0.0)) self.addParameter( QgsProcessingParameterNumber(self.DY, self.tr("Grid spacing (dy, meters)"), QgsProcessingParameterNumber.Double, defaultValue=dy, minValue=0.0)) self.addParameter( QgsProcessingParameterPoint(self.CENTER, self.tr("Center"), "{}, {}".format(x0, y0))) s_x = QgsProcessingParameterNumber( self.SIGMA_X, self.tr("Spread in the X direction (sigma_x)"), QgsProcessingParameterNumber.Double, defaultValue=sigma_x, minValue=0.0) s_x.setFlags(s_x.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(s_x) s_y = QgsProcessingParameterNumber( self.SIGMA_Y, self.tr("Spread in the Y direction (sigma_y)"), QgsProcessingParameterNumber.Double, defaultValue=sigma_y, minValue=0.0) s_y.setFlags(s_y.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(s_y) self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Testing DEM')))
def initAlgorithm(self, config): """ Here we define the inputs and output of the algorithm, along with some other properties. """ # We add the input vector features source. It can have any kind of # geometry. self.addParameter( QgsProcessingParameterRasterLayer(self.TI, self.tr('Training raster'))) self.addParameter( QgsProcessingParameterBand(self.BANDS_TI, self.tr('Selected band(s)'), None, self.TI, allowMultiple=True)) self.addParameter( QgsProcessingParameterRasterLayer( self.INPUT, self.tr('Raster on which to simulate'))) self.addParameter( QgsProcessingParameterBand(self.BANDS_INPUT, self.tr('Selected band(s)'), None, self.INPUT, allowMultiple=True)) # We add a feature sink in which to store our processed features (this # usually takes the form of a newly created vector layer when the # algorithm is run in QGIS). self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('QS simulation'))) self.addParameter( QgsProcessingParameterNumber( self.PARAM_K, self.tr('Parameter k'), QgsProcessingParameterNumber.Double, 1.2, minValue=1, )) self.addParameter( QgsProcessingParameterNumber( self.PARAM_N, self.tr('Parameter N'), QgsProcessingParameterNumber.Integer, 30, minValue=1, )) self.addParameter( QgsProcessingParameterEnum(self.KERNEL_TYPE, self.tr('Type of kernel'), [ self.tr('Uniform'), self.tr('Exponential'), self.tr('Gaussian') ], defaultValue=0, optional=True)) self.addParameter( QgsProcessingParameterNumber(self.KERNEL_ALPHA, self.tr('Kernel Alpha OR Max radius'), QgsProcessingParameterNumber.Double, 1, minValue=0.001, optional=True)) paramj = QgsProcessingParameterNumber( self.PARAM_J, self. tr('Parallelization, interger for number of cores, and decimal ]0,1[, for porcentage of total cores' ), QgsProcessingParameterNumber.Double, 0.5, minValue=0.001, optional=True) paramj.setFlags(paramj.flags() | QgsProcessingParameterDefinition.FlagAdvanced) paramSA = QgsProcessingParameterString( self.PARAM_SA, self.tr('DNS name or IP of the G2S server'), 'localhost', optional=True) paramSA.setFlags(paramSA.flags() | QgsProcessingParameterDefinition.FlagAdvanced) ignoreResolution = QgsProcessingParameterBoolean( self.PARAM_IGNORE_RESOLUTION, self.tr('ignore resolution check'), False, optional=True) ignoreResolution.setFlags( ignoreResolution.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(paramj) self.addParameter(paramSA) self.addParameter(ignoreResolution)
def initOutput(self): self.addParameter( QgsProcessingParameterRasterDestination( self.OUTPUT, self.tr('Output layer')))
def initAlgorithm(self, config=None): self.distanceUnits = ((self.tr('Georeferenced coordinates'), 'GEO'), (self.tr('Pixel coordinates'), 'PIXEL')) self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer'))) self.addParameter( QgsProcessingParameterBand(self.BAND, self.tr('Band number'), parentLayerParameterName=self.INPUT)) self.addParameter( QgsProcessingParameterString( self.VALUES, self. tr('A list of pixel values in the source image to be considered target pixels' ), optional=True)) self.addParameter( QgsProcessingParameterEnum( self.UNITS, self.tr('Distance units'), options=[i[0] for i in self.distanceUnits], allowMultiple=False, defaultValue=1)) self.addParameter( QgsProcessingParameterNumber( self.MAX_DISTANCE, self.tr('The maximum distance to be generated'), type=QgsProcessingParameterNumber.Double, minValue=0.0, defaultValue=0.0, optional=True)) self.addParameter( QgsProcessingParameterNumber( self.REPLACE, self. tr('Value to be applied to all pixels that are within the -maxdist of target pixels' ), type=QgsProcessingParameterNumber.Double, defaultValue=0.0, optional=True)) self.addParameter( QgsProcessingParameterNumber( self.NODATA, self. tr('Nodata value to use for the destination proximity raster'), type=QgsProcessingParameterNumber.Double, defaultValue=0.0, optional=True)) options_param = QgsProcessingParameterString( self.OPTIONS, self.tr('Additional creation options'), defaultValue='', optional=True) options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) options_param.setMetadata({ 'widget_wrapper': { 'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper' } }) self.addParameter(options_param) self.addParameter( QgsProcessingParameterEnum(self.DATA_TYPE, self.tr('Output data type'), self.TYPES, allowMultiple=False, defaultValue=5)) self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Proximity map')))
def initAlgorithm(self, config=None): """ Here we define the inputs and output of the algorithm, along with some other properties. """ self.addParameter( QgsProcessingParameterRasterLayer( self.INPUT, self.tr('Input DEM raster layer'), [QgsProcessing.TypeRaster] ) ) self.addParameter( QgsProcessingParameterNumber( name="VE_FACTOR", description="Vertical exaggeration factor", type=QgsProcessingParameterNumber.Double, defaultValue=1, minValue=-1000, maxValue=1000 ) ) self.addParameter( QgsProcessingParameterNumber( name="NUM_DIRECTIONS", description="Number of solar azimuth angles (bands).", type=QgsProcessingParameterNumber.Integer, defaultValue=16, minValue=2, maxValue=64 ) ) self.addParameter( QgsProcessingParameterNumber( name="SUN_ELEVATION", description="Solar vertical angle (above the horizon) in degrees.", type=QgsProcessingParameterNumber.Double, defaultValue=35, minValue=0, maxValue=90 ) ) self.addParameter( QgsProcessingParameterBoolean( name="SAVE_AS_8BIT", description="Save as 8bit raster", defaultValue=False ) ) self.addParameter( QgsProcessingParameterBoolean( name="FILL_NO_DATA", description="Fill no-data (holes)", defaultValue=True ) ) self.addParameter( QgsProcessingParameterBoolean( name="KEEP_ORIG_NO_DATA", description="Keep original no-data", defaultValue=False ) ) self.addParameter( QgsProcessingParameterRasterDestination( self.OUTPUT, self.tr('Output visualization raster layer') ) )
def initAlgorithm(self, config=None): layer_param = QgsProcessingParameterMultipleLayers( self.LAYERS, self.tr('Input layers'), layerType=QgsProcessing.TypeRaster, optional=True) layer_param.setMetadata({ 'widget_wrapper': 'processing.algs.qgis.ui.RasterCalculatorWidgets.LayersListWidgetWrapper' }) self.addParameter(layer_param) class ParameterRasterCalculatorExpression(QgsProcessingParameterString ): def __init__(self, name='', description='', multiLine=False): super().__init__(name, description, multiLine=multiLine) self.setMetadata({ 'widget_wrapper': 'processing.algs.qgis.ui.RasterCalculatorWidgets.ExpressionWidgetWrapper' }) def type(self): return 'raster_calc_expression' def clone(self): return ParameterRasterCalculatorExpression( self.name(), self.description(), self.multiLine()) def evaluateForModeler(self, value, model): for i in list(model.inputs.values()): param = i.param if isinstance(param, QgsProcessingParameterRasterLayer): new = "{}@".format(os.path.basename(param.value)) old = "{}@".format(param.name()) value = value.replace(old, new) for alg in list(model.algs.values()): for out in alg.algorithm.outputs: if isinstance(out, QgsProcessingOutputRasterLayer): if out.value: new = "{}@".format( os.path.basename(out.value)) old = "{}:{}@".format( alg.modeler_name, out.name) value = value.replace(old, new) return value self.addParameter( ParameterRasterCalculatorExpression(self.EXPRESSION, self.tr('Expression'), multiLine=True)) self.addParameter( QgsProcessingParameterNumber( self.CELLSIZE, self.tr('Cell size (use 0 or empty to set it automatically)'), type=QgsProcessingParameterNumber.Double, minValue=0.0, defaultValue=0.0, optional=True)) self.addParameter( QgsProcessingParameterExtent(self.EXTENT, self.tr('Output extent'), optional=True)) self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Output')))
def initAlgorithm(self, config=None): """ Here we define the inputs and output of the algorithm, along with some other properties. """ self.addParameter( QgsProcessingParameterRasterLayer( self.INPUT, self.tr('Input DEM raster layer'), [QgsProcessing.TypeRaster])) self.addParameter( QgsProcessingParameterNumber( name="VE_FACTOR", description="Vertical exaggeration factor", type=QgsProcessingParameterNumber.Double, defaultValue=1, minValue=-1000, maxValue=1000)) self.addParameter( QgsProcessingParameterNumber( name="LOCAL_SCALE_MIN", description="Local scale minimum radius [pixels]", type=QgsProcessingParameterNumber.Integer, defaultValue=1, minValue=1, maxValue=1000000000)) self.addParameter( QgsProcessingParameterNumber( name="LOCAL_SCALE_MAX", description="Local scale maximum radius [pixels]", type=QgsProcessingParameterNumber.Integer, defaultValue=10, minValue=1, maxValue=1000000000)) self.addParameter( QgsProcessingParameterNumber( name="LOCAL_SCALE_STEP", description="Local scale step [pixels]", type=QgsProcessingParameterNumber.Integer, defaultValue=1, minValue=1, maxValue=1000000000)) self.addParameter( QgsProcessingParameterNumber( name="MESO_SCALE_MIN", description="Meso scale minimum radius [pixels]", type=QgsProcessingParameterNumber.Integer, defaultValue=10, minValue=1, maxValue=1000000000)) self.addParameter( QgsProcessingParameterNumber( name="MESO_SCALE_MAX", description="Meso scale maximum radius [pixels]", type=QgsProcessingParameterNumber.Integer, defaultValue=100, minValue=1, maxValue=1000000000)) self.addParameter( QgsProcessingParameterNumber( name="MESO_SCALE_STEP", description="Meso scale step [pixels]", type=QgsProcessingParameterNumber.Integer, defaultValue=10, minValue=1, maxValue=1000000000)) self.addParameter( QgsProcessingParameterNumber( name="BROAD_SCALE_MIN", description="Broad scale minimum radius [pixels]", type=QgsProcessingParameterNumber.Integer, defaultValue=100, minValue=1, maxValue=1000000000)) self.addParameter( QgsProcessingParameterNumber( name="BROAD_SCALE_MAX", description="Broad scale maximum radius [pixels]", type=QgsProcessingParameterNumber.Integer, defaultValue=1000, minValue=1, maxValue=1000000000)) self.addParameter( QgsProcessingParameterNumber( name="BROAD_SCALE_STEP", description="Broad scale step [pixels]", type=QgsProcessingParameterNumber.Integer, defaultValue=100, minValue=1, maxValue=1000000000)) self.addParameter( QgsProcessingParameterNumber( name="LIGHTNESS", description="Lightness of image", type=QgsProcessingParameterNumber.Double, defaultValue=1.2, minValue=0.1, maxValue=5.0)) self.addParameter( QgsProcessingParameterRasterDestination( self.OUTPUT, self.tr('Output visualization raster layer')))
def initAlgorithm(self, config=None): self.KERNELS = OrderedDict([ (self.tr('Quartic'), QgsKernelDensityEstimation.KernelQuartic), (self.tr('Triangular'), QgsKernelDensityEstimation.KernelTriangular), (self.tr('Uniform'), QgsKernelDensityEstimation.KernelUniform), (self.tr('Triweight'), QgsKernelDensityEstimation.KernelTriweight), (self.tr('Epanechnikov'), QgsKernelDensityEstimation.KernelEpanechnikov) ]) self.OUTPUT_VALUES = OrderedDict([ (self.tr('Raw'), QgsKernelDensityEstimation.OutputRaw), (self.tr('Scaled'), QgsKernelDensityEstimation.OutputScaled) ]) self.addParameter( QgsProcessingParameterFeatureSource( self.INPUT, self.tr('Point layer'), [QgsProcessing.TypeVectorPoint])) self.addParameter( QgsProcessingParameterNumber(self.RADIUS, self.tr('Radius (layer units)'), QgsProcessingParameterNumber.Double, 100.0, False, 0.0, 9999999999.99)) radius_field_param = QgsProcessingParameterField( self.RADIUS_FIELD, self.tr('Radius from field'), None, self.INPUT, QgsProcessingParameterField.Numeric, optional=True) radius_field_param.setFlags( radius_field_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(radius_field_param) class ParameterHeatmapPixelSize(QgsProcessingParameterNumber): def __init__(self, name='', description='', parent_layer=None, radius_param=None, radius_field_param=None, minValue=None, maxValue=None, default=None, optional=False): QgsProcessingParameterNumber.__init__( self, name, description, QgsProcessingParameterNumber.Double, default, optional, minValue, maxValue) self.parent_layer = parent_layer self.radius_param = radius_param self.radius_field_param = radius_field_param pixel_size_param = ParameterHeatmapPixelSize( self.PIXEL_SIZE, self.tr('Output raster size'), parent_layer=self.INPUT, radius_param=self.RADIUS, radius_field_param=self.RADIUS_FIELD, minValue=0.0, maxValue=9999999999, default=0.1) pixel_size_param.setMetadata({ 'widget_wrapper': { 'class': 'processing.algs.qgis.ui.HeatmapWidgets.HeatmapPixelSizeWidgetWrapper' } }) self.addParameter(pixel_size_param) weight_field_param = QgsProcessingParameterField( self.WEIGHT_FIELD, self.tr('Weight from field'), None, self.INPUT, QgsProcessingParameterField.Numeric, optional=True) weight_field_param.setFlags( weight_field_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(weight_field_param) keys = list(self.KERNELS.keys()) kernel_shape_param = QgsProcessingParameterEnum( self.KERNEL, self.tr('Kernel shape'), keys, allowMultiple=False, defaultValue=0) kernel_shape_param.setFlags( kernel_shape_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(kernel_shape_param) decay_ratio = QgsProcessingParameterNumber( self.DECAY, self.tr('Decay ratio (Triangular kernels only)'), QgsProcessingParameterNumber.Double, 0.0, True, -100.0, 100.0) decay_ratio.setFlags(decay_ratio.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(decay_ratio) keys = list(self.OUTPUT_VALUES.keys()) output_scaling = QgsProcessingParameterEnum( self.OUTPUT_VALUE, self.tr('Output value scaling'), keys, allowMultiple=False, defaultValue=0) output_scaling.setFlags( output_scaling.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(output_scaling) self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Heatmap')))
def initAlgorithm(self, config=None): self.addParameter( QgsProcessingParameterRasterLayer( self.INPUT, "Modèle numérique de terrain", defaultValue=None, )) self.addParameter( QgsProcessingParameterNumber( self.ITERATION, "Nombre d'itération", type=QgsProcessingParameterNumber.Integer, minValue=1, defaultValue=25, )) self.addParameter( QgsProcessingParameterNumber( self.BRUITAGE_MIN, "Bruitage minimal", type=QgsProcessingParameterNumber.Double, minValue=0.01, defaultValue=0.01, )) self.addParameter( QgsProcessingParameterNumber( self.BRUITAGE_MAX, "Bruitage maximal", type=QgsProcessingParameterNumber.Double, minValue=0.01, defaultValue=5, )) self.addParameter( QgsProcessingParameterNumber( self.SEUIL, "Seuil", type=QgsProcessingParameterNumber.Integer, defaultValue=500, )) param = QgsProcessingParameterNumber( self.MINIMUMSIZEOFEXTERIORWATERSHEDBASIN, # TODO : traduire ça "Minimum size of exterior watershed basin", type=QgsProcessingParameterNumber.Integer, defaultValue=500, ) param.setFlags(param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(param) param = QgsProcessingParameterBoolean( self.SUPPRFICHIERSINTERMED, "Suppression des fichiers intermédaires au fur et à mesure des itérations", defaultValue=True, ) param.setFlags(param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(param) self.addParameter( QgsProcessingParameterRasterDestination( self.OUTPUT, "Couche ExZEco générée", createByDefault=True, defaultValue=None, ))
def accept(self): description = 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 self.alg.parameterDefinition(name): name = safeName.lower() + str(i) i += 1 else: name = self.param.name() if (self.paramType == parameters.PARAMETER_BOOLEAN or isinstance(self.param, QgsProcessingParameterBoolean)): self.param = QgsProcessingParameterBoolean(name, description, self.state.isChecked()) elif (self.paramType == parameters.PARAMETER_TABLE_FIELD or isinstance(self.param, QgsProcessingParameterField)): 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() default = self.defaultTextBox.text() if not default: default = None self.param = QgsProcessingParameterField( name, description, defaultValue=default, parentLayerParameterName=parent, type=datatype, allowMultiple=self.multipleCheck.isChecked()) elif (self.paramType == parameters.PARAMETER_BAND or isinstance(self.param, QgsProcessingParameterBand)): 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() self.param = QgsProcessingParameterBand(name, description, None, parent) elif (self.paramType == parameters.PARAMETER_MAP_LAYER or isinstance(self.param, QgsProcessingParameterMapLayer)): self.param = QgsProcessingParameterMapLayer(name, description) elif (self.paramType == parameters.PARAMETER_RASTER or isinstance(self.param, QgsProcessingParameterRasterLayer)): self.param = QgsProcessingParameterRasterLayer(name, description) elif (self.paramType == parameters.PARAMETER_TABLE or isinstance(self.param, QgsProcessingParameterVectorLayer)): self.param = QgsProcessingParameterVectorLayer( name, description, [self.shapetypeCombo.currentData()]) elif (self.paramType == parameters.PARAMETER_VECTOR or isinstance(self.param, QgsProcessingParameterFeatureSource)): self.param = QgsProcessingParameterFeatureSource( name, description, [self.shapetypeCombo.currentData()]) elif (self.paramType == parameters.PARAMETER_MULTIPLE or isinstance(self.param, QgsProcessingParameterMultipleLayers)): self.param = QgsProcessingParameterMultipleLayers( name, description, self.datatypeCombo.currentData()) elif (self.paramType == parameters.PARAMETER_NUMBER or isinstance( self.param, (QgsProcessingParameterNumber, QgsProcessingParameterDistance))): try: self.param = QgsProcessingParameterNumber( name, description, QgsProcessingParameterNumber.Double, self.defaultTextBox.text()) vmin = self.minTextBox.text().strip() if not vmin == '': self.param.setMinimum(float(vmin)) vmax = self.maxTextBox.text().strip() if not vmax == '': self.param.setMaximum(float(vmax)) except: QMessageBox.warning( self, self.tr('Unable to define parameter'), self.tr('Wrong or missing parameter values')) return elif (self.paramType == parameters.PARAMETER_EXPRESSION or isinstance(self.param, QgsProcessingParameterExpression)): parent = self.parentCombo.currentData() self.param = QgsProcessingParameterExpression( name, description, str(self.defaultEdit.expression()), parent) elif (self.paramType == parameters.PARAMETER_STRING or isinstance(self.param, QgsProcessingParameterString)): self.param = QgsProcessingParameterString( name, description, str(self.defaultTextBox.text())) elif (self.paramType == parameters.PARAMETER_EXTENT or isinstance(self.param, QgsProcessingParameterExtent)): self.param = QgsProcessingParameterExtent(name, description) elif (self.paramType == parameters.PARAMETER_FILE or isinstance(self.param, QgsProcessingParameterFile)): isFolder = self.fileFolderCombo.currentIndex() == 1 self.param = QgsProcessingParameterFile( name, description, QgsProcessingParameterFile.Folder if isFolder else QgsProcessingParameterFile.File) elif (self.paramType == parameters.PARAMETER_POINT or isinstance(self.param, QgsProcessingParameterPoint)): self.param = QgsProcessingParameterPoint( name, description, str(self.defaultTextBox.text())) elif (self.paramType == parameters.PARAMETER_CRS or isinstance(self.param, QgsProcessingParameterCrs)): self.param = QgsProcessingParameterCrs( name, description, self.selector.crs().authid()) elif (self.paramType == parameters.PARAMETER_ENUM or isinstance(self.param, QgsProcessingParameterEnum)): self.param = QgsProcessingParameterEnum( name, description, self.widget.options(), self.widget.allowMultiple(), self.widget.defaultOptions()) elif (self.paramType == parameters.PARAMETER_MATRIX or isinstance(self.param, QgsProcessingParameterMatrix)): self.param = QgsProcessingParameterMatrix( name, description, hasFixedNumberRows=self.widget.fixedRows(), headers=self.widget.headers(), defaultValue=self.widget.value()) # Destination parameter elif (isinstance(self.param, QgsProcessingParameterFeatureSink)): self.param = QgsProcessingParameterFeatureSink( name=name, description=self.param.description(), type=self.param.dataType(), defaultValue=self.defaultWidget.getValue()) elif (isinstance(self.param, QgsProcessingParameterFileDestination)): self.param = QgsProcessingParameterFileDestination( name=name, description=self.param.description(), fileFilter=self.param.fileFilter(), defaultValue=self.defaultWidget.getValue()) elif (isinstance(self.param, QgsProcessingParameterFolderDestination)): self.param = QgsProcessingParameterFolderDestination( name=name, description=self.param.description(), defaultValue=self.defaultWidget.getValue()) elif (isinstance(self.param, QgsProcessingParameterRasterDestination)): self.param = QgsProcessingParameterRasterDestination( name=name, description=self.param.description(), defaultValue=self.defaultWidget.getValue()) elif (isinstance(self.param, QgsProcessingParameterVectorDestination)): self.param = QgsProcessingParameterVectorDestination( name=name, description=self.param.description(), type=self.param.dataType(), defaultValue=self.defaultWidget.getValue()) else: if self.paramType: typeId = self.paramType else: typeId = self.param.type() paramTypeDef = QgsApplication.instance().processingRegistry( ).parameterType(typeId) if not paramTypeDef: msg = self.tr( 'The parameter `{}` is not registered, are you missing a required plugin?' .format(typeId)) raise UndefinedParameterException(msg) self.param = paramTypeDef.create(name) self.param.setDescription(description) self.param.setMetadata(paramTypeDef.metadata()) if not self.requiredCheck.isChecked(): self.param.setFlags( self.param.flags() | QgsProcessingParameterDefinition.FlagOptional) else: self.param.setFlags( self.param.flags() & ~QgsProcessingParameterDefinition.FlagOptional) settings = QgsSettings() settings.setValue( "/Processing/modelParametersDefinitionDialogGeometry", self.saveGeometry()) QDialog.accept(self)
def initAlgorithm(self, config=None): self.addParameter( QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer'))) self.addParameter( QgsProcessingParameterBand(self.BAND, self.tr('Band number'), parentLayerParameterName=self.INPUT)) self.addParameter( QgsProcessingParameterNumber( self.Z_FACTOR, self.tr('Z factor (vertical exaggeration)'), type=QgsProcessingParameterNumber.Double, minValue=0.0, defaultValue=1.0)) self.addParameter( QgsProcessingParameterNumber( self.SCALE, self.tr('Scale (ratio of vertical units to horizontal)'), type=QgsProcessingParameterNumber.Double, minValue=0.0, defaultValue=1.0)) self.addParameter( QgsProcessingParameterNumber( self.AZIMUTH, self.tr('Azimuth of the light'), type=QgsProcessingParameterNumber.Double, minValue=0.0, maxValue=360, defaultValue=315.0)) self.addParameter( QgsProcessingParameterNumber( self.ALTITUDE, self.tr('Altitude of the light'), type=QgsProcessingParameterNumber.Double, minValue=0.0, defaultValue=45.0)) self.addParameter( QgsProcessingParameterBoolean(self.COMPUTE_EDGES, self.tr('Compute edges'), defaultValue=False)) self.addParameter( QgsProcessingParameterBoolean( self.ZEVENBERGEN, self. tr("Use Zevenbergen&Thorne formula instead of the Horn's one"), defaultValue=False)) self.addParameter( QgsProcessingParameterBoolean(self.COMBINED, self.tr("Combined shading"), defaultValue=False)) self.addParameter( QgsProcessingParameterBoolean(self.MULTIDIRECTIONAL, self.tr("Multidirectional shading"), defaultValue=False)) options_param = QgsProcessingParameterString( self.OPTIONS, self.tr('Additional creation parameters'), defaultValue='', optional=True) options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) options_param.setMetadata({ 'widget_wrapper': { 'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper' } }) self.addParameter(options_param) self.addParameter( QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Hillshade')))
def initAlgorithm(self, config=None): self.addParameter( QgsProcessingParameterFeatureSource( self.INPUT, self.tr('Point layer'), [QgsProcessing.TypeVectorPoint])) z_field_param = QgsProcessingParameterField( self.Z_FIELD, self.tr('Z value from field'), None, self.INPUT, QgsProcessingParameterField.Numeric, optional=True) z_field_param.setFlags(z_field_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(z_field_param) self.addParameter( QgsProcessingParameterNumber( self.RADIUS_1, self.tr('The first radius of search ellipse'), type=QgsProcessingParameterNumber.Double, minValue=0.0, defaultValue=0.0)) self.addParameter( QgsProcessingParameterNumber( self.RADIUS_2, self.tr('The second radius of search ellipse'), type=QgsProcessingParameterNumber.Double, minValue=0.0, defaultValue=0.0)) self.addParameter( QgsProcessingParameterNumber( self.ANGLE, self. tr('Angle of search ellipse rotation in degrees (counter clockwise)' ), type=QgsProcessingParameterNumber.Double, minValue=0.0, maxValue=360.0, defaultValue=0.0)) self.addParameter( QgsProcessingParameterNumber( self.MIN_POINTS, self.tr('Minimum number of data points to use'), type=QgsProcessingParameterNumber.Integer, minValue=0, defaultValue=0)) self.addParameter( QgsProcessingParameterNumber( self.NODATA, self.tr('NODATA marker to fill empty points'), type=QgsProcessingParameterNumber.Double, defaultValue=0.0)) options_param = QgsProcessingParameterString( self.OPTIONS, self.tr('Additional creation options'), defaultValue='', optional=True) options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) options_param.setMetadata({ 'widget_wrapper': { 'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper' } }) self.addParameter(options_param) dataType_param = QgsProcessingParameterEnum( self.DATA_TYPE, self.tr('Output data type'), self.TYPES, allowMultiple=False, defaultValue=5) dataType_param.setFlags( dataType_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(dataType_param) self.addParameter( QgsProcessingParameterRasterDestination( self.OUTPUT, self.tr('Interpolated (moving average)')))
def initAlgorithm(self, config=None): self.addParameter(QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer'))) self.addParameter(QgsProcessingParameterRasterDestination(self.R, self.tr('Output R band layer'))) self.addParameter(QgsProcessingParameterRasterDestination(self.G, self.tr('Output G band layer'))) self.addParameter(QgsProcessingParameterRasterDestination(self.B, self.tr('Output B band layer')))
def initAlgorithm(self, config=None): self.addParameter(QgsProcessingParameterFeatureSource(self.INPUT, self.tr('Point layer'), [QgsProcessing.TypeVectorPoint])) z_field_param = QgsProcessingParameterField(self.Z_FIELD, self.tr('Z value from field'), None, self.INPUT, QgsProcessingParameterField.Numeric, optional=True) z_field_param.setFlags(z_field_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(z_field_param) self.addParameter(QgsProcessingParameterNumber(self.POWER, self.tr('Weighting power'), type=QgsProcessingParameterNumber.Double, minValue=0.0, maxValue=100.0, defaultValue=2.0)) self.addParameter(QgsProcessingParameterNumber(self.SMOOTHING, self.tr('Smoothing'), type=QgsProcessingParameterNumber.Double, minValue=0.0, defaultValue=0.0)) self.addParameter(QgsProcessingParameterNumber(self.RADIUS, self.tr('The radius of the search circle'), type=QgsProcessingParameterNumber.Double, minValue=0.0, defaultValue=1.0)) self.addParameter(QgsProcessingParameterNumber(self.MAX_POINTS, self.tr('Maximum number of data points to use'), type=QgsProcessingParameterNumber.Integer, minValue=0, defaultValue=12)) self.addParameter(QgsProcessingParameterNumber(self.MIN_POINTS, self.tr('Minimum number of data points to use'), type=QgsProcessingParameterNumber.Integer, minValue=0, defaultValue=0)) self.addParameter(QgsProcessingParameterNumber(self.NODATA, self.tr('NODATA marker to fill empty points'), type=QgsProcessingParameterNumber.Double, defaultValue=0.0)) options_param = QgsProcessingParameterString(self.OPTIONS, self.tr('Additional creation options'), defaultValue='', optional=True) options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) options_param.setMetadata({ 'widget_wrapper': { 'class': 'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper'}}) self.addParameter(options_param) dataType_param = QgsProcessingParameterEnum(self.DATA_TYPE, self.tr('Output data type'), self.TYPES, allowMultiple=False, defaultValue=5) dataType_param.setFlags(dataType_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(dataType_param) self.addParameter(QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Interpolated (IDW with NN search)')))
def initAlgorithm(self, config=None): # Call function to look for precalculated values in layer "Bounding Geometry" self.look_for_precalculated_values() self.addParameter( QgsProcessingParameterVectorLayer( 'sites', 'LEC', types=[QgsProcessing.TypeVectorPoint], defaultValue=None)) self.addParameter( QgsProcessingParameterField( 'hubdistlecradii', 'HubDist_LEC_Radii', type=QgsProcessingParameterField.Numeric, parentLayerParameterName='sites', allowMultiple=False, defaultValue='HubDist')) self.addParameter( QgsProcessingParameterNumber( 'gridcellsize', 'Grid_Cellsize', type=QgsProcessingParameterNumber.Integer, defaultValue=1000)) self.addParameter( QgsProcessingParameterExpression( 'formel', 'Formel', parentLayerParameterName='', defaultValue=self.formula_default)) self.addParameter( QgsProcessingParameterNumber( 'lagdist', 'LagDist', type=QgsProcessingParameterNumber.Double, defaultValue=self.lag_dist_default)) self.addParameter( QgsProcessingParameterBoolean('BlockKriging', 'Block_Kriging', defaultValue=True)) self.addParameter( QgsProcessingParameterNumber( 'blocksize', 'Block_Size', type=QgsProcessingParameterNumber.Integer, defaultValue=100)) self.addParameter( QgsProcessingParameterNumber( 'maxsearchdist', 'Max_Search_Dist', type=QgsProcessingParameterNumber.Integer, defaultValue=self.max_search_dist_default)) self.addParameter( QgsProcessingParameterNumber( 'numberofptsmin', 'Number_of_Pts_Min', type=QgsProcessingParameterNumber.Integer, defaultValue=3)) self.addParameter( QgsProcessingParameterNumber( 'numberofptsmax', 'Number_of_Pts_Max', type=QgsProcessingParameterNumber.Integer, defaultValue=10)) self.addParameter( QgsProcessingParameterRasterDestination( 'Kriging_raster', 'Kriging_Raster', createByDefault=True, defaultValue="Kriging.sdat")) self.addParameter( QgsProcessingParameterRasterDestination( 'Quality_measure', 'Quality_Measure', optional=True, createByDefault=False, defaultValue="Variance.sdat"))