Beispiel #1
0
    def initAlgorithm(self, config=None):
        self.addParameter(QgsProcessingParameterMapLayer(self.INPUT, self.tr('Input layer')))

        round_to_parameter = QgsProcessingParameterDistance(self.ROUND_TO,
                                                            self.tr('Round values to'),
                                                            parentParameterName=self.INPUT,
                                                            minValue=0,
                                                            defaultValue=0)
        round_to_parameter.setFlags(round_to_parameter.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(round_to_parameter)

        self.addParameter(QgsProcessingParameterFeatureSink(self.OUTPUT, self.tr('Extent'), type=QgsProcessing.TypeVectorPolygon))
Beispiel #2
0
    def accept(self):
        description = self.nameTextBox.text()
        if description.strip() == '':
            QMessageBox.warning(self, self.tr('Unable to define parameter'),
                                self.tr('Invalid parameter name'))
            return
        if self.param is None:
            validChars = \
                'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
            safeName = ''.join(c for c in description if c in validChars)
            name = safeName.lower()
            i = 2
            while self.alg.parameterDefinition(name):
                name = safeName.lower() + str(i)
                i += 1
        else:
            name = self.param.name()
        if (self.paramType == parameters.PARAMETER_BOOLEAN
                or isinstance(self.param, QgsProcessingParameterBoolean)):
            self.param = QgsProcessingParameterBoolean(name, description,
                                                       self.state.isChecked())
        elif (self.paramType == parameters.PARAMETER_TABLE_FIELD
              or isinstance(self.param, QgsProcessingParameterField)):
            if self.parentCombo.currentIndex() < 0:
                QMessageBox.warning(
                    self, self.tr('Unable to define parameter'),
                    self.tr('Wrong or missing parameter values'))
                return
            parent = self.parentCombo.currentData()
            datatype = self.datatypeCombo.currentData()
            default = self.defaultTextBox.text()
            if not default:
                default = None
            self.param = QgsProcessingParameterField(
                name,
                description,
                defaultValue=default,
                parentLayerParameterName=parent,
                type=datatype,
                allowMultiple=self.multipleCheck.isChecked())
        elif (self.paramType == parameters.PARAMETER_BAND
              or isinstance(self.param, QgsProcessingParameterBand)):
            if self.parentCombo.currentIndex() < 0:
                QMessageBox.warning(
                    self, self.tr('Unable to define parameter'),
                    self.tr('Wrong or missing parameter values'))
                return
            parent = self.parentCombo.currentData()
            self.param = QgsProcessingParameterBand(name, description, None,
                                                    parent)
        elif (self.paramType == parameters.PARAMETER_LAYOUTITEM
              or isinstance(self.param, QgsProcessingParameterLayoutItem)):
            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 = QgsProcessingParameterLayoutItem(
                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_DISTANCE
              or isinstance(self.param, QgsProcessingParameterDistance)):
            self.param = QgsProcessingParameterDistance(
                name, description, self.defaultTextBox.text())
            try:
                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

            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()
            if parent:
                self.param.setParentParameterName(parent)
        elif (self.paramType == parameters.PARAMETER_SCALE
              or isinstance(self.param, QgsProcessingParameterScale)):
            self.param = QgsProcessingParameterScale(
                name, description, self.defaultTextBox.text())
        elif (self.paramType == parameters.PARAMETER_NUMBER
              or isinstance(self.param, QgsProcessingParameterNumber)):

            type = self.type_combo.currentData()
            self.param = QgsProcessingParameterNumber(
                name, description, type, self.defaultTextBox.text())
            try:
                vmin = self.minTextBox.text().strip()
                if not vmin == '':
                    self.param.setMinimum(float(vmin))
                vmax = self.maxTextBox.text().strip()
                if not vmax == '':
                    self.param.setMaximum(float(vmax))
            except:
                QMessageBox.warning(
                    self, self.tr('Unable to define parameter'),
                    self.tr('Wrong or missing parameter values'))
                return
        elif (self.paramType == parameters.PARAMETER_EXPRESSION
              or isinstance(self.param, QgsProcessingParameterExpression)):
            parent = self.parentCombo.currentData()
            self.param = QgsProcessingParameterExpression(
                name, description, str(self.defaultEdit.expression()), parent)
        elif (self.paramType == parameters.PARAMETER_STRING
              or isinstance(self.param, QgsProcessingParameterString)):
            self.param = QgsProcessingParameterString(
                name, description, str(self.defaultTextBox.text()))
        elif (self.paramType == parameters.PARAMETER_EXTENT
              or isinstance(self.param, QgsProcessingParameterExtent)):
            self.param = QgsProcessingParameterExtent(name, description)
        elif (self.paramType == parameters.PARAMETER_FILE
              or isinstance(self.param, QgsProcessingParameterFile)):
            isFolder = self.fileFolderCombo.currentIndex() == 1
            self.param = QgsProcessingParameterFile(
                name, description, QgsProcessingParameterFile.Folder
                if isFolder else QgsProcessingParameterFile.File)
        elif (self.paramType == parameters.PARAMETER_POINT
              or isinstance(self.param, QgsProcessingParameterPoint)):
            self.param = QgsProcessingParameterPoint(
                name, description, str(self.defaultTextBox.text()))
        elif (self.paramType == parameters.PARAMETER_CRS
              or isinstance(self.param, QgsProcessingParameterCrs)):
            self.param = QgsProcessingParameterCrs(
                name, description,
                self.selector.crs().authid())
        elif (self.paramType == parameters.PARAMETER_ENUM
              or isinstance(self.param, QgsProcessingParameterEnum)):
            self.param = QgsProcessingParameterEnum(
                name, description, self.widget.options(),
                self.widget.allowMultiple(), self.widget.defaultOptions())
        elif (self.paramType == parameters.PARAMETER_MATRIX
              or isinstance(self.param, QgsProcessingParameterMatrix)):
            self.param = QgsProcessingParameterMatrix(
                name,
                description,
                hasFixedNumberRows=self.widget.fixedRows(),
                headers=self.widget.headers(),
                defaultValue=self.widget.value())

        # Destination parameter
        elif (isinstance(self.param, QgsProcessingParameterFeatureSink)):
            self.param = QgsProcessingParameterFeatureSink(
                name=name,
                description=self.param.description(),
                type=self.param.dataType(),
                defaultValue=self.defaultWidget.getValue())
        elif (isinstance(self.param, QgsProcessingParameterFileDestination)):
            self.param = QgsProcessingParameterFileDestination(
                name=name,
                description=self.param.description(),
                fileFilter=self.param.fileFilter(),
                defaultValue=self.defaultWidget.getValue())
        elif (isinstance(self.param, QgsProcessingParameterFolderDestination)):
            self.param = QgsProcessingParameterFolderDestination(
                name=name,
                description=self.param.description(),
                defaultValue=self.defaultWidget.getValue())
        elif (isinstance(self.param, QgsProcessingParameterRasterDestination)):
            self.param = QgsProcessingParameterRasterDestination(
                name=name,
                description=self.param.description(),
                defaultValue=self.defaultWidget.getValue())
        elif (isinstance(self.param, QgsProcessingParameterVectorDestination)):
            self.param = QgsProcessingParameterVectorDestination(
                name=name,
                description=self.param.description(),
                type=self.param.dataType(),
                defaultValue=self.defaultWidget.getValue())

        else:
            if self.paramType:
                typeId = self.paramType
            else:
                typeId = self.param.type()

            paramTypeDef = QgsApplication.instance().processingRegistry(
            ).parameterType(typeId)
            if not paramTypeDef:
                msg = self.tr(
                    'The parameter `{}` is not registered, are you missing a required plugin?'
                    .format(typeId))
                raise UndefinedParameterException(msg)
            self.param = paramTypeDef.create(name)
            self.param.setDescription(description)
            self.param.setMetadata(paramTypeDef.metadata())

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

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

        QDialog.accept(self)
Beispiel #3
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))

        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))
        params.append(QgsProcessingParameterDistance(self.TOLERANCE,
                                                     self.tr('Topology tolerance'),
                                                     0.0, self.INPUT, False, 0))
        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 #4
0
 def initParameters(self, config=None):
     self.addParameter(QgsProcessingParameterDistance(self.START_DISTANCE,
                                                      self.tr('Start distance'), defaultValue=0.0, parentParameterName='INPUT'))
     self.addParameter(QgsProcessingParameterDistance(self.END_DISTANCE,
                                                      self.tr('End distance'), defaultValue=0.0, parentParameterName='INPUT'))
 def initParameters(self, config=None):
     self.addParameter(QgsProcessingParameterDistance(self.INTERVAL,
                                                      self.tr('Interval between vertices to add'),
                                                      1, 'INPUT', False, 0, 10000000))
Beispiel #6
0
    def initAlgorithm(self, config=None):
        self.KERNELS = OrderedDict([
            (self.tr('Quartic'), QgsKernelDensityEstimation.KernelQuartic),
            (self.tr('Triangular'),
             QgsKernelDensityEstimation.KernelTriangular),
            (self.tr('Uniform'), QgsKernelDensityEstimation.KernelUniform),
            (self.tr('Triweight'), QgsKernelDensityEstimation.KernelTriweight),
            (self.tr('Epanechnikov'),
             QgsKernelDensityEstimation.KernelEpanechnikov)
        ])

        self.OUTPUT_VALUES = OrderedDict([
            (self.tr('Raw'), QgsKernelDensityEstimation.OutputRaw),
            (self.tr('Scaled'), QgsKernelDensityEstimation.OutputScaled)
        ])

        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.INPUT, self.tr('Point layer'),
                [QgsProcessing.TypeVectorPoint]))

        self.addParameter(
            QgsProcessingParameterDistance(self.RADIUS, self.tr('Radius'),
                                           100.0, self.INPUT, False, 0.0))

        radius_field_param = QgsProcessingParameterField(
            self.RADIUS_FIELD,
            self.tr('Radius from field'),
            None,
            self.INPUT,
            QgsProcessingParameterField.Numeric,
            optional=True)
        radius_field_param.setFlags(
            radius_field_param.flags()
            | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(radius_field_param)

        class ParameterHeatmapPixelSize(QgsProcessingParameterNumber):
            def __init__(self,
                         name='',
                         description='',
                         parent_layer=None,
                         radius_param=None,
                         radius_field_param=None,
                         minValue=None,
                         default=None,
                         optional=False):
                QgsProcessingParameterNumber.__init__(
                    self, name, description,
                    QgsProcessingParameterNumber.Double, default, optional,
                    minValue)
                self.parent_layer = parent_layer
                self.radius_param = radius_param
                self.radius_field_param = radius_field_param

            def clone(self):
                copy = ParameterHeatmapPixelSize(
                    self.name(), self.description(), self.parent_layer,
                    self.radius_param, self.radius_field_param, self.minimum(),
                    self.maximum(),
                    self.defaultValue(
                        (),
                        self.flags()
                        & QgsProcessingParameterDefinition.FlagOptional))
                return copy

        pixel_size_param = ParameterHeatmapPixelSize(
            self.PIXEL_SIZE,
            self.tr('Output raster size'),
            parent_layer=self.INPUT,
            radius_param=self.RADIUS,
            radius_field_param=self.RADIUS_FIELD,
            minValue=0.0,
            default=0.1)
        pixel_size_param.setMetadata({
            'widget_wrapper': {
                'class':
                'processing.algs.qgis.ui.HeatmapWidgets.HeatmapPixelSizeWidgetWrapper'
            }
        })
        self.addParameter(pixel_size_param)

        weight_field_param = QgsProcessingParameterField(
            self.WEIGHT_FIELD,
            self.tr('Weight from field'),
            None,
            self.INPUT,
            QgsProcessingParameterField.Numeric,
            optional=True)
        weight_field_param.setFlags(
            weight_field_param.flags()
            | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(weight_field_param)

        keys = list(self.KERNELS.keys())
        kernel_shape_param = QgsProcessingParameterEnum(
            self.KERNEL,
            self.tr('Kernel shape'),
            keys,
            allowMultiple=False,
            defaultValue=0)
        kernel_shape_param.setFlags(
            kernel_shape_param.flags()
            | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(kernel_shape_param)

        decay_ratio = QgsProcessingParameterNumber(
            self.DECAY, self.tr('Decay ratio (Triangular kernels only)'),
            QgsProcessingParameterNumber.Double, 0.0, True, -100.0, 100.0)
        decay_ratio.setFlags(decay_ratio.flags()
                             | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(decay_ratio)

        keys = list(self.OUTPUT_VALUES.keys())
        output_scaling = QgsProcessingParameterEnum(
            self.OUTPUT_VALUE,
            self.tr('Output value scaling'),
            keys,
            allowMultiple=False,
            defaultValue=0)
        output_scaling.setFlags(
            output_scaling.flags()
            | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(output_scaling)

        self.addParameter(
            QgsProcessingParameterRasterDestination(self.OUTPUT,
                                                    self.tr('Heatmap')))
Beispiel #7
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(QgsProcessingParameterFeatureSource(self.START_POINTS,
                                                              self.tr('Vector layer with start points'),
                                                              [QgsProcessing.TypeVectorPoint]))
        self.addParameter(QgsProcessingParameterPoint(self.END_POINT,
                                                      self.tr('End point')))
        self.addParameter(QgsProcessingParameterEnum(self.STRATEGY,
                                                     self.tr('Path type to calculate'),
                                                     self.STRATEGIES,
                                                     defaultValue=0))

        params = []
        params.append(QgsProcessingParameterField(self.DIRECTION_FIELD,
                                                  self.tr('Direction field'),
                                                  None,
                                                  self.INPUT,
                                                  optional=True))
        params.append(QgsProcessingParameterString(self.VALUE_FORWARD,
                                                   self.tr('Value for forward direction'),
                                                   optional=True))
        params.append(QgsProcessingParameterString(self.VALUE_BACKWARD,
                                                   self.tr('Value for backward direction'),
                                                   optional=True))
        params.append(QgsProcessingParameterString(self.VALUE_BOTH,
                                                   self.tr('Value for both directions'),
                                                   optional=True))
        params.append(QgsProcessingParameterEnum(self.DEFAULT_DIRECTION,
                                                 self.tr('Default direction'),
                                                 list(self.DIRECTIONS.keys()),
                                                 defaultValue=2))
        params.append(QgsProcessingParameterField(self.SPEED_FIELD,
                                                  self.tr('Speed field'),
                                                  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))

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

        self.addParameter(QgsProcessingParameterFeatureSink(self.OUTPUT,
                                                            self.tr('Shortest path'),
                                                            QgsProcessing.TypeVectorLine))
Beispiel #8
0
    def initAlgorithm(self, config=None):
        self.addParameter(QgsProcessingParameterFeatureSource(self.INPUT, self.tr('Input layer'), [QgsProcessing.TypeVectorPoint]))
        self.addParameter(QgsProcessingParameterDistance(self.BUFFER, self.tr('Buffer region'), parentParameterName=self.INPUT,
                                                         minValue=0.0, maxValue=9999999999, defaultValue=0.0))

        self.addParameter(QgsProcessingParameterFeatureSink(self.OUTPUT, self.tr('Voronoi polygons'), type=QgsProcessing.TypeVectorPolygon))
Beispiel #9
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(
            QgsProcessingParameterPoint(self.OBSERVER,
                                        self.tr('Observer location')))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.OBSERVER_HEIGHT,
                self.tr('Observer height, DEM units'),
                type=QgsProcessingParameterNumber.Double,
                minValue=0.0,
                defaultValue=1.0))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.TARGET_HEIGHT,
                self.tr('Target height, DEM units'),
                type=QgsProcessingParameterNumber.Double,
                minValue=0.0,
                defaultValue=1.0))
        self.addParameter(
            QgsProcessingParameterDistance(
                self.MAX_DISTANCE,
                self.tr(
                    'Maximum distance from observer to compute visibility'),
                parentParameterName=self.INPUT,
                minValue=0.0,
                defaultValue=100.0))

        options_param = QgsProcessingParameterString(
            self.OPTIONS,
            self.tr('Additional creation options'),
            defaultValue='',
            optional=True)
        options_param.setFlags(options_param.flags()
                               | QgsProcessingParameterDefinition.FlagAdvanced)
        options_param.setMetadata({
            'widget_wrapper': {
                'class':
                'processing.algs.gdal.ui.RasterOptionsWidget.RasterOptionsWidgetWrapper'
            }
        })
        self.addParameter(options_param)

        extra_param = QgsProcessingParameterString(
            self.EXTRA,
            self.tr('Additional command-line parameters'),
            defaultValue=None,
            optional=True)
        extra_param.setFlags(extra_param.flags()
                             | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(extra_param)

        self.addParameter(
            QgsProcessingParameterRasterDestination(self.OUTPUT,
                                                    self.tr('Output')))
    def initAlgorithm(self, config=None):
        """
        Initialisation de l'algorithme: définition des
        paramètres en entrée et en sortie
        """

        # Données source
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.POI1,
                self.tr("Couche d'interet 1 (par exemple les gares SNCF) "),
                [QgsProcessing.TypeVectorAnyGeometry]))
        # Distance du tampon
        self.addParameter(
            QgsProcessingParameterDistance(
                'BUFFERDIST1',
                self.tr('Distance du tampon'),
                defaultValue=1000.0,
                # Make distance units match the INPUT layer units:
                parentParameterName='POI1'))

        # Données source
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.POI2,
                self.tr(
                    "Couche d'interet 2 ( par exemple les stations de metro)"),
                [QgsProcessing.TypeVectorAnyGeometry]))
        # Distance du tampon
        self.addParameter(
            QgsProcessingParameterDistance(
                'BUFFERDIST2',
                self.tr('Distance du tampon'),
                defaultValue=300.0,
                # Make distance units match the INPUT layer units:
                parentParameterName='POI2'))
        # Données source
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.POI3,
                self.tr("Couche d'interet 3 (par exemple les espaces verts)"),
                [QgsProcessing.TypeVectorAnyGeometry]))
        # Distance du tampon
        self.addParameter(
            QgsProcessingParameterDistance(
                'BUFFERDIST3',
                self.tr('Distance du tampon'),
                defaultValue=200.0,
                # Make distance units match the INPUT layer units:
                parentParameterName='POI3'))
        # Données source
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.POI4,
                self.tr("Couche d'interet 4 (par exemples les piscines)"),
                [QgsProcessing.TypeVectorAnyGeometry]))

        # Distance du tampon
        self.addParameter(
            QgsProcessingParameterDistance(
                'BUFFERDIST4',
                self.tr('Distance du tampon'),
                defaultValue=500.0,
                # Make distance units match the INPUT layer units:
                parentParameterName='POI4'))
        # Récupération de la destination.
        self.addParameter(
            QgsProcessingParameterVectorDestination(self.OUTPUT,
                                                    self.tr('Sortie')))
Beispiel #11
0
    def initAlgorithm(self, config: Dict[str, Any]) -> None:
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                name=self.CANALS,
                description='Input A (LINES)',
                types=[QgsProcessing.TypeVectorLine],
                defaultValue=None
            )
        )

        self.addParameter(
            QgsProcessingParameterFeatureSource(
                name=self.DELIVERYPOINTS,
                description='Input B (POINTS)',
                types=[QgsProcessing.TypeVectorPoint],
                defaultValue=None
            )
        )

        self.addParameter(
            QgsProcessingParameterField(
                name=self.CANALSFIELD,
                description='LINE NAME attribute (INPUT A)',
                type=QgsProcessingParameterField.Any,
                parentLayerParameterName=self.CANALS,
                allowMultiple=False,
                defaultValue=options.get(self.CANALSFIELD, None)
            )
        )

        self.parameterDefinition(self.CANALSFIELD).setMetadata({
            'widget_wrapper': CustomFieldWrapper
        })

        self.addParameter(
            QgsProcessingParameterField(
                name=self.POINTSFIELD,
                description='LINE NAME attribute (INPUT B)',
                type=QgsProcessingParameterField.Any,
                parentLayerParameterName=self.DELIVERYPOINTS,
                allowMultiple=False,
                defaultValue=options.get(self.POINTSFIELD, None)
            )
        )

        self.parameterDefinition(self.POINTSFIELD).setMetadata({
            'widget_wrapper': CustomFieldWrapper
        })

        self.addParameter(
            QgsProcessingParameterField(
                name=self.TYPEFIELD,
                description='TYPE attribute for points',
                type=QgsProcessingParameterField.String,
                parentLayerParameterName=self.DELIVERYPOINTS,
                allowMultiple=False,
                defaultValue=options.get(self.TYPEFIELD, None)
            )
        )

        self.parameterDefinition(self.TYPEFIELD).setMetadata({
            'widget_wrapper': CustomFieldWrapper
        })

        self.addParameter(
            QgsProcessingParameterString(
                name=self.TYPEVALUE,
                description='type VALUE for intersection points',
                multiLine=False,
                defaultValue=options.get(self.TYPEVALUE, None)
            )
        )

        self.addParameter(
            QgsProcessingParameterDistance(
                name=self.TOLERANCECANALS,
                description='snapping threshold for lines',
                parentParameterName=self.CANALS,
                defaultValue=options.get(self.TOLERANCECANALS, None)
            )
        )

        self.addParameter(
            QgsProcessingParameterDistance(
                name=self.TOLERANCEPOINTS,
                description='snapping threshold for points',
                parentParameterName=self.CANALS,
                defaultValue=options.get(self.TOLERANCEPOINTS, None),
                # defaultValue=None
            )
        )

        self.addParameter(
            QgsProcessingParameterFeatureSink(
                name=self.POINTSWITHUUID,
                description='Source points with uuid4 added (OUTPUT A)',
                type=QgsProcessing.TypeVectorAnyGeometry,
                createByDefault=True,
                defaultValue=None
            )
        )

        self.addParameter(
            QgsProcessingParameterFeatureSink(
                name=self.SNAPPEDPOINTS,
                description='Processed points (OUTPUT B)',
                type=QgsProcessing.TypeVectorAnyGeometry,
                createByDefault=True,
                supportsAppend=True,
                defaultValue=None
            )
        )

        self.addParameter(
            QgsProcessingParameterFeatureSink(
                name=self.SNAPPEDCANALS,
                description='Processed lines (OUTPUT C)',
                type=QgsProcessing.TypeVectorAnyGeometry,
                createByDefault=True,
                defaultValue=None
            )
        )
    def initAlgorithm(self, config):
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.POINTS_INPUT, self.tr("Points Input"),
                [QgsProcessing.TypeVectorPoint]))

        # have to use QgsProcessingParameterFile to account for rasters too large to load in qgis
        self.addParameter(
            QgsProcessingParameterFile(self.RASTER_INPUT,
                                       self.tr("Raster File Input")))

        param = QgsProcessingParameterDistance(
            self.GRAB_RADIUS_INPUT,
            self.tr("Grab Radius"),
            parentParameterName=self.POINTS_INPUT,
            optional=True)
        param.setFlags(param.flags()
                       | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(param)

        param = QgsProcessingParameterNumber(
            self.GRAB_AREA_DISTANCE_WEIGHT_INPUT,
            self.tr("Grab Area Distance Weight"),
            type=QgsProcessingParameterNumber.Double,
            optional=True)
        param.setFlags(param.flags()
                       | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(param)

        param = QgsProcessingParameterFile(self.GRAB_FUNCTION_INPUT,
                                           self.tr("Grab Function"),
                                           optional=True)
        param.setFlags(param.flags()
                       | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(param)

        self.addParameter(
            QgsProcessingParameterFeatureSink(
                self.POINTS_WITH_VALUES_OUTPUT,
                self.tr("Points with Grabbed Values")))
Beispiel #13
0
    def initAlgorithm(self, config=None):

        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.LINES,
                self.tr('Lines'),
                types=[QgsProcessing.TypeVectorLine],
                defaultValue=None))
        self.addParameter(
            QgsProcessingParameterDistance(self.SEGMENT_SIZE,
                                           self.tr('Size of the segments'),
                                           parentParameterName=self.LINES,
                                           defaultValue=200))

        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.POINTS,
                self.tr('Point Layer'),
                types=[QgsProcessing.TypeVectorPoint],
                defaultValue=None))

        self.addParameter(
            QgsProcessingParameterDistance(
                self.DIST,
                self.tr('Maximum distance to the line'),
                parentParameterName=self.POINTS,
                defaultValue=100))

        lroad_fied = QgsProcessingParameterField(
            self.LINES_ROAD_NAMES,
            self.tr('Names of roads in line layer'),
            type=QgsProcessingParameterField.String,
            parentLayerParameterName=self.LINES,
            allowMultiple=False,
            defaultValue=None,
            optional=True)
        lroad_fied.setFlags(lroad_fied.flags()
                            | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(lroad_fied)

        proad_field = QgsProcessingParameterField(
            self.POINTS_ROAD_NAMES,
            self.tr('Names of roads in point layer'),
            type=QgsProcessingParameterField.String,
            parentLayerParameterName=self.POINTS,
            allowMultiple=False,
            defaultValue=None,
            optional=True)
        proad_field.setFlags(proad_field.flags()
                             | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(proad_field)

        count_field = QgsProcessingParameterString(self.FIELD,
                                                   self.tr('Count field name'),
                                                   defaultValue='NUMPOINTS')
        count_field.setFlags(count_field.flags()
                             | QgsProcessingParameterDefinition.FlagAdvanced)
        self.addParameter(count_field)

        self.addParameter(
            QgsProcessingParameterFeatureSink(self.OUTPUT_LINE,
                                              self.tr('Graduated Line Map'),
                                              QgsProcessing.TypeVectorLine))
        self.addParameter(
            QgsProcessingParameterFeatureSink(
                self.OUTPUT_POINT, self.tr('Points linked to Line Map'),
                QgsProcessing.TypeVectorPoint))
Beispiel #14
0
 def initAlgorithm(self, config=None):
     self.addParameter(
         QgsProcessingParameterFeatureSource(
             self.INPUT,
             self.tr('Input layer'),
             types=[QgsProcessing.TypeVectorAnyGeometry]
         )
     )
     self.addParameter(
         QgsProcessingParameterFeatureSource(
             self.INTERPOLATE,
             self.tr('Interpolation layer'),
             types=[QgsProcessing.TypeVectorAnyGeometry]
         )
     )
     self.addParameter(
         QgsProcessingParameterField(
             self.INTERPOLATE_FIELD,
             self.tr('Interpolating field'),
             parentLayerParameterName=self.INTERPOLATE,
             type=QgsProcessingParameterField.Numeric
         )
     )
     power = QgsProcessingParameterNumber(
         self.POWER,
         self.tr('Power parameter for interpolation'),
         type=QgsProcessingParameterNumber.Double,
         defaultValue=2,
         optional=True
     )
     power.setMetadata({
         'widget_wrapper': {
             'decimals': 2
         }
     })
     self.addParameter(power)
     self.addParameter(
         QgsProcessingParameterNumber(
             self.NUMBER_NEIGHBOR,
             self.tr('Number of neighbors'),
             type=QgsProcessingParameterNumber.Integer,
             defaultValue=12,
             optional=True
         )
     )
     search_radius = QgsProcessingParameterDistance(
         self.SEARCH_RADIUS,
         self.tr('Search radius'),
         defaultValue=None,
         parentParameterName=self.INTERPOLATE,
         optional=True
     )
     search_radius.setMetadata({
         'widget_wrapper': {
             'decimals': 2
         }
     })
     self.addParameter(search_radius)
     self.addParameter(
         QgsProcessingParameterEnum(
             self.DATA_TYPE,
             self.tr('Output data type'),
             options=[dtype[1] for dtype in self.data_type],
             defaultValue=1,
             optional=True
         )
     )
     self.addParameter(
         QgsProcessingParameterString(
             name=self.OUTPUT_FIELD,
             description=self.tr('Output field name'),
         )
     )
     self.addParameter(
         QgsProcessingParameterVectorDestination(
             self.OUTPUT,
             self.tr('Output layer')
         )
     )