Beispiel #1
0
    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))

        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)
        target_extent_crs_param.setFlags(target_extent_crs_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(target_extent_crs_param)

        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)

        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)')))
Beispiel #2
0
    def initAlgorithm(self, config=None):

        class ParameterVrtDestination(QgsProcessingParameterRasterDestination):

            def __init__(self, name, description):
                super().__init__(name, description)

            def clone(self):
                copy = ParameterVrtDestination(self.name(), self.description())
                return copy

            def type(self):
                return 'vrt_destination'

            def defaultFileExtension(self):
                return 'vrt'

        self.addParameter(QgsProcessingParameterMultipleLayers(self.INPUT,
                                                               self.tr('Input layers'),
                                                               QgsProcessing.TypeRaster))
        self.addParameter(QgsProcessingParameterEnum(self.RESOLUTION,
                                                     self.tr('Resolution'),
                                                     options=self.RESOLUTION_OPTIONS,
                                                     defaultValue=0))
        self.addParameter(QgsProcessingParameterBoolean(self.SEPARATE,
                                                        self.tr('Place each input file into a separate band'),
                                                        defaultValue=True))
        self.addParameter(QgsProcessingParameterBoolean(self.PROJ_DIFFERENCE,
                                                        self.tr('Allow projection difference'),
                                                        defaultValue=False))

        add_alpha_param = QgsProcessingParameterBoolean(self.ADD_ALPHA,
                                                        self.tr('Add alpha mask band to VRT when source raster has none'),
                                                        defaultValue=False)
        add_alpha_param.setFlags(add_alpha_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(add_alpha_param)

        assign_crs = QgsProcessingParameterCrs(self.ASSIGN_CRS,
                                               self.tr('Override projection for the output file'),
                                               defaultValue=None, optional=True)
        assign_crs.setFlags(assign_crs.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(assign_crs)

        resampling = QgsProcessingParameterEnum(self.RESAMPLING,
                                                self.tr('Resampling algorithm'),
                                                options=self.RESAMPLING_OPTIONS,
                                                defaultValue=0)
        resampling.setFlags(resampling.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(resampling)

        src_nodata_param = QgsProcessingParameterString(self.SRC_NODATA,
                                                        self.tr('Nodata value(s) for input bands (space separated)'),
                                                        defaultValue=None,
                                                        optional=True)
        src_nodata_param.setFlags(src_nodata_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(src_nodata_param)

        self.addParameter(ParameterVrtDestination(self.OUTPUT, QCoreApplication.translate("ParameterVrtDestination", 'Virtual')))
Beispiel #3
0
    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(QgsProcessingParameterNumber(self.INTERVAL,
                                                       self.tr('Interval between contour lines'),
                                                       type=QgsProcessingParameterNumber.Double,
                                                       minValue=0.0,
                                                       defaultValue=10.0))
        self.addParameter(QgsProcessingParameterString(self.FIELD_NAME,
                                                       self.tr('Attribute name (if not set, no elevation attribute is attached)'),
                                                       defaultValue='ELEV',
                                                       optional=True))

        create_3d_param = QgsProcessingParameterBoolean(self.CREATE_3D,
                                                        self.tr('Produce 3D vector'),
                                                        defaultValue=False)
        create_3d_param.setFlags(create_3d_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(create_3d_param)

        ignore_nodata_param = QgsProcessingParameterBoolean(self.IGNORE_NODATA,
                                                            self.tr('Treat all raster values as valid'),
                                                            defaultValue=False)
        ignore_nodata_param.setFlags(ignore_nodata_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(ignore_nodata_param)

        nodata_param = QgsProcessingParameterNumber(self.NODATA,
                                                    self.tr('Input pixel value to treat as "nodata"'),
                                                    type=QgsProcessingParameterNumber.Double,
                                                    defaultValue=None,
                                                    optional=True)
        nodata_param.setFlags(nodata_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(nodata_param)

        offset_param = QgsProcessingParameterNumber(self.OFFSET,
                                                    self.tr('Offset from zero relative to which to interpret intervals'),
                                                    type=QgsProcessingParameterNumber.Double,
                                                    defaultValue=0.0,
                                                    optional=True)
        nodata_param.setFlags(offset_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(offset_param)

        options_param = QgsProcessingParameterString(self.OPTIONS,
                                                     self.tr('Additional creation options'),
                                                     defaultValue='',
                                                     optional=True)
        options_param.setFlags(options_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(options_param)

        self.addParameter(QgsProcessingParameterVectorDestination(
            self.OUTPUT, self.tr('Contours'), QgsProcessing.TypeVectorLine))
Beispiel #4
0
 def initAlgorithm(self, config=None):
     self.addParameter(QgsProcessingParameterFeatureSource(self.INPUT,
                                                           self.tr('Input layer'), types=[QgsProcessing.TypeVectorLine]))
     self.addParameter(QgsProcessingParameterBoolean(self.KEEP_FIELDS,
                                                     self.tr('Keep table structure of line layer'), defaultValue=False, optional=True))
     self.addParameter(QgsProcessingParameterFeatureSink(self.OUTPUT, self.tr('Polygons from lines'), QgsProcessing.TypeVectorPolygon))
Beispiel #5
0
    def accept(self):
        description = str(self.nameTextBox.text())
        if description.strip() == '':
            QMessageBox.warning(self, self.tr('Unable to define parameter'),
                                self.tr('Invalid parameter name'))
            return
        if self.param is None:
            validChars = \
                'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
            safeName = ''.join(c for c in description if c in validChars)
            name = safeName.lower()
            i = 2
            while 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)):
            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())
        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(name)
            self.param.setMetadata(paramTypeDef.metadata())

        if not self.requiredCheck.isChecked():
            self.param.setFlags(
                self.param.flags()
                | QgsProcessingParameterDefinition.FlagOptional)

        settings = QgsSettings()
        settings.setValue(
            "/Processing/modelParametersDefinitionDialogGeometry",
            self.saveGeometry())

        QDialog.accept(self)
Beispiel #6
0
    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')))
Beispiel #7
0
    def initAlgorithm(self, config=None):

        self.addParameter(
            QgsProcessingParameterRasterLayer(self.INPUT,
                                              self.tr('Input image'))
        )

        self.addParameter(
            QgsProcessingParameterVectorDestination (
                self.OUTPUT_FOOTPRINT,
                self.tr('Image footprint'),
                QgsProcessing.TypeVectorPolygon
            )
        )

        self.addParameter(
            QgsProcessingParameterFeatureSink (
                self.OUTPUT_NADIR,
                self.tr('Drone nadir point'),
                QgsProcessing.TypeVectorPoint
            )
        )

        self.addParameter(
            QgsProcessingParameterCrs(
                self.SOURCE_CRS,
                self.tr('Source CRS'),
                defaultValue='EPSG:4326'
            )
        )

        self.addParameter(
            QgsProcessingParameterCrs(
                self.DESTINATION_CRS,
                self.tr('Destination CRS'),
                optional = True,
                defaultValue='ProjectCrs'
            )
        )

        # horizontar referred to flight direction => means wide angle
        self.addParameter(
            QgsProcessingParameterNumber(
                self.HORIZONTAL_FOV,
                self.tr('Wide camera angle'),
                type = QgsProcessingParameterNumber.Double,
                defaultValue = 84.0,
                minValue = 0,
                maxValue = 360
            )
        )

        # vertical referred to flight direction => means tall angle
        parameter = QgsProcessingParameterBoolean(self.USE_IMAGE_RATIO_FOR_VERTICAL_FOV,
                                                  self.tr('Calc vertical FOV using image ratio'),
                                                  defaultValue = True)
        parameter.setFlags(parameter.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(parameter)

        parameter = QgsProcessingParameterNumber(self.VERTICAL_FOV,
                                                 self.tr('Tall camera angle'),
                                                 type = QgsProcessingParameterNumber.Double,
                                                 defaultValue = 54.0,
                                                 minValue = 0,
                                                 maxValue = 360)
        parameter.setFlags(parameter.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(parameter)

        parameter = QgsProcessingParameterNumber(self.VERTICAL_FOV_MULTIPLIER,
                                                 self.tr('Empiric multiplier to fix tall FOV basing on image ratio'),
                                                 type = QgsProcessingParameterNumber.Double,
                                                 defaultValue = 0.855)
        parameter.setFlags(parameter.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(parameter)

        parameter = QgsProcessingParameterNumber(self.NADIR_TO_BOTTOM_OFFSET,
                                                 self.tr('Offset to add to bottom distance result'),
                                                 type = QgsProcessingParameterNumber.Double)
        parameter.setFlags(parameter.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(parameter)

        parameter = QgsProcessingParameterNumber(self.NADIR_TO_UPPPER_OFFSET,
                                                 self.tr('Offset to add to upper distance result'),
                                                 type = QgsProcessingParameterNumber.Double)
        parameter.setFlags(parameter.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(parameter)
Beispiel #8
0
    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'), self.tr('Fastest')]

        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.INPUT, self.tr('Vector layer representing network'),
                [QgsProcessing.TypeVectorLine]))
        self.addParameter(
            QgsProcessingParameterPoint(self.START_POINT,
                                        self.tr('Start point')))
        self.addParameter(
            QgsProcessingParameterEnum(self.STRATEGY,
                                       self.tr('Path type to calculate'),
                                       self.STRATEGIES,
                                       defaultValue=0))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.TRAVEL_COST,
                self.tr(
                    'Travel cost (distance for "Shortest", time for "Fastest")'
                ), QgsProcessingParameterNumber.Double, 0.0, False, 0,
                99999999.99))

        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'),
                                        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(
            QgsProcessingParameterDistance(self.TOLERANCE,
                                           self.tr('Topology tolerance'), 0.0,
                                           self.INPUT, False, 0, 99999999.99))
        params.append(
            QgsProcessingParameterBoolean(
                self.INCLUDE_BOUNDS,
                self.tr('Include upper/lower bound points'),
                defaultValue=False))

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

        lines_output = QgsProcessingParameterFeatureSink(
            self.OUTPUT_LINES,
            self.tr('Service area (lines)'),
            QgsProcessing.TypeVectorLine,
            optional=True)
        lines_output.setCreateByDefault(True)
        self.addParameter(lines_output)

        nodes_output = QgsProcessingParameterFeatureSink(
            self.OUTPUT,
            self.tr('Service area (boundary nodes)'),
            QgsProcessing.TypeVectorPoint,
            optional=True)
        nodes_output.setCreateByDefault(False)
        self.addParameter(nodes_output)
Beispiel #9
0
 def initAlgorithm(self, config=None):
     self.addParameter(
         QgsProcessingParameterFeatureSource(self.INPUT,
                                             self.tr('Input layer')))
     self.addParameter(
         QgsProcessingParameterString(self.SHAPE_ENCODING,
                                      self.tr('Shape encoding'),
                                      "",
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterEnum(self.GTYPE,
                                    self.tr('Output geometry type'),
                                    options=self.GEOMTYPE,
                                    defaultValue=0))
     self.addParameter(
         QgsProcessingParameterCrs(self.A_SRS,
                                   self.tr('Assign an output CRS'),
                                   defaultValue='',
                                   optional=False))
     self.addParameter(
         QgsProcessingParameterCrs(
             self.T_SRS,
             self.tr('Reproject to this CRS on output '),
             defaultValue='',
             optional=True))
     self.addParameter(
         QgsProcessingParameterCrs(self.S_SRS,
                                   self.tr('Override source CRS'),
                                   defaultValue='',
                                   optional=True))
     self.addParameter(
         QgsProcessingParameterString(self.HOST,
                                      self.tr('Host'),
                                      defaultValue='localhost',
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterString(self.PORT,
                                      self.tr('Port'),
                                      defaultValue='5432',
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterString(self.USER,
                                      self.tr('Username'),
                                      defaultValue='',
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterString(self.DBNAME,
                                      self.tr('Database name'),
                                      defaultValue='',
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterString(self.PASSWORD,
                                      self.tr('Password'),
                                      defaultValue='',
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterString(self.SCHEMA,
                                      self.tr('Schema name'),
                                      defaultValue='public',
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterString(
             self.TABLE,
             self.tr('Table name, leave blank to use input name'),
             defaultValue='',
             optional=True))
     self.addParameter(
         QgsProcessingParameterString(self.PK,
                                      self.tr('Primary key (new field)'),
                                      defaultValue='id',
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterField(
             self.PRIMARY_KEY,
             self.
             tr('Primary key (existing field, used if the above option is left empty)'
                ),
             parentLayerParameterName=self.INPUT,
             optional=True))
     self.addParameter(
         QgsProcessingParameterString(self.GEOCOLUMN,
                                      self.tr('Geometry column name'),
                                      defaultValue='geom',
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterEnum(self.DIM,
                                    self.tr('Vector dimensions'),
                                    options=self.DIMLIST,
                                    defaultValue=0))
     self.addParameter(
         QgsProcessingParameterString(
             self.SIMPLIFY,
             self.tr('Distance tolerance for simplification'),
             defaultValue='',
             optional=True))
     self.addParameter(
         QgsProcessingParameterString(
             self.SEGMENTIZE,
             self.tr('Maximum distance between 2 nodes (densification)'),
             defaultValue='',
             optional=True))
     self.addParameter(
         QgsProcessingParameterExtent(
             self.SPAT,
             self.tr(
                 'Select features by extent (defined in input layer CRS)'),
             optional=True))
     self.addParameter(
         QgsProcessingParameterBoolean(
             self.CLIP,
             self.tr(
                 'Clip the input layer using the above (rectangle) extent'),
             defaultValue=False))
     self.addParameter(
         QgsProcessingParameterString(
             self.WHERE,
             self.
             tr('Select features using a SQL "WHERE" statement (Ex: column=\'value\')'
                ),
             defaultValue='',
             optional=True))
     self.addParameter(
         QgsProcessingParameterString(
             self.GT,
             self.tr('Group N features per transaction (Default: 20000)'),
             defaultValue='',
             optional=True))
     self.addParameter(
         QgsProcessingParameterBoolean(self.OVERWRITE,
                                       self.tr('Overwrite existing table'),
                                       defaultValue=True))
     self.addParameter(
         QgsProcessingParameterBoolean(self.APPEND,
                                       self.tr('Append to existing table'),
                                       defaultValue=False))
     self.addParameter(
         QgsProcessingParameterBoolean(
             self.ADDFIELDS,
             self.tr('Append and add new fields to existing table'),
             defaultValue=False))
     self.addParameter(
         QgsProcessingParameterBoolean(
             self.LAUNDER,
             self.tr('Do not launder columns/table names'),
             defaultValue=False))
     self.addParameter(
         QgsProcessingParameterBoolean(
             self.INDEX,
             self.tr('Do not create spatial index'),
             defaultValue=False))
     self.addParameter(
         QgsProcessingParameterBoolean(
             self.SKIPFAILURES,
             self.tr(
                 'Continue after a failure, skipping the failed feature'),
             defaultValue=False))
     self.addParameter(
         QgsProcessingParameterBoolean(self.PROMOTETOMULTI,
                                       self.tr('Promote to Multipart'),
                                       defaultValue=True))
     self.addParameter(
         QgsProcessingParameterBoolean(
             self.PRECISION,
             self.tr('Keep width and precision of input attributes'),
             defaultValue=True))
     self.addParameter(
         QgsProcessingParameterString(
             self.OPTIONS,
             self.tr('Additional creation options'),
             defaultValue='',
             optional=True))
Beispiel #10
0
    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 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)

        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')))
Beispiel #11
0
    def initAlgorithm(self, config=None):
        self.predicates = (('intersects', self.tr('intersects')),
                           ('contains', self.tr('contains')),
                           ('equals', self.tr('equals')), ('touches',
                                                           self.tr('touches')),
                           ('overlaps', self.tr('overlaps')),
                           ('within', self.tr('within')), ('crosses',
                                                           self.tr('crosses')))

        self.reversed_predicates = {
            'intersects': 'intersects',
            'contains': 'within',
            'isEqual': 'isEqual',
            'touches': 'touches',
            'overlaps': 'overlaps',
            'within': 'contains',
            'crosses': 'crosses'
        }

        self.methods = [
            self.
            tr('Create separate feature for each located feature (one-to-many)'
               ),
            self.
            tr('Take attributes of the first located feature only (one-to-one)'
               )
        ]

        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.INPUT, self.tr('Input layer'),
                [QgsProcessing.TypeVectorAnyGeometry]))
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.JOIN, self.tr('Join layer'),
                [QgsProcessing.TypeVectorAnyGeometry]))

        predicate = QgsProcessingParameterEnum(
            self.PREDICATE,
            self.tr('Geometric predicate'),
            options=[p[1] for p in self.predicates],
            allowMultiple=True,
            defaultValue=[0])
        predicate.setMetadata({
            'widget_wrapper': {
                'class': 'processing.gui.wrappers.EnumWidgetWrapper',
                'useCheckBoxes': True,
                'columns': 2
            }
        })
        self.addParameter(predicate)
        self.addParameter(
            QgsProcessingParameterField(
                self.JOIN_FIELDS,
                self.tr('Fields to add (leave empty to use all fields)'),
                parentLayerParameterName=self.JOIN,
                allowMultiple=True,
                optional=True))
        self.addParameter(
            QgsProcessingParameterEnum(self.METHOD, self.tr('Join type'),
                                       self.methods))
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.DISCARD_NONMATCHING,
                self.tr('Discard records which could not be joined'),
                defaultValue=False))
        self.addParameter(
            QgsProcessingParameterFeatureSink(self.OUTPUT,
                                              self.tr('Joined layer')))
    def initAlgorithm(self, config):
        """
        Here we define the inputs and output of the algorithm, along
        with some other properties.
        """
        self.addParameter(
            QgsProcessingParameterFile(self.QLSC,
                                       self.tr('Codification file'),
                                       extension='qlsc'))

        self.addParameter(
            QgsProcessingParameterFileDestination(self.OUTPUT,
                                                  self.tr('Output CSV'),
                                                  fileFilter='*.csv'))
        self.addParameter(
            QgsProcessingParameterBoolean('source',
                                          'source',
                                          defaultValue=True,
                                          optional=True))
        self.addParameter(
            QgsProcessingParameterBoolean('pathname',
                                          'pathname',
                                          defaultValue=True,
                                          optional=True))
        self.addParameter(
            QgsProcessingParameterBoolean('dirname',
                                          'dirname',
                                          defaultValue=True,
                                          optional=True))
        self.addParameter(
            QgsProcessingParameterBoolean('basename',
                                          'basename',
                                          defaultValue=True,
                                          optional=True))
        self.addParameter(
            QgsProcessingParameterBoolean('layername',
                                          'layername',
                                          defaultValue=True,
                                          optional=True))
        self.addParameter(
            QgsProcessingParameterBoolean('internaltype',
                                          'internaltype',
                                          defaultValue=True,
                                          optional=True))
        self.addParameter(
            QgsProcessingParameterBoolean('displaytype',
                                          'displaytype',
                                          defaultValue=True,
                                          optional=True))
        self.addParameter(
            QgsProcessingParameterBoolean('geometrytype',
                                          'geometrytype',
                                          defaultValue=True,
                                          optional=True))
        self.addParameter(
            QgsProcessingParameterBoolean('description',
                                          'description',
                                          defaultValue=True,
                                          optional=True))
        self.addParameter(
            QgsProcessingParameterBoolean('attributes',
                                          'attributes',
                                          defaultValue=True,
                                          optional=True))
Beispiel #13
0
    def initAlgorithm(self, config=None):
        self.profiles = ((self.tr('Mercator'), 'mercator'),
                         (self.tr('Geodetic'), 'geodetic'), (self.tr('Raster'),
                                                             'raster'))

        self.methods = ((self.tr('Average'),
                         'average'), (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('Antialias'), 'antialias'))

        self.viewers = ((self.tr('All'), 'all'), (self.tr('GoogleMaps'),
                                                  'google'),
                        (self.tr('OpenLayers'),
                         'openlayers'), (self.tr('Leaflet'),
                                         'leaflet'), (self.tr('None'), 'none'))

        self.addParameter(
            QgsProcessingParameterRasterLayer(self.INPUT,
                                              self.tr('Input layer')))
        self.addParameter(
            QgsProcessingParameterEnum(self.PROFILE,
                                       self.tr('Tile cutting profile'),
                                       options=[i[0] for i in self.profiles],
                                       allowMultiple=False,
                                       defaultValue=0))
        self.addParameter(
            QgsProcessingParameterString(self.ZOOM,
                                         self.tr('Zoom levels to render'),
                                         defaultValue='',
                                         optional=True))
        self.addParameter(
            QgsProcessingParameterEnum(self.VIEWER,
                                       self.tr('Web viewer to generate'),
                                       options=[i[0] for i in self.viewers],
                                       allowMultiple=False,
                                       defaultValue=0))
        self.addParameter(
            QgsProcessingParameterString(self.TITLE,
                                         self.tr('Title of the map'),
                                         optional=True))
        self.addParameter(
            QgsProcessingParameterString(self.COPYRIGHT,
                                         self.tr('Copyright of the map'),
                                         optional=True))

        params = []
        params.append(
            QgsProcessingParameterEnum(self.RESAMPLING,
                                       self.tr('Resampling method'),
                                       options=[i[0] for i in self.methods],
                                       allowMultiple=False,
                                       defaultValue=0))
        params.append(
            QgsProcessingParameterCrs(
                self.SOURCE_CRS,
                self.
                tr('The spatial reference system used for the source input data'
                   ),
                optional=True))
        params.append(
            QgsProcessingParameterNumber(
                self.NODATA,
                self.tr('Transparency value to assign to the input data'),
                type=QgsProcessingParameterNumber.Double,
                defaultValue=0,
                optional=True))
        params.append(
            QgsProcessingParameterString(
                self.URL,
                self.
                tr('URL address where the generated tiles are going to be published'
                   ),
                optional=True))
        params.append(
            QgsProcessingParameterString(
                self.GOOGLE_KEY,
                self.
                tr('Google Maps API key (http://code.google.com/apis/maps/signup.html)'
                   ),
                optional=True))
        params.append(
            QgsProcessingParameterString(
                self.BING_KEY,
                self.tr('Bing Maps API key (https://www.bingmapsportal.com/)'),
                optional=True))
        params.append(
            QgsProcessingParameterBoolean(
                self.RESUME,
                self.tr('Generate only missing files'),
                defaultValue=False))
        params.append(
            QgsProcessingParameterBoolean(
                self.KML,
                self.tr('Generate KML for Google Earth'),
                defaultValue=False))
        params.append(
            QgsProcessingParameterBoolean(
                self.NO_KML,
                self.tr(
                    'Avoid automatic generation of KML files for EPSG:4326'),
                defaultValue=False))
        for param in params:
            param.setFlags(param.flags()
                           | QgsProcessingParameterDefinition.FlagAdvanced)
            self.addParameter(param)

        self.addParameter(
            QgsProcessingParameterFolderDestination(
                self.OUTPUT, self.tr('Output directory')))
Beispiel #14
0
    def initAlgorithm(self, config=None):
        self.predicates = (('intersects', self.tr('intersects')),
                           ('contains', self.tr('contains')),
                           ('isEqual', self.tr('equals')),
                           ('touches',
                            self.tr('touches')), ('overlaps',
                                                  self.tr('overlaps')),
                           ('within', self.tr('within')), ('crosses',
                                                           self.tr('crosses')))

        self.reversed_predicates = {
            'intersects': 'intersects',
            'contains': 'within',
            'isEqual': 'isEqual',
            'touches': 'touches',
            'overlaps': 'overlaps',
            'within': 'contains',
            'crosses': 'crosses'
        }

        self.methods = [
            self.
            tr('Create separate feature for each located feature (one-to-many)'
               ),
            self.
            tr('Take attributes of the first located feature only (one-to-one)'
               )
        ]

        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.INPUT, self.tr('Input layer'),
                [QgsProcessing.TypeVectorAnyGeometry]))
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.JOIN, self.tr('Join layer'),
                [QgsProcessing.TypeVectorAnyGeometry]))

        predicate = QgsProcessingParameterEnum(
            self.PREDICATE,
            self.tr('Geometric predicate'),
            options=[p[1] for p in self.predicates],
            allowMultiple=True,
            defaultValue=[0])
        predicate.setMetadata(
            {'widget_wrapper': {
                'useCheckBoxes': True,
                'columns': 2
            }})
        self.addParameter(predicate)
        self.addParameter(
            QgsProcessingParameterField(
                self.JOIN_FIELDS,
                self.tr('Fields to add (leave empty to use all fields)'),
                parentLayerParameterName=self.JOIN,
                allowMultiple=True,
                optional=True))
        self.addParameter(
            QgsProcessingParameterEnum(self.METHOD, self.tr('Join type'),
                                       self.methods))
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.DISCARD_NONMATCHING,
                self.tr('Discard records which could not be joined'),
                defaultValue=False))
        self.addParameter(
            QgsProcessingParameterString(self.PREFIX,
                                         self.tr('Joined field prefix'),
                                         optional=True))
        self.addParameter(
            QgsProcessingParameterFeatureSink(
                self.OUTPUT,
                self.tr('Joined layer'),
                QgsProcessing.TypeVectorAnyGeometry,
                defaultValue=None,
                optional=True,
                createByDefault=True))

        non_matching = QgsProcessingParameterFeatureSink(
            self.NON_MATCHING,
            self.tr('Unjoinable features from first layer'),
            QgsProcessing.TypeVectorAnyGeometry,
            defaultValue=None,
            optional=True,
            createByDefault=False)
        # TODO GUI doesn't support advanced outputs yet
        # non_matching.setFlags(non_matching.flags() | QgsProcessingParameterDefinition.FlagAdvanced )
        self.addParameter(non_matching)

        self.addOutput(
            QgsProcessingOutputNumber(
                self.JOINED_COUNT,
                self.tr("Number of joined features from input table")))
 def initAlgorithm(self, config):
     self.addParameter(
         QgsProcessingParameterFeatureSource(
             self.PrmInputLayer, tr('Input point layer'),
             [QgsProcessing.TypeVectorPoint]))
     self.addParameter(
         QgsProcessingParameterEnum(self.PrmShapeType,
                                    tr('Shape type'),
                                    options=SHAPE_TYPE,
                                    defaultValue=0,
                                    optional=False))
     self.addParameter(
         QgsProcessingParameterField(
             self.PrmCuspsField,
             tr('Number of cusps field'),
             parentLayerParameterName=self.PrmInputLayer,
             type=QgsProcessingParameterField.Any,
             optional=True))
     self.addParameter(
         QgsProcessingParameterField(
             self.PrmStartingAngleField,
             tr('Starting angle field'),
             parentLayerParameterName=self.PrmInputLayer,
             type=QgsProcessingParameterField.Any,
             optional=True))
     self.addParameter(
         QgsProcessingParameterField(
             self.PrmRadiusField,
             tr('Radius field'),
             parentLayerParameterName=self.PrmInputLayer,
             type=QgsProcessingParameterField.Any,
             optional=True))
     self.addParameter(
         QgsProcessingParameterNumber(self.PrmCusps,
                                      tr('Number of cusps'),
                                      QgsProcessingParameterNumber.Integer,
                                      defaultValue=4,
                                      minValue=3,
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterNumber(self.PrmStartingAngle,
                                      tr('Starting angle'),
                                      QgsProcessingParameterNumber.Double,
                                      defaultValue=0,
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterNumber(self.PrmRadius,
                                      tr('Radius'),
                                      QgsProcessingParameterNumber.Double,
                                      defaultValue=40.0,
                                      minValue=0,
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterEnum(self.PrmUnitsOfMeasure,
                                    tr('Radius units of measure'),
                                    options=DISTANCE_LABELS,
                                    defaultValue=0,
                                    optional=False))
     self.addParameter(
         QgsProcessingParameterNumber(self.PrmDrawingSegments,
                                      tr('Number of drawing segments'),
                                      QgsProcessingParameterNumber.Integer,
                                      defaultValue=720,
                                      minValue=4,
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterBoolean(
             self.PrmExportInputGeometry,
             tr('Add input geometry fields to output table'),
             False,
             optional=True))
     self.addParameter(
         QgsProcessingParameterFeatureSink(self.PrmOutputLayer,
                                           tr('Output layer')))
    def initAlgorithm(self, config):
        # use parent class to get other parameters
        super(self.__class__, self).initAlgorithm(config)

        connection_name = QgsExpressionContextUtils.globalScope().variable('gobs_connection_name')
        get_data = QgsExpressionContextUtils.globalScope().variable('gobs_get_database_data')

        # List of series
        sql = '''
            SELECT s.id,
            concat(
                id_label,
                ' (', p.pr_label, ')',
                ' / Source: ', a_label,
                ' / Layer: ', sl_label
            ) AS label
            FROM gobs.series s
            INNER JOIN gobs.protocol p ON p.id = s.fk_id_protocol
            INNER JOIN gobs.actor a ON a.id = s.fk_id_actor
            INNER JOIN gobs.indicator i ON i.id = s.fk_id_indicator
            INNER JOIN gobs.spatial_layer sl ON sl.id = s.fk_id_spatial_layer
            ORDER BY label
        '''
        dbpluginclass = createDbPlugin('postgis')
        connections = [c.connectionName() for c in dbpluginclass.connections()]
        data = []
        if get_data == 'yes' and connection_name in connections:
            [header, data, rowCount, ok, error_message] = fetchDataFromSqlQuery(
                connection_name,
                sql
            )

        self.SERIES = ['%s' % a[1] for a in data]
        self.SERIES_DICT = {a[1]: a[0] for a in data}

        self.addParameter(
            QgsProcessingParameterEnum(
                self.SERIE,
                tr('Series of observations'),
                options=self.SERIES,
                optional=False
            )
        )

        # Id of series, to get the series directly
        # mainly used from other processing algs
        p = QgsProcessingParameterNumber(
            self.SERIE_ID,
            tr('Series ID. If given, it overrides previous choice'),
            optional=True,
            defaultValue=-1
        )
        p.setFlags(QgsProcessingParameterDefinition.FlagHidden)
        self.addParameter(p)

        # Add spatial object data ?
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.ADD_SPATIAL_OBJECT_DATA,
                tr('Add spatial object ID and label ?'),
                defaultValue=True,
                optional=False
            )
        )

        # Add spatial object geometry ?
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.ADD_SPATIAL_OBJECT_GEOM,
                tr('Add spatial object geometry ?'),
                defaultValue=False,
                optional=False
            )
        )

        # Aggregate with a temporal resolution, such as hour, day, etc. ?
        self.TEMPORAL_RESOLUTIONS = [
            'original',
            'second', 'minute', 'hour', 'day', 'week', 'month', 'year'
        ]
        self.addParameter(
            QgsProcessingParameterEnum(
                self.TEMPORAL_RESOLUTION,
                tr('Timestamp extraction resolution'),
                options=self.TEMPORAL_RESOLUTIONS,
                optional=False
            )
        )

        # Aggregate functions
        self.addParameter(
            QgsProcessingParameterEnum(
                self.AGGREGATE_FUNCTIONS,
                tr('Choose aggregate functions to use'),
                options=self.AGGREGATE_FUNCTIONS_LIST,
                optional=False,
                allowMultiple=True,
                defaultValue=[a for a in range(len(self.AGGREGATE_FUNCTIONS_LIST))]
            )
        )

        # Aggregate with a value
        # self.addParameter(
        #   QgsProcessingParameterBoolean(
        #       self.GROUP_BY_DISTINCT_VALUES,
        #       tr('Group by the distinct values'),
        #       defaultValue=False,
        #       optional=False
        #   )
        # )

        # Min timestamp
        self.addParameter(
            QgsProcessingParameterString(
                self.MIN_TIMESTAMP,
                tr('Minimum observation timestamp, Ex: 2019-01-01 or 2019-01-06 00:00:00'),
                defaultValue='',
                optional=True
            )
        )

        # Max timestamp
        self.addParameter(
            QgsProcessingParameterString(
                self.MAX_TIMESTAMP,
                tr('Maximum observation timestamp, Ex:2019-12-31 or 2019-12-31 23:59:53'),
                defaultValue='',
                optional=True
            )
        )
Beispiel #17
0
    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('Crop the extent of the target dataset to the extent of the cutline'
                   ),
                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 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)

        self.addParameter(
            QgsProcessingParameterRasterDestination(self.OUTPUT,
                                                    self.tr('Clipped (mask)')))
Beispiel #18
0
    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.INTERVAL,
                self.tr('Interval between contour lines'),
                type=QgsProcessingParameterNumber.Double,
                minValue=0.0,
                defaultValue=10.0))
        self.addParameter(
            QgsProcessingParameterString(
                self.FIELD_NAME,
                self.
                tr('Attribute name (if not set, no elevation attribute is attached)'
                   ),
                defaultValue='ELEV',
                optional=True))

        create_3d_param = QgsProcessingParameterBoolean(
            self.CREATE_3D, self.tr('Produce 3D vector'), defaultValue=False)
        create_3d_param.setFlags(
            create_3d_param.flags()
            | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(create_3d_param)

        ignore_nodata_param = QgsProcessingParameterBoolean(
            self.IGNORE_NODATA,
            self.tr('Treat all raster values as valid'),
            defaultValue=False)
        ignore_nodata_param.setFlags(
            ignore_nodata_param.flags()
            | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(ignore_nodata_param)

        nodata_param = QgsProcessingParameterNumber(
            self.NODATA,
            self.tr('Input pixel value to treat as "nodata"'),
            type=QgsProcessingParameterNumber.Double,
            defaultValue=None,
            optional=True)
        nodata_param.setFlags(nodata_param.flags()
                              | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(nodata_param)

        offset_param = QgsProcessingParameterNumber(
            self.OFFSET,
            self.tr(
                'Offset from zero relative to which to interpret intervals'),
            type=QgsProcessingParameterNumber.Double,
            defaultValue=0.0,
            optional=True)
        nodata_param.setFlags(offset_param.flags()
                              | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(offset_param)

        options_param = QgsProcessingParameterString(
            self.OPTIONS,
            self.tr('Additional creation options'),
            defaultValue='',
            optional=True)
        options_param.setFlags(options_param.flags()
                               | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(options_param)

        self.addParameter(
            QgsProcessingParameterVectorDestination(
                self.OUTPUT, self.tr('Contours'),
                QgsProcessing.TypeVectorLine))
Beispiel #19
0
    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')))
Beispiel #20
0
    def initAlgorithm(self, config=None):
        self.predicates = (('intersects', self.tr('intersects')),
                           ('contains', self.tr('contains')),
                           ('isEqual', self.tr('equals')),
                           ('touches',
                            self.tr('touches')), ('overlaps',
                                                  self.tr('overlaps')),
                           ('within', self.tr('within')), ('crosses',
                                                           self.tr('crosses')))

        self.statistics = [('count', self.tr('count')),
                           ('unique', self.tr('unique')),
                           ('min', self.tr('min')), ('max', self.tr('max')),
                           ('range', self.tr('range')),
                           ('sum', self.tr('sum')), ('mean', self.tr('mean')),
                           ('median', self.tr('median')),
                           ('stddev', self.tr('stddev')),
                           ('minority', self.tr('minority')),
                           ('majority', self.tr('majority')),
                           ('q1', self.tr('q1')), ('q3', self.tr('q3')),
                           ('iqr', self.tr('iqr')),
                           ('empty', self.tr('empty')),
                           ('filled', self.tr('filled')),
                           ('min_length', self.tr('min_length')),
                           ('max_length', self.tr('max_length')),
                           ('mean_length', self.tr('mean_length'))]

        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.INPUT, self.tr('Input layer'),
                [QgsProcessing.TypeVectorAnyGeometry]))
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.JOIN, self.tr('Join layer'),
                [QgsProcessing.TypeVectorAnyGeometry]))
        predicate = QgsProcessingParameterEnum(
            self.PREDICATE,
            self.tr('Geometric predicate'),
            options=[p[1] for p in self.predicates],
            allowMultiple=True,
            defaultValue=[0])
        predicate.setMetadata({
            'widget_wrapper': {
                'class': 'processing.gui.wrappers.EnumWidgetWrapper',
                'useCheckBoxes': True,
                'columns': 2
            }
        })
        self.addParameter(predicate)
        self.addParameter(
            QgsProcessingParameterField(
                self.JOIN_FIELDS,
                self.tr('Fields to summarise (leave empty to use all fields)'),
                parentLayerParameterName=self.JOIN,
                allowMultiple=True,
                optional=True))
        self.addParameter(
            QgsProcessingParameterEnum(
                self.SUMMARIES,
                self.tr(
                    'Summaries to calculate (leave empty to use all available)'
                ),
                options=[p[1] for p in self.statistics],
                allowMultiple=True,
                optional=True))
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.DISCARD_NONMATCHING,
                self.tr('Discard records which could not be joined'),
                defaultValue=False))
        self.addParameter(
            QgsProcessingParameterFeatureSink(self.OUTPUT,
                                              self.tr('Joined layer')))
Beispiel #21
0
    def initAlgorithm(self, config):
        """
        Here we define the inputs and output of the algorithm, along
        with some other properties.
        """

        self.addParameter(
            QgsProcessingParameterVectorLayer(self.INPUT,
                                              self.tr('Layer to filter')))

        self.addParameter(
            QgsProcessingParameterField(
                self.FIELD,
                self.tr("Field selection"),
                QVariant(),
                self.INPUT,
                type=QgsProcessingParameterField.Numeric))

        self.addParameter(
            QgsProcessingParameterEnum(
                self.INPUT_METHOD, self.tr('Filtering method'),
                ['Normal distribution', 'Coefficient of Variation', 'IDW']))

        self.addParameter(
            QgsProcessingParameterEnum(
                self.INPUT_CONFIANCE,
                self.tr(
                    'Confidence interval (for normal distribution method)'),
                ['68%', '95%', '99,5%']))

        self.addParameter(
            QgsProcessingParameterNumber(
                self.INPUT_SD, self.tr('Number of standard deviations (IDW)'),
                QgsProcessingParameterNumber.Integer, 2))

        self.addParameter(
            QgsProcessingParameterNumber(self.INPUT_VOISINS,
                                         self.tr('Number of neighbours'),
                                         QgsProcessingParameterNumber.Integer,
                                         5))

        self.addParameter(
            QgsProcessingParameterNumber(
                self.INPUT_CV_MAX,
                self.
                tr('Maximum Coefficient of variation (for coefficient of variation method)'
                   ), QgsProcessingParameterNumber.Double, 2))
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.BOOLEAN_DISTANCE,
                self.tr('Consider a distance-based neighbourhood')))

        self.addParameter(
            QgsProcessingParameterNumber(self.INPUT_DISTANCE,
                                         self.tr('Neighbourhood distance'),
                                         QgsProcessingParameterNumber.Double,
                                         5e-5))

        self.addParameter(
            QgsProcessingParameterBoolean(self.BOOLEAN,
                                          self.tr('Remove outliers')))

        self.addParameter(
            QgsProcessingParameterFeatureSink(self.OUTPUT,
                                              self.tr('Filtered layer')))
Beispiel #22
0
    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(
            QgsProcessingParameterCrs(self.SOURCE_CRS,
                                      self.tr('Source CRS'),
                                      optional=True))
        self.addParameter(
            QgsProcessingParameterCrs(self.TARGET_CRS,
                                      self.tr('Target CRS'),
                                      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.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 input raster'),
                defaultValue=False))
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.SET_RESOLUTION,
                self.tr('Set output file resolution'),
                defaultValue=False))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.X_RESOLUTION,
                self.tr('X Resolution to output bands'),
                type=QgsProcessingParameterNumber.Double,
                defaultValue=None,
                optional=True))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.Y_RESOLUTION,
                self.tr('Y Resolution to output bands'),
                type=QgsProcessingParameterNumber.Double,
                defaultValue=None,
                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)
        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)')))
Beispiel #23
0
    def initAlgorithm(self, config=None):
        self.addParameter(
            QgsProcessingParameterFeatureSource(self.INPUT,
                                                self.tr('Layer to import')))

        db_param = QgsProcessingParameterString(
            self.DATABASE, self.tr('Database (connection name)'))
        db_param.setMetadata({
            'widget_wrapper': {
                'class':
                'processing.gui.wrappers_postgis.ConnectionWidgetWrapper'
            }
        })
        self.addParameter(db_param)

        schema_param = QgsProcessingParameterString(
            self.SCHEMA, self.tr('Schema (schema name)'), 'public', False,
            True)
        schema_param.setMetadata({
            'widget_wrapper': {
                'class': 'processing.gui.wrappers_postgis.SchemaWidgetWrapper',
                'connection_param': self.DATABASE
            }
        })
        self.addParameter(schema_param)

        table_param = QgsProcessingParameterString(
            self.TABLENAME,
            self.tr('Table to import to (leave blank to use layer name)'), '',
            False, True)
        table_param.setMetadata({
            'widget_wrapper': {
                'class': 'processing.gui.wrappers_postgis.TableWidgetWrapper',
                'schema_param': self.SCHEMA
            }
        })
        self.addParameter(table_param)

        self.addParameter(
            QgsProcessingParameterField(self.PRIMARY_KEY,
                                        self.tr('Primary key field'), None,
                                        self.INPUT,
                                        QgsProcessingParameterField.Any, False,
                                        True))
        self.addParameter(
            QgsProcessingParameterString(self.GEOMETRY_COLUMN,
                                         self.tr('Geometry column'), 'geom'))
        self.addParameter(
            QgsProcessingParameterString(self.ENCODING, self.tr('Encoding'),
                                         'UTF-8', False, True))
        self.addParameter(
            QgsProcessingParameterBoolean(self.OVERWRITE, self.tr('Overwrite'),
                                          True))
        self.addParameter(
            QgsProcessingParameterBoolean(self.CREATEINDEX,
                                          self.tr('Create spatial index'),
                                          True))
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.LOWERCASE_NAMES,
                self.tr('Convert field names to lowercase'), True))
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.DROP_STRING_LENGTH,
                self.tr('Drop length constraints on character fields'), False))
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.FORCE_SINGLEPART,
                self.tr('Create single-part geometries instead of multi-part'),
                False))
Beispiel #24
0
    def initAlgorithm(self, config=None):
        self.addParameter(
            QgsProcessingParameterFeatureSource(self.INPUT,
                                                self.tr('Input layer')))
        self.addParameter(
            QgsProcessingParameterField(self.FIELD,
                                        self.tr('Dissolve field'),
                                        None,
                                        self.INPUT,
                                        QgsProcessingParameterField.Any,
                                        optional=True))
        self.addParameter(
            QgsProcessingParameterString(self.GEOMETRY,
                                         self.tr('Geometry column name'),
                                         defaultValue='geometry'))
        params = []
        params.append(
            QgsProcessingParameterBoolean(
                self.EXPLODE_COLLECTIONS,
                self.
                tr('Produce one feature for each geometry in any kind of geometry collection in the source file'
                   ),
                defaultValue=False))
        params.append(
            QgsProcessingParameterBoolean(self.KEEP_ATTRIBUTES,
                                          self.tr('Keep input attributes'),
                                          defaultValue=False))
        params.append(
            QgsProcessingParameterBoolean(self.COUNT_FEATURES,
                                          self.tr('Count dissolved features'),
                                          defaultValue=False))
        params.append(
            QgsProcessingParameterBoolean(
                self.COMPUTE_AREA,
                self.tr('Compute area and perimeter of dissolved features'),
                defaultValue=False))
        params.append(
            QgsProcessingParameterBoolean(
                self.COMPUTE_STATISTICS,
                self.tr('Compute min/max/sum/mean for attribute'),
                defaultValue=False))
        params.append(
            QgsProcessingParameterField(
                self.STATISTICS_ATTRIBUTE,
                self.tr('Numeric attribute to calculate statistics on'),
                None,
                self.INPUT,
                QgsProcessingParameterField.Numeric,
                optional=True))
        params.append(
            QgsProcessingParameterString(
                self.OPTIONS,
                self.tr('Additional creation options'),
                defaultValue='',
                optional=True))
        for param in params:
            param.setFlags(param.flags()
                           | QgsProcessingParameterDefinition.FlagAdvanced)
            self.addParameter(param)

        self.addParameter(
            QgsProcessingParameterVectorDestination(self.OUTPUT,
                                                    self.tr('Dissolved')))
    def initAlgorithm(self, config=None):

        db_param = QgsProcessingParameterString(
            self.DATABASE,
            self.tr('Database (connection name)'))
        db_param.setMetadata({
            'widget_wrapper': {
                'class': 'processing.gui.wrappers_postgis.ConnectionWidgetWrapper'}})
        self.addParameter(db_param)
        self.addParameter(QgsProcessingParameterFeatureSource(self.INPUT,
                                                              self.tr('Input layer'),
                                                              types=[QgsProcessing.TypeVector]))
        self.addParameter(QgsProcessingParameterString(self.SHAPE_ENCODING,
                                                       self.tr('Shape encoding'), "", optional=True))
        self.addParameter(QgsProcessingParameterEnum(self.GTYPE,
                                                     self.tr('Output geometry type'), options=self.GEOMTYPE,
                                                     defaultValue=0))
        self.addParameter(QgsProcessingParameterCrs(self.A_SRS,
                                                    self.tr('Assign an output CRS'), defaultValue='', optional=False))
        self.addParameter(QgsProcessingParameterCrs(self.T_SRS,
                                                    self.tr('Reproject to this CRS on output '), defaultValue='',
                                                    optional=True))
        self.addParameter(QgsProcessingParameterCrs(self.S_SRS,
                                                    self.tr('Override source CRS'), defaultValue='', optional=True))

        schema_param = QgsProcessingParameterString(
            self.SCHEMA,
            self.tr('Schema (schema name)'), 'public', False, True)
        schema_param.setMetadata({
            'widget_wrapper': {
                'class': 'processing.gui.wrappers_postgis.SchemaWidgetWrapper',
                'connection_param': self.DATABASE}})
        self.addParameter(schema_param)

        table_param = QgsProcessingParameterString(
            self.TABLE,
            self.tr('Table to import to (leave blank to use layer name)'), '', False, True)
        table_param.setMetadata({
            'widget_wrapper': {
                'class': 'processing.gui.wrappers_postgis.TableWidgetWrapper',
                'schema_param': self.SCHEMA}})
        self.addParameter(table_param)

        self.addParameter(QgsProcessingParameterString(self.PK,
                                                       self.tr('Primary key (new field)'), defaultValue='id',
                                                       optional=True))
        self.addParameter(QgsProcessingParameterField(self.PRIMARY_KEY,
                                                      self.tr(
                                                          'Primary key (existing field, used if the above option is left empty)'),
                                                      parentLayerParameterName=self.INPUT, optional=True))
        self.addParameter(QgsProcessingParameterString(self.GEOCOLUMN,
                                                       self.tr('Geometry column name'), defaultValue='geom',
                                                       optional=True))
        self.addParameter(QgsProcessingParameterEnum(self.DIM,
                                                     self.tr('Vector dimensions'), options=self.DIMLIST,
                                                     defaultValue=0))
        self.addParameter(QgsProcessingParameterString(self.SIMPLIFY,
                                                       self.tr('Distance tolerance for simplification'),
                                                       defaultValue='', optional=True))
        self.addParameter(QgsProcessingParameterString(self.SEGMENTIZE,
                                                       self.tr('Maximum distance between 2 nodes (densification)'),
                                                       defaultValue='', optional=True))
        self.addParameter(QgsProcessingParameterExtent(self.SPAT,
                                                       self.tr(
                                                           'Select features by extent (defined in input layer CRS)'),
                                                       optional=True))
        self.addParameter(QgsProcessingParameterBoolean(self.CLIP,
                                                        self.tr(
                                                            'Clip the input layer using the above (rectangle) extent'),
                                                        defaultValue=False))
        self.addParameter(QgsProcessingParameterString(self.WHERE,
                                                       self.tr(
                                                           'Select features using a SQL "WHERE" statement (Ex: column=\'value\')'),
                                                       defaultValue='', optional=True))
        self.addParameter(QgsProcessingParameterString(self.GT,
                                                       self.tr('Group N features per transaction (Default: 20000)'),
                                                       defaultValue='', optional=True))
        self.addParameter(QgsProcessingParameterBoolean(self.OVERWRITE,
                                                        self.tr('Overwrite existing table'), defaultValue=True))
        self.addParameter(QgsProcessingParameterBoolean(self.APPEND,
                                                        self.tr('Append to existing table'), defaultValue=False))
        self.addParameter(QgsProcessingParameterBoolean(self.ADDFIELDS,
                                                        self.tr('Append and add new fields to existing table'),
                                                        defaultValue=False))
        self.addParameter(QgsProcessingParameterBoolean(self.LAUNDER,
                                                        self.tr('Do not launder columns/table names'),
                                                        defaultValue=False))
        self.addParameter(QgsProcessingParameterBoolean(self.INDEX,
                                                        self.tr('Do not create spatial index'), defaultValue=False))
        self.addParameter(QgsProcessingParameterBoolean(self.SKIPFAILURES,
                                                        self.tr(
                                                            'Continue after a failure, skipping the failed feature'),
                                                        defaultValue=False))
        self.addParameter(QgsProcessingParameterBoolean(self.PROMOTETOMULTI,
                                                        self.tr('Promote to Multipart'),
                                                        defaultValue=True))
        self.addParameter(QgsProcessingParameterBoolean(self.PRECISION,
                                                        self.tr('Keep width and precision of input attributes'),
                                                        defaultValue=True))
        self.addParameter(QgsProcessingParameterString(self.OPTIONS,
                                                       self.tr('Additional creation options'), defaultValue='',
                                                       optional=True))
Beispiel #26
0
    def initAlgorithm(self, config):
        """
        Here we define the inputs and output of the algorithm, along
        with some other properties.
        """
        # LizSync config file from ini
        ls = lizsyncConfig()

        # INPUTS

        # Central database connection name
        connection_name_central = ls.variable('postgresql:central/name')
        label = tr('PostgreSQL connection to the central database')
        if Qgis.QGIS_VERSION_INT >= 31400:
            param = QgsProcessingParameterProviderConnection(
                self.CONNECTION_NAME_CENTRAL,
                label,
                "postgres",
                defaultValue=connection_name_central,
                optional=False,
            )
        else:
            param = QgsProcessingParameterString(
                self.CONNECTION_NAME_CENTRAL,
                label,
                defaultValue=connection_name_central,
                optional=False)
            param.setMetadata({
                'widget_wrapper': {
                    'class':
                    'processing.gui.wrappers_postgis.ConnectionWidgetWrapper'
                }
            })
        tooltip = tr('The PostgreSQL connection to the central database.')
        if Qgis.QGIS_VERSION_INT >= 31600:
            param.setHelp(tooltip)
        else:
            param.tooltip_3liz = tooltip
        self.addParameter(param)

        # Clone database connection parameters
        connection_name_clone = ls.variable('postgresql:clone/name')
        label = tr('PostgreSQL connection to the clone database')
        if Qgis.QGIS_VERSION_INT >= 31400:
            param = QgsProcessingParameterProviderConnection(
                self.CONNECTION_NAME_CLONE,
                label,
                "postgres",
                defaultValue=connection_name_clone,
                optional=False,
            )
        else:
            param = QgsProcessingParameterString(
                self.CONNECTION_NAME_CLONE,
                label,
                defaultValue=connection_name_clone,
                optional=False)
            param.setMetadata({
                'widget_wrapper': {
                    'class':
                    'processing.gui.wrappers_postgis.ConnectionWidgetWrapper'
                }
            })
        tooltip = tr('The PostgreSQL connection to the clone database.')
        if Qgis.QGIS_VERSION_INT >= 31600:
            param.setHelp(tooltip)
        else:
            param.tooltip_3liz = tooltip
        self.addParameter(param)

        # PostgreSQL binary path (with psql, pg_dump, pg_restore)
        postgresql_binary_path = ls.variable('binaries/postgresql')
        param = QgsProcessingParameterFile(
            self.POSTGRESQL_BINARY_PATH,
            tr('PostgreSQL binary path'),
            defaultValue=postgresql_binary_path,
            behavior=QgsProcessingParameterFile.Folder,
            optional=False)
        param.setFlags(param.flags()
                       | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(param)

        # Recreate clone server id
        param = QgsProcessingParameterBoolean(
            self.RECREATE_CLONE_SERVER_ID,
            tr('Recreate clone server id. Do it only to fully reset the clone ID !'
               ),
            defaultValue=False,
            optional=False)
        param.setFlags(param.flags()
                       | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(param)

        # For Windows, WinSCP binary path
        winscp_binary_path = ls.variable('binaries/winscp')
        if not winscp_binary_path.strip():
            winscp_binary_path = plugin_path('install', 'WinSCP')
        param = QgsProcessingParameterFile(
            self.WINSCP_BINARY_PATH,
            tr('WinSCP binary path'),
            defaultValue=winscp_binary_path,
            behavior=QgsProcessingParameterFile.Folder,
            optional=True)
        param.setFlags(param.flags()
                       | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(param)

        # Clone FTP connection parameters
        # method
        self.CLONE_FTP_PROTOCOLS = ['SFTP', 'FTP']
        param = QgsProcessingParameterEnum(
            self.CLONE_FTP_PROTOCOL,
            tr('Clone (S)FTP protocol'),
            options=self.CLONE_FTP_PROTOCOLS,
            defaultValue=0,
            optional=False,
        )
        self.addParameter(param)

        # host
        clone_ftp_host = ls.variable('ftp:clone/host')
        param = QgsProcessingParameterString(self.CLONE_FTP_HOST,
                                             tr('Clone FTP Server host'),
                                             defaultValue=clone_ftp_host,
                                             optional=False)
        self.addParameter(param)

        # port
        clone_ftp_port = ls.variable('ftp:clone/port')
        if not clone_ftp_port:
            clone_ftp_port = '8022'
        param = QgsProcessingParameterNumber(self.CLONE_FTP_PORT,
                                             tr('Clone FTP Server port'),
                                             defaultValue=clone_ftp_port,
                                             optional=False)
        self.addParameter(param)

        # login
        clone_ftp_login = ls.variable('ftp:clone/user')
        param = QgsProcessingParameterString(self.CLONE_FTP_LOGIN,
                                             tr('Clone FTP Server login'),
                                             defaultValue=clone_ftp_login,
                                             optional=False)
        self.addParameter(param)

        # password
        param = QgsProcessingParameterString(self.CLONE_FTP_PASSWORD,
                                             tr('Clone FTP Server password'),
                                             optional=True)
        self.addParameter(param)

        # remote directory
        clone_ftp_remote_dir = ls.variable('ftp:clone/remote_directory')
        if not clone_ftp_remote_dir:
            clone_ftp_remote_dir = 'storage/downloads/qgis/'
        param = QgsProcessingParameterString(
            self.CLONE_FTP_REMOTE_DIR,
            tr('Clone FTP Server remote directory'),
            defaultValue=clone_ftp_remote_dir,
            optional=False)
        self.addParameter(param)

        # Exclude some directories from sync
        excluded_directories = ls.variable('local/excluded_directories')
        if not excluded_directories:
            excluded_directories = 'data'
        param = QgsProcessingParameterString(
            self.FTP_EXCLUDE_REMOTE_SUBDIRS,
            tr('List of sub-directory to exclude from synchro, separated by commas.'
               ),
            defaultValue=excluded_directories,
            optional=True)
        param.setFlags(param.flags()
                       | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(param)

        # OUTPUTS
        # Add output for message
        self.addOutput(
            QgsProcessingOutputNumber(self.OUTPUT_STATUS, tr('Output status')))
        self.addOutput(
            QgsProcessingOutputString(self.OUTPUT_STRING,
                                      tr('Output message')))
Beispiel #27
0
    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)
        target_extent_crs_param.setFlags(target_extent_crs_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(target_extent_crs_param)

        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')))
Beispiel #28
0
    def defineCharacteristicsFromFile(self):
        """
        Create algorithm parameters and outputs from a text file.
        """
        with open(self.descriptionFile) as lines:
            # First line of the file is the Grass algorithm name
            line = lines.readline().strip('\n').strip()
            self.grass7Name = line
            # Second line if the algorithm name in Processing
            line = lines.readline().strip('\n').strip()
            self._short_description = line
            if " - " not in line:
                self._name = self.grass7Name
            else:
                self._name = line[:line.find(' ')].lower()
            self._display_name = self._name
            # Read the grass group
            line = lines.readline().strip('\n').strip()
            self._group = QCoreApplication.translate("GrassAlgorithm", line)
            self._groupId = self.groupIdRegex.search(line).group(0).lower()
            hasRasterOutput = False
            hasRasterInput = False
            hasVectorInput = False
            vectorOutputs = False
            # Then you have parameters/output definition
            line = lines.readline().strip('\n').strip()
            while line != '':
                try:
                    line = line.strip('\n').strip()
                    if line.startswith('Hardcoded'):
                        self.hardcodedStrings.append(line[len('Hardcoded|'):])
                    parameter = getParameterFromString(line)
                    if parameter is not None:
                        self.params.append(parameter)
                        if isinstance(parameter,
                                      (QgsProcessingParameterVectorLayer,
                                       QgsProcessingParameterFeatureSource)):
                            hasVectorInput = True
                        elif isinstance(parameter,
                                        QgsProcessingParameterRasterLayer):
                            hasRasterInput = True
                        elif isinstance(parameter,
                                        QgsProcessingParameterMultipleLayers):
                            if parameter.layerType(
                            ) < 3 or parameter.layerType() == 5:
                                hasVectorInput = True
                            elif parameter.layerType() == 3:
                                hasRasterInput = True
                        elif isinstance(
                                parameter,
                                QgsProcessingParameterVectorDestination):
                            vectorOutputs = True
                        elif isinstance(
                                parameter,
                                QgsProcessingParameterRasterDestination):
                            hasRasterOutput = True
                    line = lines.readline().strip('\n').strip()
                except Exception as e:
                    QgsMessageLog.logMessage(
                        self.tr(
                            'Could not open GRASS GIS 7 algorithm: {0}\n{1}').
                        format(self.descriptionFile, line),
                        self.tr('Processing'), Qgis.Critical)
                    raise e

        param = QgsProcessingParameterExtent(
            self.GRASS_REGION_EXTENT_PARAMETER,
            self.tr('GRASS GIS 7 region extent'),
            optional=True)
        param.setFlags(param.flags()
                       | QgsProcessingParameterDefinition.FlagAdvanced)
        self.params.append(param)

        if hasRasterOutput or hasRasterInput:
            # Add a cellsize parameter
            param = QgsProcessingParameterNumber(
                self.GRASS_REGION_CELLSIZE_PARAMETER,
                self.tr('GRASS GIS 7 region cellsize (leave 0 for default)'),
                type=QgsProcessingParameterNumber.Double,
                minValue=0.0,
                maxValue=sys.float_info.max + 1,
                defaultValue=0.0)
            param.setFlags(param.flags()
                           | QgsProcessingParameterDefinition.FlagAdvanced)
            self.params.append(param)

        if hasRasterOutput:
            # Add a createopt parameter for format export
            param = QgsProcessingParameterString(
                self.GRASS_RASTER_FORMAT_OPT,
                self.tr('Output Rasters format options (createopt)'),
                multiLine=True,
                optional=True)
            param.setFlags(param.flags()
                           | QgsProcessingParameterDefinition.FlagAdvanced)
            self.params.append(param)

            # Add a metadata parameter for format export
            param = QgsProcessingParameterString(
                self.GRASS_RASTER_FORMAT_META,
                self.tr('Output Rasters format metadata options (metaopt)'),
                multiLine=True,
                optional=True)
            param.setFlags(param.flags()
                           | QgsProcessingParameterDefinition.FlagAdvanced)
            self.params.append(param)

        if hasVectorInput:
            param = QgsProcessingParameterNumber(
                self.GRASS_SNAP_TOLERANCE_PARAMETER,
                self.tr('v.in.ogr snap tolerance (-1 = no snap)'),
                type=QgsProcessingParameterNumber.Double,
                minValue=-1.0,
                maxValue=sys.float_info.max + 1,
                defaultValue=-1.0)
            param.setFlags(param.flags()
                           | QgsProcessingParameterDefinition.FlagAdvanced)
            self.params.append(param)
            param = QgsProcessingParameterNumber(
                self.GRASS_MIN_AREA_PARAMETER,
                self.tr('v.in.ogr min area'),
                type=QgsProcessingParameterNumber.Double,
                minValue=0.0,
                maxValue=sys.float_info.max + 1,
                defaultValue=0.0001)
            param.setFlags(param.flags()
                           | QgsProcessingParameterDefinition.FlagAdvanced)
            self.params.append(param)

        if vectorOutputs:
            # Add an optional output type
            param = QgsProcessingParameterEnum(
                self.GRASS_OUTPUT_TYPE_PARAMETER,
                self.tr('v.out.ogr output type'), self.OUTPUT_TYPES)
            param.setFlags(param.flags()
                           | QgsProcessingParameterDefinition.FlagAdvanced)
            self.params.append(param)

            # Add a DSCO parameter for format export
            param = QgsProcessingParameterString(
                self.GRASS_VECTOR_DSCO,
                self.tr('v.out.ogr output data source options (dsco)'),
                multiLine=True,
                optional=True)
            param.setFlags(param.flags()
                           | QgsProcessingParameterDefinition.FlagAdvanced)
            self.params.append(param)

            # Add a LCO parameter for format export
            param = QgsProcessingParameterString(
                self.GRASS_VECTOR_LCO,
                self.tr('v.out.ogr output layer options (lco)'),
                multiLine=True,
                optional=True)
            param.setFlags(param.flags()
                           | QgsProcessingParameterDefinition.FlagAdvanced)
            self.params.append(param)

            # Add a -c flag for export
            param = QgsProcessingParameterBoolean(
                self.GRASS_VECTOR_EXPORT_NOCAT,
                self.
                tr('Also export features without category (not labeled). Otherwise only features with category are exported'
                   ), False)
            param.setFlags(param.flags()
                           | QgsProcessingParameterDefinition.FlagAdvanced)
            self.params.append(param)
Beispiel #29
0
    def initAlgorithm(self, config=None):
        """Here we define the inputs and output of the algorithm, along
        with some other properties.
        """

        # 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(QgsProcessingParameterFeatureSource(self.INPUT, self.tr('Input gpx file'),
        #                                                       [QgsProcessing.TypeVectorLine]))
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.INPUT, self.tr('Input point layer'),
                [QgsProcessing.TypeVectorPoint], None, False))
        self.addParameter(
            QgsProcessingParameterField(
                self.TIMESTAMP_FIELD,
                self.tr('Timestamp field'),
                parentLayerParameterName=self.INPUT,
                # type=QgsProcessingParameterField.Any))
                type=QgsProcessingParameterField.DateTime))
        # self.addParameter(QgsProcessingParameterString(self.TIMESTAMP_FIELD,
        #                                                self.tr('Timestamp field'),
        #                                                None, False, False))
        # self.addParameter(QgsProcessingParameterString(self.TIMESTAMP_FORMAT,
        #                                                self.tr('Timestamp format (applies only if \'Timestamp field\''
        #                                                        ' is of type string)'),
        #                                                '%Y-%m-%dT%H:%M:%S', False, True))
        self.addParameter(
            QgsProcessingParameterEnum(
                self.ATTRIBUTE_MODE,
                self.tr('Add attributes from which segment track point(s)'),
                options=self.attribute_mode_options_labels,
                allowMultiple=False,
                defaultValue=2,
                optional=False))
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.CALCULATE_MOTION_ATTRIBUTES,
                self.tr('Calculate distance, speed and duration between ' +
                        'track points'),
                defaultValue=True,
                optional=True))
        # self.addParameter(QgsProcessingParameterBoolean(self.USE_EPSG_4326,
        #                                                 self.tr('Use \'EPSG:4326\' coordinate reference system'),
        #                                                 True, True))

        # We add a vector layer as output
        self.addParameter(
            QgsProcessingParameterFeatureSink(self.OUTPUT,
                                              self.tr('Track segments'),
                                              QgsProcessing.TypeVectorLine))

        self.addOutput(
            QgsProcessingOutputNumber(self.OUTPUT_SEGMENT_COUNT,
                                      self.tr('Number of segments')))
        self.addOutput(
            QgsProcessingOutputNumber(
                self.OUTPUT_EQUAL_COORDINATE_COUNT,
                self.tr(
                    'Number of segments which are not created because of equal'
                    'coordinates')))
 def initAlgorithm(self, config):
     self.addParameter(
         QgsProcessingParameterFeatureSource(
             self.PrmInputLayer, tr('Input point layer'),
             [QgsProcessing.TypeVectorPoint]))
     self.addParameter(
         QgsProcessingParameterEnum(self.PrmShapeType,
                                    tr('Shape type'),
                                    options=SHAPE_TYPE,
                                    defaultValue=0,
                                    optional=False))
     self.addParameter(
         QgsProcessingParameterEnum(
             self.PrmAzimuthMode,
             tr('Azimuth mode'),
             options=[
                 tr('Use beginning and ending azimuths'),
                 tr('Use center azimuth and width')
             ],
             defaultValue=1,
             optional=False))
     self.addParameter(
         QgsProcessingParameterField(
             self.PrmAzimuth1Field,
             tr('Starting azimuth field / Center azimuth field'),
             parentLayerParameterName=self.PrmInputLayer,
             type=QgsProcessingParameterField.Any,
             optional=True))
     self.addParameter(
         QgsProcessingParameterField(
             self.PrmAzimuth2Field,
             tr('Ending azimuth field / Azimuth width field'),
             parentLayerParameterName=self.PrmInputLayer,
             type=QgsProcessingParameterField.Any,
             optional=True))
     self.addParameter(
         QgsProcessingParameterField(
             self.PrmOuterRadiusField,
             tr('Outer radius field'),
             parentLayerParameterName=self.PrmInputLayer,
             type=QgsProcessingParameterField.Any,
             optional=True))
     self.addParameter(
         QgsProcessingParameterField(
             self.PrmInnerRadiusField,
             tr('Inner radius field'),
             parentLayerParameterName=self.PrmInputLayer,
             type=QgsProcessingParameterField.Any,
             optional=True))
     self.addParameter(
         QgsProcessingParameterEnum(self.PrmUnitsOfMeasure,
                                    tr('Radius units'),
                                    options=DISTANCE_LABELS,
                                    defaultValue=0,
                                    optional=False))
     self.addParameter(
         QgsProcessingParameterNumber(
             self.PrmDefaultAzimuth1,
             tr('Default starting azimuth / Default center azimuth'),
             QgsProcessingParameterNumber.Double,
             defaultValue=0,
             optional=True))
     self.addParameter(
         QgsProcessingParameterNumber(
             self.PrmDefaultAzimuth2,
             tr('Default ending azimuth / Default azimuth width'),
             QgsProcessingParameterNumber.Double,
             defaultValue=30.0,
             optional=True))
     self.addParameter(
         QgsProcessingParameterNumber(self.PrmOuterRadius,
                                      tr('Default outer radius'),
                                      QgsProcessingParameterNumber.Double,
                                      defaultValue=40.0,
                                      minValue=0,
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterNumber(self.PrmInnerRadius,
                                      tr('Default inner radius'),
                                      QgsProcessingParameterNumber.Double,
                                      defaultValue=20.0,
                                      minValue=0,
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterNumber(self.PrmDrawingSegments,
                                      tr('Number of drawing segments'),
                                      QgsProcessingParameterNumber.Integer,
                                      defaultValue=36,
                                      minValue=4,
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterBoolean(
             self.PrmExportInputGeometry,
             tr('Add input geometry fields to output table'),
             False,
             optional=True))
     self.addParameter(
         QgsProcessingParameterFeatureSink(self.PrmOutputLayer,
                                           tr('Output layer')))
Beispiel #31
0
    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(
            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 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(
            QgsProcessingParameterRasterDestination(self.OUTPUT,
                                                    self.tr('Hillshade')))
Beispiel #32
0
    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.addParameter(
            QgsProcessingParameterMultipleLayers(self.INPUT,
                                                 self.tr('Input files'),
                                                 QgsProcessing.TypeRaster))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.TILE_SIZE_X,
                self.tr('Tile width'),
                type=QgsProcessingParameterNumber.Integer,
                minValue=0,
                defaultValue=256))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.TILE_SIZE_Y,
                self.tr('Tile height'),
                type=QgsProcessingParameterNumber.Integer,
                minValue=0,
                defaultValue=256))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.OVERLAP,
                self.tr('Overlap in pixels between consecutive tiles'),
                type=QgsProcessingParameterNumber.Integer,
                minValue=0,
                defaultValue=0))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.LEVELS,
                self.tr('Number of pyramids levels to build'),
                type=QgsProcessingParameterNumber.Integer,
                minValue=0,
                defaultValue=1))

        params = []
        params.append(
            QgsProcessingParameterCrs(
                self.SOURCE_CRS,
                self.tr('Source coordinate reference system'),
                optional=True))
        params.append(
            QgsProcessingParameterEnum(self.RESAMPLING,
                                       self.tr('Resampling method'),
                                       options=[i[0] for i in self.methods],
                                       allowMultiple=False,
                                       defaultValue=0))
        params.append(
            QgsProcessingParameterString(
                self.DELIMITER,
                self.tr('Column delimiter used in the CSV file'),
                defaultValue=';',
                optional=True))

        options_param = QgsProcessingParameterString(
            self.OPTIONS,
            self.tr('Additional creation options'),
            defaultValue='',
            optional=True)
        options_param.setMetadata({
            'widget_wrapper': {
                'class':
                'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper'
            }
        })
        params.append(options_param)

        params.append(
            QgsProcessingParameterEnum(self.DATA_TYPE,
                                       self.tr('Output data type'),
                                       self.TYPES,
                                       allowMultiple=False,
                                       defaultValue=5))

        params.append(
            QgsProcessingParameterBoolean(self.ONLY_PYRAMIDS,
                                          self.tr('Build only the pyramids'),
                                          defaultValue=False))
        params.append(
            QgsProcessingParameterBoolean(
                self.DIR_FOR_ROW,
                self.tr('Use separate directory for each tiles row'),
                defaultValue=False))

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

        self.addParameter(
            QgsProcessingParameterFolderDestination(
                self.OUTPUT, self.tr('Output directory')))

        output_csv_param = QgsProcessingParameterFileDestination(
            self.OUTPUT_CSV,
            self.tr(
                'CSV file containing the tile(s) georeferencing information'),
            'CSV files (*.csv)',
            optional=True)
        output_csv_param.setCreateByDefault(False)
        self.addParameter(output_csv_param)
Beispiel #33
0
    def initAlgorithm(self, config=None):
        class ParameterVrtDestination(QgsProcessingParameterRasterDestination):
            def __init__(self, name, description):
                super().__init__(name, description)

            def clone(self):
                copy = ParameterVrtDestination(self.name(), self.description())
                return copy

            def type(self):
                return 'vrt_destination'

            def defaultFileExtension(self):
                return 'vrt'

        self.addParameter(
            QgsProcessingParameterMultipleLayers(
                self.INPUT,
                QCoreApplication.translate("ParameterVrtDestination",
                                           'Input layers'),
                QgsProcessing.TypeRaster))
        self.addParameter(
            QgsProcessingParameterEnum(self.RESOLUTION,
                                       QCoreApplication.translate(
                                           "ParameterVrtDestination",
                                           'Resolution'),
                                       options=self.RESOLUTION_OPTIONS,
                                       defaultValue=0))
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.SEPARATE,
                QCoreApplication.translate(
                    "ParameterVrtDestination",
                    'Place each input file into a separate band'),
                defaultValue=True))
        self.addParameter(
            QgsProcessingParameterBoolean(self.PROJ_DIFFERENCE,
                                          QCoreApplication.translate(
                                              "ParameterVrtDestination",
                                              'Allow projection difference'),
                                          defaultValue=False))

        add_alpha_param = QgsProcessingParameterBoolean(
            self.ADD_ALPHA,
            QCoreApplication.translate(
                "ParameterVrtDestination",
                'Add alpha mask band to VRT when source raster has none'),
            defaultValue=False)
        add_alpha_param.setFlags(
            add_alpha_param.flags()
            | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(add_alpha_param)

        assign_crs = QgsProcessingParameterCrs(
            self.ASSIGN_CRS,
            QCoreApplication.translate(
                "ParameterVrtDestination",
                'Override projection for the output file'),
            defaultValue=None,
            optional=True)
        assign_crs.setFlags(assign_crs.flags()
                            | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(assign_crs)

        resampling = QgsProcessingParameterEnum(
            self.RESAMPLING,
            QCoreApplication.translate("ParameterVrtDestination",
                                       'Resampling algorithm'),
            options=self.RESAMPLING_OPTIONS,
            defaultValue=0)
        resampling.setFlags(resampling.flags()
                            | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(resampling)

        self.addParameter(
            ParameterVrtDestination(
                self.OUTPUT,
                QCoreApplication.translate("ParameterVrtDestination",
                                           'Virtual')))
Beispiel #34
0
    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')))
        self.addParameter(
            QgsProcessingParameterBand(self.BAND,
                                       self.tr('Band number'),
                                       1,
                                       parentLayerParameterName=self.INPUT))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.DISTANCE,
                self.
                tr('Maximum distance (in pixels) to search out for values to interpolate'
                   ),
                type=QgsProcessingParameterNumber.Integer,
                minValue=0,
                defaultValue=10))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.ITERATIONS,
                self.
                tr('Number of smoothing iterations to run after the interpolation'
                   ),
                type=QgsProcessingParameterNumber.Integer,
                minValue=0,
                defaultValue=0))
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.NO_MASK,
                self.tr(
                    'Do not use the default validity mask for the input band'),
                defaultValue=False))
        self.addParameter(
            QgsProcessingParameterRasterLayer(self.MASK_LAYER,
                                              self.tr('Validity mask'),
                                              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)

        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('Filled')))