Example #1
0
 def initAlgorithm(self, config=None):
     self.addParameter(QgsProcessingParameterFeatureSource(self.INPUT, self.tr('Input layer'),
                                                           types=[QgsProcessing.TypeVector]))
     self.addParameter(QgsProcessingParameterString(self.FIELD_NAME,
                                                    self.tr('Result field name')))
     self.addParameter(QgsProcessingParameterEnum(self.FIELD_TYPE,
                                                  self.tr('Field type'), options=self.type_names))
     self.addParameter(QgsProcessingParameterNumber(self.FIELD_LENGTH,
                                                    self.tr('Field length'), minValue=1, maxValue=255, defaultValue=10))
     self.addParameter(QgsProcessingParameterNumber(self.FIELD_PRECISION,
                                                    self.tr('Field precision'), minValue=0, maxValue=15, defaultValue=3))
     self.addParameter(QgsProcessingParameterBoolean(self.NEW_FIELD,
                                                     self.tr('Create new field'), defaultValue=True))
     self.addParameter(QgsProcessingParameterExpression(self.FORMULA, self.tr('Formula')))
     self.addParameter(QgsProcessingParameterFeatureSink(self.OUTPUT,
                                                         self.tr('Calculated')))
    def initAlgorithm(self, config):

        # Define all common DEPARTURE and ARRIVAL parameters
        super().initAlgorithm(config)

        # Remove unused parameters
        self.removeParameter("INPUT_DEPARTURE_TRAVEL_TIME")
        self.removeParameter("INPUT_ARRIVAL_TRAVEL_TIME")

        # Define additional input parameters
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                "INPUT_LOCATIONS",
                tr("Locations"),
                [QgsProcessing.TypeVectorPoint],
                optional=False,
            ),
            help_text=tr(
                "Define your locations to use later in departure_searches or arrival_searches"
            ),
        )
        self.addParameter(
            QgsProcessingParameterExpression(
                "INPUT_LOCATIONS_ID",
                "Locations ID",
                optional=True,
                defaultValue="'locations_' || $id",
                parentLayerParameterName="INPUT_LOCATIONS",
            ),
            help_text=tr(
                "You will have to reference this id in your searches. It will also be used in the response body. MUST be unique among all locations."
            ),
        )

        # Define output parameters
        self.addParameter(
            QgsProcessingParameterEnum(
                "OUTPUT_RESULT_TYPE",
                tr("Output style"),
                options=self.RESULT_TYPE,
                defaultValue=0,
            ),
            help_text=tr(
                "Normal will return a simple linestring for each route. Detailed will return several segments for each type of transportation for each route."
            ),
        )
 def initAlgorithm(self, config):
     """Initialize algorithm with inputs and output parameters."""
     self.addParameter(
         QgsProcessingParameterFeatureSource(
             self.ORIG_INPUT,
             self.tr('Original layer'),
             types=[QgsProcessing.TypeVector],
         ))
     self.addParameter(
         QgsProcessingParameterFeatureSource(
             self.NEW_INPUT,
             self.tr('New layer'),
             types=[QgsProcessing.TypeVector],
         ))
     self.addParameter(
         QgsProcessingParameterField(
             self.FIELDS_TO_COMPARE,
             self.tr('Fields to compare'),
             None,
             self.NEW_INPUT,
             allowMultiple=True,
         ))
     self.addParameter(
         QgsProcessingParameterEnum(
             self.HIGHLIGHT_METHOD,
             self.tr('Highlight method'),
             options=[
                 self.tr('Only highlight different lines'),
                 self.
                 tr('Highligt different lines and inta-line character changes (Slower on '
                    'large layers)'),
             ],
             defaultValue=0,
         ))
     self.addParameter(
         QgsProcessingParameterExpression(
             self.SORT_EXPRESSION,
             self.tr('Sort expression'),
             parentLayerParameterName=self.NEW_INPUT,
             defaultValue='',
         ))
     self.addParameter(
         QgsProcessingParameterFileDestination(
             self.OUTPUT_HTML_FILE, self.tr('HTML report'),
             self.tr('HTML files (*.html)'), None, True))
Example #4
0
 def initAlgorithm(self, config=None):
     self.addParameter(
         QgsProcessingParameterFeatureSource(
             self.INPUT, self.tr("Input layer"),
             [QgsProcessing.TypeVectorAnyGeometry]))
     self.addParameter(
         QgsProcessingParameterFeatureSource(
             self.CLIP_LAYER,
             description=self.tr("Clip layer"),
             types=[QgsProcessing.TypeVectorPolygon],
             optional=True))
     self.addParameter(
         QgsProcessingParameterExpression(self.SELECT_EXPR,
                                          self.tr("Selection expression"),
                                          "", self.INPUT))
     self.addParameter(
         QgsProcessingParameterFeatureSink(self.OUTPUT,
                                           self.tr("Output layer")))
Example #5
0
    def initAlgorithm(self, config):
        """
        Here we define the inputs and output of the algorithm, along
        with some other properties.
        """
        nom_ij = "i+'-'+j"
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.INPUT, self.tr('Network'),
                [QgsProcessing.TypeVectorLine]))

        self.addParameter(
            QgsProcessingParameterExpression(
                self.IJ,
                self.tr('ij'),
                parentLayerParameterName=self.INPUT,
                defaultValue=nom_ij))

        self.addParameter(
            QgsProcessingParameterField(
                self.LIGNE,
                self.tr('Line'),
                parentLayerParameterName=self.INPUT,
                type=QgsProcessingParameterField.String,
                optional=True))

        self.addParameter(
            QgsProcessingParameterString(self.VOLAU, self.tr('Flows'),
                                         "volau"))
        self.addParameter(
            QgsProcessingParameterString(self.TYPE,
                                         self.tr('Link type'),
                                         defaultValue='type'))

        self.addParameter(
            QgsProcessingParameterFile(self.FICHIER_AFF,
                                       self.tr('aff output file'),
                                       QgsProcessingParameterFile.File, "TXT"))
        self.addParameter(
            QgsProcessingParameterString(self.ENCODAGE, self.tr('Encoding'),
                                         "utf_8_sig"))
        self.addParameter(
            QgsProcessingParameterFeatureSink(self.OUTPUT,
                                              self.tr('Flows layer')))
Example #6
0
    def initAlgorithm(self, config=None):
        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.INPUT, self.tr('Input point layer'),
                [QgsProcessing.TypeVectorPoint]))
        self.addParameter(
            QgsProcessingParameterBoolean(self.CLOSE_PATH,
                                          self.tr('Close path'),
                                          defaultValue=False))
        order_field_param = QgsProcessingParameterField(
            self.ORDER_FIELD,
            self.tr('Order field'),
            parentLayerParameterName=self.INPUT,
            optional=True)
        order_field_param.setFlags(
            order_field_param.flags()
            | QgsProcessingParameterDefinition.FlagHidden)
        self.addParameter(order_field_param)
        self.addParameter(
            QgsProcessingParameterExpression(
                self.ORDER_EXPRESSION,
                self.tr('Order expression'),
                parentLayerParameterName=self.INPUT,
                optional=True))
        self.addParameter(
            QgsProcessingParameterField(self.GROUP_FIELD,
                                        self.tr('Group field'),
                                        parentLayerParameterName=self.INPUT,
                                        optional=True))
        self.addParameter(
            QgsProcessingParameterString(
                self.DATE_FORMAT,
                self.tr('Date format (if order field is DateTime)'),
                optional=True))

        self.addParameter(
            QgsProcessingParameterFeatureSink(self.OUTPUT, self.tr('Paths'),
                                              QgsProcessing.TypeVectorLine))
        output_dir_param = QgsProcessingParameterFolderDestination(
            self.OUTPUT_TEXT_DIR,
            self.tr('Directory for text output'),
            optional=True)
        output_dir_param.setCreateByDefault(False)
        self.addParameter(output_dir_param)
    def initAlgorithm(self, config):
        """
        Parameter setting.
        """
        self.addParameter(
            QgsProcessingParameterVectorLayer(
                self.INPUT, self.tr('Input layer'),
                [QgsProcessing.TypeVectorPolygon]))

        self.addParameter(
            QgsProcessingParameterBoolean(
                self.SELECTED, self.tr('Process only selected features')))
        self.addParameter(
            QgsProcessingParameterExtent(self.EXTENT,
                                         self.tr('Extent'),
                                         optional=True))
        self.addParameter(
            QgsProcessingParameterField(self.IMAGE_ATTRIBUTE,
                                        self.tr('Image attribute'), None,
                                        'INPUT',
                                        QgsProcessingParameterField.String))
        self.addParameter(
            QgsProcessingParameterBoolean(self.ADD_TO_CANVAS,
                                          self.tr('Add to canvas'),
                                          defaultValue=True))
        self.addParameter(
            QgsProcessingParameterBoolean(self.UNIQUE_LOAD,
                                          self.tr('Unique load'),
                                          defaultValue=True))
        self.addParameter(
            QgsProcessingParameterExpression(self.GROUP_EXPRESSION,
                                             self.tr('Group expression'),
                                             defaultValue="",
                                             optional=True))
        self.addParameter(
            QgsProcessingParameterString(
                self.NAME_TAG,
                self.tr('String used as prefix in images'),
                defaultValue="",
                optional=True))
        self.addOutput(
            QgsProcessingOutputMultipleLayers(self.OUTPUT,
                                              self.tr('Loaded raster layers')))
    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('Input layer'),
                                              types=[QgsProcessing.TypeVector
                                                     ]))

        self.addParameter(
            QgsProcessingParameterExpression(
                self.EXPRESSION,
                self.tr('Expression'),
                parentLayerParameterName=self.INPUT))
        self.addOutput(
            QgsProcessingOutputVectorLayer(self.OUTPUT,
                                           self.tr('Selected (attribute)')))
Example #9
0
    def initAlgorithm(self, config):
        """
        Here we define the inputs and output of the algorithm, along
        with some other properties.
        """
        self.DAWA_ADDRESS_TYPES = [("adresser", self.tr("Adresser")), ("adgangsadresser", self.tr("Adgangsadresser"))]

        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.INPUT,
                self.tr('Input adressedata'),
                [QgsProcessing.TypeVector]
            )
        )

        self.addParameter(
            QgsProcessingParameterEnum(
                self.ADDRESS_TYPE,
                self.tr('Input adressetype'),
                options=[x[1] for x in self.DAWA_ADDRESS_TYPES], 
                defaultValue=0
            )
        )

        self.addParameter(
            QgsProcessingParameterExpression(
                self.EXPRESSION,
                self.tr('Adresse-udtryk'),
                parentLayerParameterName = self.INPUT
            )
        )

        # We add a feature sink in which to store our processed features (this
        # usually takes the form of a newly created vector layer when the
        # algorithm is run in QGIS).
        self.addParameter(
            QgsProcessingParameterFeatureSink(
                self.OUTPUT,
                self.tr('Output lag')
            )
        )
Example #10
0
    def initAlgorithm(self, config):

        super().initAlgorithm(config)
        self.addParameter(
            QgsProcessingParameterExpression(
                "INPUT_QUERY_FIELD",
                tr("Search expression"),
                parentLayerParameterName="INPUT_DATA",
            ),
            help_text=tr(
                "The field containing the query to geocode. Can be an address, a postcode or a venue. For example SW1A 0AA or Victoria street, London. Providing a country or city the request will get you more accurate results"
            ),
        )
        self.addParameter(
            QgsProcessingParameterPoint("INPUT_FOCUS",
                                        tr("Focus point"),
                                        optional=True),
            help_text=tr(
                "This will prioritize results around this point. Note that this does not exclude results that are far away from the focus point"
            ),
        )
Example #11
0
    def initAlgorithm(self, config=None):
        self.strategies = [self.tr('Points count'),
                           self.tr('Points density')]

        self.addParameter(QgsProcessingParameterFeatureSource(self.INPUT,
                                                              self.tr('Input layer'),
                                                              [QgsProcessing.TypeVectorPolygon]))
        self.addParameter(QgsProcessingParameterEnum(self.STRATEGY,
                                                     self.tr('Sampling strategy'),
                                                     self.strategies,
                                                     False,
                                                     0))
        self.addParameter(QgsProcessingParameterExpression(self.EXPRESSION,
                                                           self.tr('Expression'),
                                                           parentLayerParameterName=self.INPUT))
        self.addParameter(QgsProcessingParameterDistance(self.MIN_DISTANCE,
                                                         self.tr('Minimum distance between points'),
                                                         0, self.INPUT, False, 0, 1000000000))
        self.addParameter(QgsProcessingParameterFeatureSink(self.OUTPUT,
                                                            self.tr('Random points'),
                                                            type=QgsProcessing.TypeVectorPoint))
Example #12
0
    def initParameters(self, config=None):
        self.addParameter(
            QgsProcessingParameterEnum(self.OUTPUT_GEOMETRY,
                                       self.tr('Output geometry type'),
                                       options=self.geometry_types,
                                       defaultValue=0))
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.WITH_Z,
                self.tr('Output geometry has z dimension'),
                defaultValue=False))
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.WITH_M,
                self.tr('Output geometry has m values'),
                defaultValue=False))

        self.addParameter(
            QgsProcessingParameterExpression(self.EXPRESSION,
                                             self.tr("Geometry expression"),
                                             defaultValue='$geometry',
                                             parentLayerParameterName='INPUT'))
Example #13
0
    def __init__(self):
        super().__init__()
        self.addParameter(
            QgsProcessingParameterFeatureSource(self.INPUT,
                                                self.tr('Input layer')))
        self.addParameter(
            QgsProcessingParameterExpression(self.EXPRESSION,
                                             self.tr('Expression'), None,
                                             self.INPUT))

        self.addParameter(
            QgsProcessingParameterFeatureSink(self.OUTPUT,
                                              self.tr('Matching features')))
        self.addOutput(
            QgsProcessingOutputVectorLayer(self.OUTPUT,
                                           self.tr('Matching (expression)')))
        self.addParameter(
            QgsProcessingParameterFeatureSink(
                self.FAIL_OUTPUT, self.tr('Non-matching'),
                QgsProcessingParameterDefinition.TypeVectorAny, None, True))
        self.addOutput(
            QgsProcessingOutputVectorLayer(
                self.FAIL_OUTPUT, self.tr('Non-matching (expression)')))
Example #14
0
 def initAlgorithm(self, config):
     """
     Parameter setting.
     """
     self.addParameter(
         QgsProcessingParameterMultipleLayers(
             self.INPUT_LAYERS,
             self.tr('Input Layers'),
             QgsProcessing.TypeVector
         )
     )
     self.addParameter(
         QgsProcessingParameterExpression(
             self.CATEGORY_EXPRESSION,
             self.tr('Expression used to find out the category'),
             defaultValue="regexp_substr(@layer_name ,'([^_]+)')"
         )
     )
     self.addOutput(
         QgsProcessingOutputMultipleLayers(
             self.OUTPUT,
             self.tr('Original reorganized layers')
         )
     )
Example #15
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
                == ModelerParameterDefinitionDialog.PARAMETER_BOOLEAN
                or isinstance(self.param, QgsProcessingParameterBoolean)):
            self.param = QgsProcessingParameterBoolean(name, description,
                                                       self.state.isChecked())
        elif (self.paramType
              == ModelerParameterDefinitionDialog.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 == ModelerParameterDefinitionDialog.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
              == ModelerParameterDefinitionDialog.PARAMETER_MAP_LAYER
              or isinstance(self.param, QgsProcessingParameterMapLayer)):
            self.param = QgsProcessingParameterMapLayer(name, description)
        elif (self.paramType
              == ModelerParameterDefinitionDialog.PARAMETER_RASTER
              or isinstance(self.param, QgsProcessingParameterRasterLayer)):
            self.param = QgsProcessingParameterRasterLayer(name, description)
        elif (self.paramType
              == ModelerParameterDefinitionDialog.PARAMETER_TABLE
              or isinstance(self.param, QgsProcessingParameterVectorLayer)):
            self.param = QgsProcessingParameterVectorLayer(
                name, description, [self.shapetypeCombo.currentData()])
        elif (self.paramType
              == ModelerParameterDefinitionDialog.PARAMETER_VECTOR
              or isinstance(self.param, QgsProcessingParameterFeatureSource)):
            self.param = QgsProcessingParameterFeatureSource(
                name, description, [self.shapetypeCombo.currentData()])
        elif (self.paramType
              == ModelerParameterDefinitionDialog.PARAMETER_MULTIPLE
              or isinstance(self.param, QgsProcessingParameterMultipleLayers)):
            self.param = QgsProcessingParameterMultipleLayers(
                name, description, self.datatypeCombo.currentData())
        elif (self.paramType
              == ModelerParameterDefinitionDialog.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
              == ModelerParameterDefinitionDialog.PARAMETER_EXPRESSION
              or isinstance(self.param, QgsProcessingParameterExpression)):
            parent = self.parentCombo.currentData()
            self.param = QgsProcessingParameterExpression(
                name, description, str(self.defaultEdit.expression()), parent)
        elif (self.paramType
              == ModelerParameterDefinitionDialog.PARAMETER_STRING
              or isinstance(self.param, QgsProcessingParameterString)):
            self.param = QgsProcessingParameterString(
                name, description, str(self.defaultTextBox.text()))
        elif (self.paramType
              == ModelerParameterDefinitionDialog.PARAMETER_EXTENT
              or isinstance(self.param, QgsProcessingParameterExtent)):
            self.param = QgsProcessingParameterExtent(name, description)
        elif (self.paramType == ModelerParameterDefinitionDialog.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
              == ModelerParameterDefinitionDialog.PARAMETER_POINT
              or isinstance(self.param, QgsProcessingParameterPoint)):
            self.param = QgsProcessingParameterPoint(
                name, description, str(self.defaultTextBox.text()))
        elif (self.paramType == ModelerParameterDefinitionDialog.PARAMETER_CRS
              or isinstance(self.param, QgsProcessingParameterCrs)):
            self.param = QgsProcessingParameterCrs(
                name, description,
                self.selector.crs().authid())
        if not self.requiredCheck.isChecked():
            self.param.setFlags(
                self.param.flags()
                | QgsProcessingParameterDefinition.FlagOptional)

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

        QDialog.accept(self)
 def initAlgorithm(self, config=None):
     self.cap_styles = [self.tr('Round'), 'Flat', 'Square']
     self.addParameter(
         QgsProcessingParameterFeatureSource(
             self.ROADS, self.tr('Roads layer'),
             [QgsProcessing.TypeVectorLine]))
     self.addParameter(
         QgsProcessingParameterExpression(
             self.SELECT_EXPR,
             self.tr(
                 'Expression to select features (all features if empty)'),
             defaultValue=RoadsExtentGrpAlg.DEFAULT_EXPR,
             optional=True,
             parentLayerParameterName=self.ROADS))
     self.addParameter(
         QgsProcessingParameterExpression(
             self.BUFFER_EXPR,
             self.tr('Roads buffer value'),
             defaultValue=self.DEFAULT_BUFFER_EXPR,
             parentLayerParameterName=self.ROADS))
     self.addParameter(
         QgsProcessingParameterEnum(self.END_CAP_STYLE,
                                    self.tr('End cap style'),
                                    options=self.cap_styles,
                                    defaultValue=0))
     # Join parameters
     self.addParameter(
         QgsProcessingParameterBoolean(self.DISSOLVE,
                                       self.tr('Join roads by name'),
                                       defaultValue=True))
     paramNameField = QgsProcessingParameterField(
         self.NAME_FIELD,
         self.tr('Roads name field'),
         defaultValue=self.DEFAULT_NAME_FIELD,
         parentLayerParameterName=self.ROADS)
     # paramIncludeNull = self.addParameter(
     # QgsProcessingParameterBoolean(
     # self.INCLUDE_NULL,
     # self.tr('Include roads with NULL name'),
     # defaultValue=True))
     paramJoinExpr = QgsProcessingParameterExpression(
         self.JOIN_EXPR,
         self.tr('Expression to select entities to join'),
         defaultValue=self.DEFAULT_JOIN_EXPR,
         parentLayerParameterName=self.ROADS)
     paramsJoin = [paramNameField, paramJoinExpr]
     for param in paramsJoin:
         param.setFlags(param.flags()
                        | QgsProcessingParameterDefinition.FlagAdvanced)
         self.addParameter(param)
     # self.addParameter(
     # QgsProcessingParameterMultipleLayers(
     # self.POLYGON_LAYERS,
     # self.tr('Polygon layers to include'),
     # layerType=QgsProcessing.TypeVectorPolygon,
     # optional=True))
     self.addParameter(
         QgsProcessingParameterVectorDestination(self.OUTPUT,
                                                 self.tr('Output layer')))
     self.addParameter(
         QgsProcessingParameterVectorDestination(self.OUTPUT_LINEAR,
                                                 self.tr('Linear output'),
                                                 optional=True))
    def accept(self):
        description = self.nameTextBox.text()
        if description.strip() == '':
            QMessageBox.warning(self, self.tr('Unable to define parameter'),
                                self.tr('Invalid parameter name'))
            return
        if self.param is None:
            validChars = \
                'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
            safeName = ''.join(c for c in description if c in validChars)
            name = safeName.lower()
            i = 2
            while self.alg.parameterDefinition(name):
                name = safeName.lower() + str(i)
                i += 1
        else:
            name = self.param.name()
        if (self.paramType == parameters.PARAMETER_BOOLEAN
                or isinstance(self.param, QgsProcessingParameterBoolean)):
            self.param = QgsProcessingParameterBoolean(name, description,
                                                       self.state.isChecked())
        elif (self.paramType == parameters.PARAMETER_TABLE_FIELD
              or isinstance(self.param, QgsProcessingParameterField)):
            if self.parentCombo.currentIndex() < 0:
                QMessageBox.warning(
                    self, self.tr('Unable to define parameter'),
                    self.tr('Wrong or missing parameter values'))
                return
            parent = self.parentCombo.currentData()
            datatype = self.datatypeCombo.currentData()
            default = self.defaultTextBox.text()
            if not default:
                default = None
            self.param = QgsProcessingParameterField(
                name,
                description,
                defaultValue=default,
                parentLayerParameterName=parent,
                type=datatype,
                allowMultiple=self.multipleCheck.isChecked())
        elif (self.paramType == parameters.PARAMETER_BAND
              or isinstance(self.param, QgsProcessingParameterBand)):
            if self.parentCombo.currentIndex() < 0:
                QMessageBox.warning(
                    self, self.tr('Unable to define parameter'),
                    self.tr('Wrong or missing parameter values'))
                return
            parent = self.parentCombo.currentData()
            self.param = QgsProcessingParameterBand(name, description, None,
                                                    parent)
        elif (self.paramType == parameters.PARAMETER_MAP_LAYER
              or isinstance(self.param, QgsProcessingParameterMapLayer)):
            self.param = QgsProcessingParameterMapLayer(name, description)
        elif (self.paramType == parameters.PARAMETER_RASTER
              or isinstance(self.param, QgsProcessingParameterRasterLayer)):
            self.param = QgsProcessingParameterRasterLayer(name, description)
        elif (self.paramType == parameters.PARAMETER_TABLE
              or isinstance(self.param, QgsProcessingParameterVectorLayer)):
            self.param = QgsProcessingParameterVectorLayer(
                name, description, [self.shapetypeCombo.currentData()])
        elif (self.paramType == parameters.PARAMETER_VECTOR
              or isinstance(self.param, QgsProcessingParameterFeatureSource)):
            self.param = QgsProcessingParameterFeatureSource(
                name, description, [self.shapetypeCombo.currentData()])
        elif (self.paramType == parameters.PARAMETER_MULTIPLE
              or isinstance(self.param, QgsProcessingParameterMultipleLayers)):
            self.param = QgsProcessingParameterMultipleLayers(
                name, description, self.datatypeCombo.currentData())
        elif (self.paramType == parameters.PARAMETER_NUMBER or isinstance(
                self.param,
            (QgsProcessingParameterNumber, QgsProcessingParameterDistance))):
            try:
                self.param = QgsProcessingParameterNumber(
                    name, description, QgsProcessingParameterNumber.Double,
                    self.defaultTextBox.text())
                vmin = self.minTextBox.text().strip()
                if not vmin == '':
                    self.param.setMinimum(float(vmin))
                vmax = self.maxTextBox.text().strip()
                if not vmax == '':
                    self.param.setMaximum(float(vmax))
            except:
                QMessageBox.warning(
                    self, self.tr('Unable to define parameter'),
                    self.tr('Wrong or missing parameter values'))
                return
        elif (self.paramType == parameters.PARAMETER_EXPRESSION
              or isinstance(self.param, QgsProcessingParameterExpression)):
            parent = self.parentCombo.currentData()
            self.param = QgsProcessingParameterExpression(
                name, description, str(self.defaultEdit.expression()), parent)
        elif (self.paramType == parameters.PARAMETER_STRING
              or isinstance(self.param, QgsProcessingParameterString)):
            self.param = QgsProcessingParameterString(
                name, description, str(self.defaultTextBox.text()))
        elif (self.paramType == parameters.PARAMETER_EXTENT
              or isinstance(self.param, QgsProcessingParameterExtent)):
            self.param = QgsProcessingParameterExtent(name, description)
        elif (self.paramType == parameters.PARAMETER_FILE
              or isinstance(self.param, QgsProcessingParameterFile)):
            isFolder = self.fileFolderCombo.currentIndex() == 1
            self.param = QgsProcessingParameterFile(
                name, description, QgsProcessingParameterFile.Folder
                if isFolder else QgsProcessingParameterFile.File)
        elif (self.paramType == parameters.PARAMETER_POINT
              or isinstance(self.param, QgsProcessingParameterPoint)):
            self.param = QgsProcessingParameterPoint(
                name, description, str(self.defaultTextBox.text()))
        elif (self.paramType == parameters.PARAMETER_CRS
              or isinstance(self.param, QgsProcessingParameterCrs)):
            self.param = QgsProcessingParameterCrs(
                name, description,
                self.selector.crs().authid())
        elif (self.paramType == parameters.PARAMETER_ENUM
              or isinstance(self.param, QgsProcessingParameterEnum)):
            self.param = QgsProcessingParameterEnum(
                name, description, self.widget.options(),
                self.widget.allowMultiple(), self.widget.defaultOptions())
        elif (self.paramType == parameters.PARAMETER_MATRIX
              or isinstance(self.param, QgsProcessingParameterMatrix)):
            self.param = QgsProcessingParameterMatrix(
                name,
                description,
                hasFixedNumberRows=self.widget.fixedRows(),
                headers=self.widget.headers(),
                defaultValue=self.widget.value())

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

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

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

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

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

        QDialog.accept(self)
    def initAlgorithm(self, config):
        """Base setup of the algorithm.

        This will setup parameters corresponding to departure_searches and arrival_searches,
        since they are common to all main algorithms.

        Subclasses should call this and then define their own parameters.

        Note that there are slight differences on the API side on the departure_searches and
        arrival_searches parameters: for the time-map endpoint, the coords are included in these
        parameters, while for the time-filter and routes endpoints, the coords are all defined
        in a list of locations.

        Here we will implement everything as it is for the time-map endpoint, as it maps better
        to normal GIS workflow, where you usually have the list to filter and the inputs points
        as different datasets. The mapping to the different API data model will be done in the
        processing algorithm by the time-filter and routes subclasses.
        """

        for DEPARR in ['DEPARTURE', 'ARRIVAL']:
            self.addParameter(
                QgsProcessingParameterFeatureSource('INPUT_'+DEPARR+'_SEARCHES',
                                                    '{} / Searches'.format(DEPARR.title()),
                                                    [QgsProcessing.TypeVectorPoint],
                                                    optional=True, )
            )
            self.addParameter(
                QgsProcessingParameterExpression('INPUT_'+DEPARR+'_ID',
                                                 '{} / ID'.format(DEPARR.title()),
                                                 optional=True,
                                                 defaultValue="'"+DEPARR.lower()+"_searches_' || $id",
                                                 parentLayerParameterName='INPUT_'+DEPARR+'_SEARCHES',)
            )
            # Transportation
            self.addParameter(
                QgsProcessingParameterExpression('INPUT_'+DEPARR+'_TRNSPT_TYPE',
                                                 '{} / Transportation / type'.format(DEPARR.title()),
                                                 optional=True,
                                                 defaultValue="'walking'",
                                                 parentLayerParameterName='INPUT_'+DEPARR+'_SEARCHES',)
            )
            self.addAdvancedParamter(
                QgsProcessingParameterExpression('INPUT_'+DEPARR+'_TRNSPT_PT_CHANGE_DELAY',
                                                 '{} / Transportation / change delay'.format(DEPARR.title()),
                                                 optional=True,
                                                 defaultValue="0",
                                                 parentLayerParameterName='INPUT_'+DEPARR+'_SEARCHES',)
            )
            self.addAdvancedParamter(
                QgsProcessingParameterExpression('INPUT_'+DEPARR+'_TRNSPT_WALKING_TIME',
                                                 '{} / Transportation / walking time'.format(DEPARR.title()),
                                                 optional=True,
                                                 defaultValue="900",
                                                 parentLayerParameterName='INPUT_'+DEPARR+'_SEARCHES',)
            )
            self.addAdvancedParamter(
                QgsProcessingParameterExpression('INPUT_'+DEPARR+'_TRNSPT_DRIVING_TIME_TO_STATION',
                                                 '{} / Transportation / driving time to station'.format(DEPARR.title()),
                                                 optional=True,
                                                 defaultValue="1800",
                                                 parentLayerParameterName='INPUT_'+DEPARR+'_SEARCHES',)
            )
            self.addAdvancedParamter(
                QgsProcessingParameterExpression('INPUT_'+DEPARR+'_TRNSPT_PARKING_TIME',
                                                 '{} / Transportation / parking time'.format(DEPARR.title()),
                                                 optional=True,
                                                 defaultValue="300",
                                                 parentLayerParameterName='INPUT_'+DEPARR+'_SEARCHES',)
            )
            self.addAdvancedParamter(
                QgsProcessingParameterExpression('INPUT_'+DEPARR+'_TRNSPT_BOARDING_TIME',
                                                 '{} / Transportation / boarding time'.format(DEPARR.title()),
                                                 optional=True,
                                                 defaultValue="0",
                                                 parentLayerParameterName='INPUT_'+DEPARR+'_SEARCHES',)
            )
            self.addAdvancedParamter(
                QgsProcessingParameterExpression('INPUT_'+DEPARR+'_RANGE_WIDTH',
                                                 '{} / Search range width '.format(DEPARR.title()),
                                                 optional=True,
                                                 defaultValue="null",
                                                 parentLayerParameterName='INPUT_'+DEPARR+'_SEARCHES',)
            )
            self.addParameter(
                QgsProcessingParameterExpression('INPUT_'+DEPARR+'_TIME',
                                                 '{} / Time'.format(DEPARR.title()),
                                                 optional=True,
                                                 defaultValue="'{}'".format(utils.now_iso()),
                                                 parentLayerParameterName='INPUT_'+DEPARR+'_SEARCHES',)
            )
            self.addParameter(
                QgsProcessingParameterExpression('INPUT_'+DEPARR+'_TRAVEL_TIME',
                                                 '{} / Travel time'.format(DEPARR.title()),
                                                 optional=True,
                                                 defaultValue="900",
                                                 parentLayerParameterName='INPUT_'+DEPARR+'_SEARCHES',)
            )
    def initAlgorithm(self, config=None):
        """
        Here we define the inputs and output of the algorithm, along
        with some other properties.
        """
        # We add the point input vector features source
        #QgsProcessingFeatureSourceDefinition
        self.addParameter(
            QgsProcessingParameterFeatureSource(self.INPUT_L,
                                                self.tr('Input sorgente dati'),
                                                [QgsProcessing.TypeMapLayer],
                                                ""))

        self.addParameter(
            QgsProcessingParameterField(
                self.INPUT_F,
                self.tr('Selezionare i campi da inserire nel file Html'),
                allowMultiple=True,
                defaultValue=[],
                parentLayerParameterName=self.INPUT_L))

        self.addParameter(
            QgsProcessingParameterExpression(
                self.GROUP_BY,
                self.tr('Espressione filtro'),
                defaultValue=[],
                optional=True,
                parentLayerParameterName=self.INPUT_L))

        self.addParameter(
            QgsProcessingParameterExpression(
                self.INPUT_T,
                self.tr('Titolo pagina'),
                defaultValue=[],
                optional=True,
                parentLayerParameterName=self.INPUT_L))

        # We add the input icon source
        self.addParameter(
            QgsProcessingParameterFile(
                self.INPUT_I,
                'Icona Gruppo',
                behavior=QgsProcessingParameterFile.File,
                fileFilter='Image file (*.gif; *.jpeg; *.jpg; *.png; *.svg)',
                defaultValue='',
                optional=True))

        # We add the input css
        self.addParameter(
            QgsProcessingParameterFile(
                self.INPUT_S,
                'Foglio di stile CSS',
                behavior=QgsProcessingParameterFile.File,
                fileFilter='Css file (*.css)',
                defaultValue="",
                optional=True))

        self.addParameter(
            QgsProcessingParameterString(
                self.INPUT_D,
                'Dimensioni icona Gruppo e foto [base x altezza in pt, px, mm, auto]',
                '25px; 25px; auto; 10%'))

        # We add a file output of type HTML
        self.addParameter(
            QgsProcessingParameterFileDestination(
                self.OUTPUT,
                self.tr('Tabella HTML'),
                'HTML files (*.html)',
            ))

        self.addParameter(
            QgsProcessingParameterBoolean(self.INPUT_ABS,
                                          'Percorsi file relativi', 0))
 def initAlgorithm(self, config):
     """Initialize algorithm with inputs and output parameters."""
     if HAS_DB_PROCESSING_PARAMETER:
         db_param = QgsProcessingParameterProviderConnection(
             self.DATABASE,
             self.tr('PostgreSQL database (connection name)'),
             'postgres',
         )
         schema_param = QgsProcessingParameterDatabaseSchema(
             self.SCHEMA,
             self.tr('PostgreSQL schema name'),
             connectionParameterName=self.DATABASE,
             defaultValue='public',
         )
         table_param = QgsProcessingParameterDatabaseTable(
             self.TABLENAME,
             self.tr('PostgreSQL original table name'),
             connectionParameterName=self.DATABASE,
             schemaParameterName=self.SCHEMA)
     else:
         db_param = QgsProcessingParameterString(
             self.DATABASE,
             self.tr('PostgreSQL database (connection name)'),
         )
         db_param.setMetadata({
             'widget_wrapper': {
                 'class':
                 'processing.gui.wrappers_postgis.ConnectionWidgetWrapper'
             }
         })
         schema_param = QgsProcessingParameterString(
             self.SCHEMA,
             self.tr('PostgreSQL schema name'),
             'public',
             False,
             True,
         )
         schema_param.setMetadata({
             'widget_wrapper': {
                 'class':
                 'processing.gui.wrappers_postgis.SchemaWidgetWrapper',
                 'connection_param': self.DATABASE,
             }
         })
         table_param = QgsProcessingParameterString(
             self.TABLENAME,
             self.tr('PostgreSQL original table name'),
             '',
             False,
             True,
         )
         table_param.setMetadata({
             'widget_wrapper': {
                 'class':
                 'processing.gui.wrappers_postgis.TableWidgetWrapper',
                 'schema_param': self.SCHEMA,
             }
         })
     self.addParameter(db_param)
     self.addParameter(schema_param)
     self.addParameter(table_param)
     self.addParameter(
         QgsProcessingParameterFeatureSource(
             self.NEW_INPUT,
             self.tr('New layer'),
             types=[QgsProcessing.TypeVector],
         ))
     self.addParameter(
         QgsProcessingParameterField(
             self.FIELDS_TO_COMPARE,
             self.tr('Fields to compare'),
             None,
             self.NEW_INPUT,
             allowMultiple=True,
         ))
     self.addParameter(
         QgsProcessingParameterEnum(
             self.HIGHLIGHT_METHOD,
             self.tr('Highlight method'),
             options=[
                 self.tr('Only highlight different lines'),
                 self.
                 tr('Highligt different lines and inta-line character changes (Slower on '
                    'large layers)'),
             ],
             defaultValue=0,
         ))
     self.addParameter(
         QgsProcessingParameterExpression(
             self.SORT_EXPRESSION,
             self.tr('Sort expression (put in ORDER BY clause)'),
             parentLayerParameterName=self.NEW_INPUT,
             defaultValue='',
         ))
     self.addParameter(
         QgsProcessingParameterFileDestination(
             self.OUTPUT_HTML_FILE, self.tr('HTML report'),
             self.tr('HTML files (*.html)'), None, True))
Example #21
0
    def initAlgorithm(self, config):
        """Base setup of the algorithm.

        This will setup parameters corresponding to departure_searches and arrival_searches,
        since they are common to all main algorithms.

        Subclasses should call this and then define their own parameters.

        Note that there are slight differences on the API side on the departure_searches and
        arrival_searches parameters: for the time-map endpoint, the coords are included in these
        parameters, while for the time-filter and routes endpoints, the coords are all defined
        in a list of locations.

        Here we will implement everything as it is for the time-map endpoint, as it maps better
        to normal GIS workflow, where you usually have the list to filter and the inputs points
        as different datasets. The mapping to the different API data model will be done in the
        processing algorithm by the time-filter and routes subclasses.
        """

        for DEPARR in ["DEPARTURE", "ARRIVAL"]:
            self.addParameter(
                QgsProcessingParameterFeatureSource(
                    "INPUT_" + DEPARR + "_SEARCHES",
                    "{} / Searches".format(DEPARR.title()),
                    [QgsProcessing.TypeVectorPoint],
                    optional=True,
                ),
                help_text=tr(
                    "Searches based on departure time. Leave departure location at no earlier than given time. You can define a maximum of 10 searches"
                ),
            )
            self.addParameter(
                QgsProcessingParameterExpression(
                    "INPUT_" + DEPARR + "_ID",
                    "{} / ID".format(DEPARR.title()),
                    optional=True,
                    defaultValue="'" + DEPARR.lower() + "_searches_' || $id",
                    parentLayerParameterName="INPUT_" + DEPARR + "_SEARCHES",
                ),
                help_text=tr(
                    "Used to identify this specific search in the results array. MUST be unique among all searches."
                ),
            )
            # Transportation
            self.addParameter(
                QgsProcessingParameterExpression(
                    "INPUT_" + DEPARR + "_TRNSPT_TYPE",
                    "{} / Transportation / type".format(DEPARR.title()),
                    optional=True,
                    defaultValue="'public_transport'",
                    parentLayerParameterName="INPUT_" + DEPARR + "_SEARCHES",
                ),
                help_text=tr(
                    "cycling, driving, driving+train (only in Great Britain), public_transport, walking, coach, bus, train, ferry, driving+ferry, cycling+ferry or cycling+public_transport (only in Netherlands)"
                ),
            )
            self.addParameter(
                QgsProcessingParameterExpression(
                    "INPUT_" + DEPARR + "_TRNSPT_PT_CHANGE_DELAY",
                    "{} / Transportation / change delay".format(
                        DEPARR.title()),
                    optional=True,
                    defaultValue="0",
                    parentLayerParameterName="INPUT_" + DEPARR + "_SEARCHES",
                ),
                advanced=True,
                help_text=tr(
                    "Time (in seconds) needed to board public transportation vehicle. Default is 0. Cannot be higher than travel_time. Used in public_transport, coach, bus, train, driving+train and cycling+public_transport transportation modes"
                ),
            )
            self.addParameter(
                QgsProcessingParameterExpression(
                    "INPUT_" + DEPARR + "_TRNSPT_WALKING_TIME",
                    "{} / Transportation / walking time".format(
                        DEPARR.title()),
                    optional=True,
                    defaultValue="900",
                    parentLayerParameterName="INPUT_" + DEPARR + "_SEARCHES",
                ),
                advanced=True,
                help_text=tr(
                    "Maximum time (in seconds) of walking from source to a station/stop and from station/stop to destination. Default value is 900. Cannot be higher than travel_time. Used in public_transport, coach, bus, train, driving+train and cycling+public_transport transportation modes"
                ),
            )
            self.addParameter(
                QgsProcessingParameterExpression(
                    "INPUT_" + DEPARR + "_TRNSPT_DRIVING_TIME_TO_STATION",
                    "{} / Transportation / driving time to station".format(
                        DEPARR.title()),
                    optional=True,
                    defaultValue="1800",
                    parentLayerParameterName="INPUT_" + DEPARR + "_SEARCHES",
                ),
                advanced=True,
                help_text=tr(
                    "Maximum time (in seconds) of driving from source to train station. Default value is 1800. Cannot be higher than travel_time. Used in driving+train transportation mode"
                ),
            )
            self.addParameter(
                QgsProcessingParameterExpression(
                    "INPUT_" + DEPARR + "_TRNSPT_CYCLING_TIME_TO_STATION",
                    "{} / Transportation / cycling time to station".format(
                        DEPARR.title()),
                    optional=True,
                    defaultValue="900",
                    parentLayerParameterName="INPUT_" + DEPARR + "_SEARCHES",
                ),
                advanced=True,
                help_text=tr(
                    "Maximum time (in seconds) of cycling (including any ferry transfers) from source to a station or stop. Default value is 900. Cannot be higher than travel_time. Used in cycling+public_transport transportation mode"
                ),
            )
            self.addParameter(
                QgsProcessingParameterExpression(
                    "INPUT_" + DEPARR + "_TRNSPT_PARKING_TIME",
                    "{} / Transportation / parking time".format(
                        DEPARR.title()),
                    optional=True,
                    defaultValue="300",
                    parentLayerParameterName="INPUT_" + DEPARR + "_SEARCHES",
                ),
                advanced=True,
                help_text=tr(
                    "Time (in seconds) required to park a car or a bike. Default is 300. Cannot be higher than travel_time. Used in driving+train and cycling+public_transport transportation modes."
                ),
            )
            self.addParameter(
                QgsProcessingParameterExpression(
                    "INPUT_" + DEPARR + "_TRNSPT_BOARDING_TIME",
                    "{} / Transportation / boarding time".format(
                        DEPARR.title()),
                    optional=True,
                    defaultValue="0",
                    parentLayerParameterName="INPUT_" + DEPARR + "_SEARCHES",
                ),
                advanced=True,
                help_text=tr(
                    "Time (in seconds) required to board a ferry. Default is 0. Cannot be higher than travel_time. Used in public_transport, ferry, driving+ferry, cycling+ferry and cycling+public_transport transportation modes. For public_transport mode, pt_change_delay is used instead"
                ),
            )
            self.addParameter(
                QgsProcessingParameterExpression(
                    "INPUT_" + DEPARR + "_RANGE_WIDTH",
                    "{} / Search range width ".format(DEPARR.title()),
                    optional=True,
                    defaultValue="null",
                    parentLayerParameterName="INPUT_" + DEPARR + "_SEARCHES",
                ),
                advanced=True,
                help_text=tr(
                    "Search range width in seconds. width along with departure_time specify departure interval. For example, if you set departure_time to 9am and width to 1 hour, we will return a combined shape of all possible journeys that have departure time between 9am and 10am. Range width is limited to 12 hours"
                ),
            )
            self.addParameter(
                QgsProcessingParameterExpression(
                    "INPUT_" + DEPARR + "_TIME",
                    "{} / Time".format(DEPARR.title()),
                    optional=True,
                    defaultValue="'{}'".format(utils.now_iso()),
                    parentLayerParameterName="INPUT_" + DEPARR + "_SEARCHES",
                ),
                help_text=tr(
                    "Leave departure location at no earlier than given time. Example - 2017-10-18T08:00:00Z"
                ),
            )
            self.addParameter(
                QgsProcessingParameterExpression(
                    "INPUT_" + DEPARR + "_TRAVEL_TIME",
                    "{} / Travel time".format(DEPARR.title()),
                    optional=True,
                    defaultValue="900",
                    parentLayerParameterName="INPUT_" + DEPARR + "_SEARCHES",
                ),
                help_text=tr(
                    "Travel time in seconds. Maximum value is 14400 (4 hours)"
                ),
            )

        # Define output parameters
        self.addParameter(
            QgsProcessingParameterFeatureSink("OUTPUT",
                                              tr("Output"),
                                              type=self.output_type))
    def initAlgorithm(self, config):
        """
        Set up parameters for the ContourGenerator algorithm
        """
        #Would be cleaner to create a widget, at least for the contour levels.

        # Add the input point vector features source.
        # geometry.

        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.PrmInputLayer, tr('Input point layer'),
                [QgsProcessing.TypeVectorPoint]))

        # Define the field/expression to contour

        self.addParameter(
            QgsProcessingParameterExpression(
                self.PrmInputField,
                tr('Value to contour'),
                parentLayerParameterName=self.PrmInputLayer))

        # Duplicate point radius - discards points if closer than
        # this to each other (approximately).  0 means don't discard

        self.addParameter(
            QgsProcessingParameterNumber(self.PrmDuplicatePointTolerance,
                                         tr('Duplicate point tolerance'),
                                         QgsProcessingParameterNumber.Double,
                                         minValue=0.0,
                                         defaultValue=0.0,
                                         optional=True))

        # Define the contour type

        self.addParameter(
            self._enumParameter(self.PrmContourType, tr("Contour type")))

        self.addParameter(
            self._enumParameter(self.PrmExtendContour,
                                tr("Extend filled contour options"),
                                optional=True))

        # Define the contour level calculation method

        self.addParameter(
            self._enumParameter(
                self.PrmContourMethod,
                tr('Method used to calculate the contour levels')))

        self.addParameter(
            QgsProcessingParameterNumber(
                self.PrmNContour,
                tr('Number (or max number) of contours'),
                defaultValue=20,
                minValue=1,
                optional=True))

        self.addParameter(
            QgsProcessingParameterNumber(
                self.PrmMinContourValue,
                tr('Minimum contour level (omit to use data minimum)'),
                type=QgsProcessingParameterNumber.Double,
                optional=True))

        self.addParameter(
            QgsProcessingParameterNumber(
                self.PrmMaxContourValue,
                tr('Maximum contour level (omit to use data maximum)'),
                type=QgsProcessingParameterNumber.Double,
                optional=True))

        self.addParameter(
            QgsProcessingParameterNumber(self.PrmContourInterval,
                                         tr('Contour interval'),
                                         QgsProcessingParameterNumber.Double,
                                         minValue=0.0,
                                         defaultValue=1.0,
                                         optional=True))

        self.addParameter(
            QgsProcessingParameterString(self.PrmContourLevels,
                                         tr('User selected contour levels'),
                                         multiLine=True,
                                         optional=True))

        # Define label formatting - number of significant digits and
        # whether trailiing zeros are trimmed.

        self.addParameter(
            QgsProcessingParameterNumber(
                self.PrmLabelDecimalPlaces,
                tr('Label decimal places (-1 for auto)'),
                QgsProcessingParameterNumber.Integer,
                defaultValue=-1,
                minValue=-1,
                maxValue=10,
                optional=True))

        self.addParameter(
            QgsProcessingParameterBoolean(
                self.PrmLabelTrimZeros,
                tr("Trim trailing zeros from labels"),
                False,
                optional=True))

        self.addParameter(
            QgsProcessingParameterString(self.PrmLabelUnits,
                                         tr("Units to append to label values"),
                                         "",
                                         optional=True))

        # Output layer for the contours

        self.addParameter(
            QgsProcessingParameterFeatureSink(self.PrmOutputLayer,
                                              tr('Output layer')))
Example #23
0
    def initAlgorithm(self, config):
        """
        Here we define the inputs and output of the algorithm, along
        with some other properties.
        """

        self.addParameter(
            QgsProcessingParameterFeatureSource(
                self.INPUT, self.tr('Road network'),
                [QgsProcessing.TypeVectorLine]))

        self.addParameter(
            QgsProcessingParameterExtent(
                self.RECTANGLE,
                self.tr('Window'),
            ))
        self.addParameter(
            QgsProcessingParameterField(
                self.SENS,
                self.tr('Direction'),
                parentLayerParameterName=self.INPUT,
                type=QgsProcessingParameterField.String))

        self.addParameter(
            QgsProcessingParameterField(
                self.TEMPS,
                self.tr('Time'),
                parentLayerParameterName=self.INPUT,
                type=QgsProcessingParameterField.Numeric))
        self.addParameter(
            QgsProcessingParameterField(
                self.LONGUEUR,
                self.tr('Length'),
                parentLayerParameterName=self.INPUT,
                type=QgsProcessingParameterField.Numeric))
        self.addParameter(
            QgsProcessingParameterField(
                self.I,
                self.tr('i-node'),
                parentLayerParameterName=self.INPUT,
                type=QgsProcessingParameterField.String))
        self.addParameter(
            QgsProcessingParameterField(
                self.J,
                self.tr('j-node'),
                parentLayerParameterName=self.INPUT,
                type=QgsProcessingParameterField.String))
        self.addParameter(
            QgsProcessingParameterString(self.PERIODE,
                                         self.tr('Time category id'), "-1"))
        self.addParameter(
            QgsProcessingParameterString(self.NUM_PLAGE,
                                         self.tr('Time period id'), "-1"))
        self.addParameter(
            QgsProcessingParameterString(self.DEBUT_PERIODE,
                                         self.tr('Start time'), "-1"))
        self.addParameter(
            QgsProcessingParameterString(self.FIN_PERIODE, self.tr('End time'),
                                         "-1"))
        self.addParameter(
            QgsProcessingParameterString(self.CALENDRIER, self.tr('Calendar'),
                                         "-1"))
        self.addParameter(
            QgsProcessingParameterField(
                self.TEXTE_ARC,
                self.tr('Arc label'),
                parentLayerParameterName=self.INPUT,
                type=QgsProcessingParameterField.String))
        self.addParameter(
            QgsProcessingParameterExpression(self.MODE, self.tr('Mode'), "'m'",
                                             self.INPUT))
        # We add a feature sink in which to store our processed features (this
        # usually takes the form of a newly created vector layer when the
        # algorithm is run in QGIS).
        self.addParameter(
            QgsProcessingParameterFileDestination(self.OUTPUT,
                                                  self.tr('Musliw network'),
                                                  '*.txt'))
Example #24
0
    def initAlgorithm(self, config=None):
        self.addParameter(
            QgsProcessingParameterFeatureSource(self.INPUT,
                                                self.tr('Input layer')))
        self.addParameter(
            QgsProcessingParameterExpression(
                self.GROUP_BY,
                self.tr('Group by expression (NULL to group all features)'),
                defaultValue='NULL',
                optional=False,
                parentLayerParameterName=self.INPUT))

        class ParameterAggregates(QgsProcessingParameterDefinition):
            def __init__(self,
                         name,
                         description,
                         parentLayerParameterName='INPUT'):
                super().__init__(name, description)
                self._parentLayerParameter = parentLayerParameterName

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

            def type(self):
                return 'aggregates'

            def checkValueIsAcceptable(self, value, context=None):
                if not isinstance(value, list):
                    return False
                for field_def in value:
                    if not isinstance(field_def, dict):
                        return False
                    if not field_def.get('input', False):
                        return False
                    if not field_def.get('aggregate', False):
                        return False
                    if not field_def.get('name', False):
                        return False
                    if not field_def.get('type', False):
                        return False
                return True

            def valueAsPythonString(self, value, context):
                return str(value)

            def asScriptCode(self):
                raise NotImplementedError()

            @classmethod
            def fromScriptCode(cls, name, description, isOptional, definition):
                raise NotImplementedError()

            def parentLayerParameter(self):
                return self._parentLayerParameter

        self.addParameter(
            ParameterAggregates(self.AGGREGATES,
                                description=self.tr('Aggregates')))
        self.parameterDefinition(self.AGGREGATES).setMetadata({
            'widget_wrapper':
            'processing.algs.qgis.ui.AggregatesPanel.AggregatesWidgetWrapper'
        })

        self.addParameter(
            QgsProcessingParameterFeatureSink(self.OUTPUT,
                                              self.tr('Aggregated')))
Example #25
0
 def initAlgorithm(
         self,
         configuration,
         p_str=None,
         Any=None,
         *args,
         **kwargs
 ):
     self.addParameter(
         QgsProcessingParameterString(
             REPORT_HANDLER_INPUT_NAME,
             self.tr('Input validation report'),
             defaultValue='{}',
             multiLine=True
         )
     )
     self.addParameter(
         QgsProcessingParameterEnum(
             self.INPUT_REPORT_FORMAT,
             self.tr('Report format'),
             options=[i[0] for i in self.REPORT_FORMATS],
             defaultValue=self.REPORT_FORMATS[0][0],
         )
     )
     self.addParameter(
         QgsProcessingParameterExpression(
             self.INPUT_SENDER_ADDRESS,
             self.tr('Sender email'),
             defaultValue=f'@{QGIS_VARIABLE_PREFIX}_sender_address',
         )
     )
     self.addParameter(
         QgsProcessingParameterExpression(
             self.INPUT_SENDER_PASSWORD,
             self.tr('Sender password'),
             defaultValue=f'@{QGIS_VARIABLE_PREFIX}_sender_password',
         )
     )
     self.addParameter(
         QgsProcessingParameterExpression(
             self.INPUT_RECIPIENTS,
             self.tr('Recipients'),
             defaultValue=(
                 f'string_to_array(@{QGIS_VARIABLE_PREFIX}_recipients)'),
         )
     )
     self.addParameter(
         QgsProcessingParameterExpression(
             self.INPUT_SMTP_HOST,
             self.tr('SMTP host'),
             defaultValue=(
                 f'coalesce(@{QGIS_VARIABLE_PREFIX}_smtp_host, '
                 f'\'smtp.gmail.com\')'
             ),
         )
     )
     self.addParameter(
         QgsProcessingParameterExpression(
             self.INPUT_SMTP_PORT,
             self.tr('SMTP port'),
             defaultValue=(
                 f'coalesce(@{QGIS_VARIABLE_PREFIX}_smtp_port, 587)'),
         )
     )
     self.addParameter(
         QgsProcessingParameterExpression(
             self.INPUT_SMTP_SECURE_CONNECTION,
             self.tr('Connection security method to use when sending email'),
             defaultValue=(
                 f'coalesce(@{QGIS_VARIABLE_PREFIX}_smtp_secure_connection,'
                 f'\'starttls\')'
             ),
         )
     )
     self.addOutput(
         QgsProcessingOutputBoolean(
             self.OUTPUT_MAIL_SENT, 'Was the email sent or not')
     )
Example #26
0
    def initAlgorithm(self, config):
        """
        Here we define the inputs and output of the algorithm, along
        with some other properties.
        """
        #e=iface.mapCanvas().extent()
        #etendue=str(tuple([e.xMinimum(),e.xMaximum(), e.yMinimum(), e.yMaximum()]))[1:-1]

        self.addParameter(
            QgsProcessingParameterVectorLayer(self.RESEAU, self.tr('Network'),
                                              [QgsProcessing.TypeVectorLine]))
        self.addParameter(
            QgsProcessingParameterExtent(
                self.FENETRE,
                self.tr('Window'),
                #etendue
            ))
        self.addParameter(
            QgsProcessingParameterExpression(self.COUT_I, self.tr('i-cost'),
                                             None, self.RESEAU))
        self.addParameter(
            QgsProcessingParameterExpression(self.COUT_J, self.tr('j-cost'),
                                             None, self.RESEAU))
        self.addParameter(
            QgsProcessingParameterExpression(self.SENS, self.tr('Direction'),
                                             "'1'", self.RESEAU))
        self.addParameter(
            QgsProcessingParameterExpression(self.DIFFUSION, self.tr('Spread'),
                                             "'3'", self.RESEAU))
        self.addParameter(
            QgsProcessingParameterExpression(self.TRAVERSABILITE,
                                             self.tr('Impassibility'), "'3'",
                                             self.RESEAU))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.NB_PIXELS_X,
                self.tr('Pixels nb x'),
                type=QgsProcessingParameterNumber.Integer,
                defaultValue=200))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.NB_PIXELS_Y,
                self.tr('Pixels nb y'),
                type=QgsProcessingParameterNumber.Integer,
                defaultValue=200))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.TAILLE_PIXEL_X,
                self.tr('Pixel size x'),
                type=QgsProcessingParameterNumber.Double,
                defaultValue=-1.0))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.TAILLE_PIXEL_Y,
                self.tr('Pixel size y'),
                type=QgsProcessingParameterNumber.Double,
                defaultValue=-1.0))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.DECIMALES,
                self.tr('Decimals'),
                type=QgsProcessingParameterNumber.Integer,
                defaultValue=5))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.RAYON,
                self.tr('Radius(m)'),
                type=QgsProcessingParameterNumber.Double,
                defaultValue=500.0))
        self.addParameter(
            QgsProcessingParameterExpression(self.VITESSE_DIFFUSION,
                                             self.tr('Spread speed'), '4.0',
                                             self.RESEAU))
        self.addParameter(
            QgsProcessingParameterBoolean(self.INTRAVERSABLE,
                                          self.tr('Impassable?'), False))
        self.addParameter(
            QgsProcessingParameterExpression(self.IND_VALUES,
                                             self.tr('Individual values'),
                                             "'.'", self.RESEAU))
        self.addParameter(
            QgsProcessingParameterRasterDestination(self.RESULTAT,
                                                    self.tr('Raster file')))
Example #27
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'),
                
            )
        )


        self.addParameter(
            QgsProcessingParameterExpression(
                self.EXISTANT,
                self.tr('Field'),
                parentLayerParameterName=self.INPUT,
                optional=False
                
            )
        )        

        self.addParameter(
            QgsProcessingParameterEnum(
                self.TYPE,
                self.tr('Type'),
                options=self.types_data,
                defaultValue=0
            )
        )
        self.addParameter(
            QgsProcessingParameterNumber(
                self.TAILLE,
                self.tr('Size'),
                QgsProcessingParameterNumber.Integer,
                defaultValue=255,
                minValue=1,
                maxValue=20
                
            )
        )
        self.addParameter(
            QgsProcessingParameterNumber(
                self.PRECISION,
                self.tr('Precision'),
                QgsProcessingParameterNumber.Integer,
                defaultValue=15,
                minValue=0,
                maxValue=15

            )
        )        

        self.addParameter(
            QgsProcessingParameterExpression(
                self.FILTRE,
                self.tr('Filter'),
                None,
                self.INPUT,
                optional=True
                
                
            )
        )
        # We add a feature sink in which to store our processed features (this
        # usually takes the form of a newly created vector layer when the
        # algorithm is run in QGIS).
        self.addParameter(
            QgsProcessingParameterExpression(
                self.FORMULE,
                self.tr('Formula'),
                None,
                self.INPUT
                
                
            )
        )
Example #28
0
    def initAlgorithm(self, config, label=True):
        if DEBUG_MODE:
            logMessage("initAlgorithm(): {}".format(self.__class__.__name__),
                       False)

        qgis_iface = qgis.utils.plugins["Qgis2threejs"].iface
        self.controller = Q3DController(qgis_iface)
        self.controller.settings.loadSettingsFromFile(None)

        self.addParameter(
            QgsProcessingParameterFolderDestination(
                self.OUTPUT, self.tr("Output Directory")))

        self.addParameter(
            QgsProcessingParameterVectorLayer(
                self.INPUT, self.tr("Coverage Layer"),
                [QgsProcessing.TypeVectorAnyGeometry]))

        self.addParameter(
            QgsProcessingParameterField(self.TITLE_FIELD,
                                        self.tr("Title Field"), None,
                                        self.INPUT,
                                        QgsProcessingParameterField.Any))

        self.addParameter(
            QgsProcessingParameterBoolean(self.CF_FILTER,
                                          self.tr("Current Feature Filter")))

        self.addAdvancedParameter(
            QgsProcessingParameterEnum(
                self.SCALE, self.tr("Scale Mode"),
                ["Fit to Geometry", "Fixed Scale (based on map canvas)"]))

        self.addAdvancedParameter(
            QgsProcessingParameterNumber(self.BUFFER,
                                         self.tr("Buffer (%)"),
                                         defaultValue=10))

        self.addAdvancedParameter(
            QgsProcessingParameterNumber(self.TEX_WIDTH,
                                         self.tr("Texture base width (px)"),
                                         defaultValue=1024))

        self.addAdvancedParameter(
          QgsProcessingParameterNumber(
            self.TEX_HEIGHT,
            self.tr('Texture base height (px)\n'\
                    '    Leave this zero to respect aspect ratio of buffered geometry bounding box (in "Fit to Geometry" scale mode)\n'\
                    '    or map canvas (in "Fixed scale" scale mode).'),
            defaultValue=0
            #,optional=True
          )
        )

        if label:
            self.addAdvancedParameter(
                QgsProcessingParameterExpression(
                    self.HEADER, self.tr("Header Label"), "'{}'".format(
                        self.controller.settings.headerLabel().replace(
                            "'", "''")), self.INPUT))

            self.addAdvancedParameter(
                QgsProcessingParameterExpression(
                    self.FOOTER, self.tr("Footer Label"), "'{}'".format(
                        self.controller.settings.footerLabel().replace(
                            "'", "''")), self.INPUT))

        self.addAdvancedParameter(
            QgsProcessingParameterFile(
                self.SETTINGS,
                self.tr('Export Settings File (.qto3settings)'),
                extension="qto3settings",
                optional=True))
    def initAlgorithm(self, config):
        """
        Here we define the inputs and output of the algorithm, along
        with some other properties.
        """

        # We add the input vector features source. It can have any kind of
        # geometry.
        self.addParameter(
            QgsProcessingParameterVectorLayer(
                self.INPUT_LAYER,
                self.tr('Input Vector Layer'),
                [QgsProcessing.TypeVectorAnyGeometry]
            )
        )
        self.addParameter(
            QgsProcessingParameterString(
                 self.BASE_URL,
                 self.tr('WMS-Base-URL'),
                 defaultValue='',
                 optional=False
            )
        )
        self.addParameter(
            QgsProcessingParameterString(
                 self.LAYERS,
                 self.tr('Layers (layer1,layer2,...)'),
                 defaultValue='',
                 optional=False
            )
        )
        self.addParameter(
            QgsProcessingParameterString(
                 self.STYLE_NAME,
                 self.tr('Style names'),
                 defaultValue='',
                 optional=True
            )
        )
        self.addParameter(
            QgsProcessingParameterString(
                 self.WMS_VERSION,
                 self.tr('Wms Version'),
                 defaultValue='1.1.1',
                 optional=False
            )
        )
  
        self.addParameter(QgsProcessingParameterEnum(
            self.IMAGE_FORMAT,
            self.tr('Image Format'),
            options=self.imageFormats, defaultValue=0))

        self.addParameter(
            QgsProcessingParameterNumber(
                self.PIXEL_SIZE,
                self.tr('spatial resolution (pixel size)'),
                type=QgsProcessingParameterNumber.Double,
                defaultValue=10,
                optional=False,
                #minValue=0,
                #maxValue=100
                
            )
        )

        # self.addParameter(
            # QgsProcessingParameterField(
                # self.FILENAME_FIELD,
                # self.tr('Field with Filenames'),
                # None,
                # self.INPUT_LAYER,
                # QgsProcessingParameterField.Any,
                # optional=False

            # )
        # )
        self.addParameter(
            QgsProcessingParameterExpression(
                self.FILENAME_FIELD,
                self.tr('Filenames'),
                parentLayerParameterName=self.INPUT_LAYER
            )
        )
      
        self.addParameter(
            QgsProcessingParameterFolderDestination(
                self.DOWNLOAD_DIR,
                self.tr('Download Directory')
               
            )
        )
        
        self.addParameter(
            QgsProcessingParameterFeatureSink(
                self.OUTPUT,
                self.tr('Features With File Link')
            )
        )
    def initAlgorithm(self, config=None):
        """
        Here we define the inputs and output of the algorithm, along
        with some other properties.
        """
        #print("initAlgorithm")
        # We add the input vector features source. It can have any kind of
        # geometry.
        self.addParameter(
            QgsProcessingParameterVectorLayer(
                self.INPUTPOINTLAYER,
                self.tr('Point Layer'),
                [QgsProcessing.TypeVectorPoint]
            )
        )        
        self.addParameter(
            QgsProcessingParameterVectorLayer(
                self.INPUTBASELINE,
                self.tr('Profile Multi Baseline Layer'),
                [QgsProcessing.TypeVectorLine]
            )
        )
        self.addParameter(
            QgsProcessingParameterNumber(
                self.INPUTBUFFER,
                self.tr('Baseline Buffer(used if no points selection)'),
                type=QgsProcessingParameterNumber.Double,
                defaultValue=100,
                optional=False,
                minValue=0,
                maxValue=10000
                
            )
        )
        self.addParameter(
            QgsProcessingParameterRasterLayer(
                self.INPUTRASTER,
                self.tr('Elevation Raster'),
                None, 
                False
            )
        )
        self.addParameter(
            QgsProcessingParameterNumber(
                self.INPUTZFACTOR,
                self.tr('Z-Factor / Ueberhoehung'),
                type=QgsProcessingParameterNumber.Double,
                defaultValue=10,
                optional=False,
                minValue=0,
                maxValue=100
                
            )
        )
        self.addParameter(
            QgsProcessingParameterField(
                self.INPUTZFIELD,
                self.tr('Z-Value Field'),
                None,
                self.INPUTPOINTLAYER,
                QgsProcessingParameterField.Numeric,
                optional=True
            )
        )
        self.addParameter(
            QgsProcessingParameterField(
                self.INPUTZFIELDSTART,
                self.tr('Depth (Start)'),
                None,
                self.INPUTPOINTLAYER,
                QgsProcessingParameterField.Numeric,
                optional=True
            )
        )
        self.addParameter(
            QgsProcessingParameterField(
                self.INPUTZFIELDEND,
                self.tr('Depth Field (End)'),
                None,
                self.INPUTPOINTLAYER,
                QgsProcessingParameterField.Numeric,
                optional=True
            )
        )

        #fieldRichtungHz
        #fieldAzimut

        self.addParameter(
            QgsProcessingParameterExpression(
                self.SOURCE_BASLINE_ID,
                self.tr('Field with baseline primary key (must be unique!)'),
                parentLayerParameterName=self.INPUTBASELINE
            )
        )

        # We add a feature sink in which to store our processed features (this
        # usually takes the form of a newly created vector layer when the
        # algorithm is run in QGIS).
        self.addParameter(
            QgsProcessingParameterFeatureSink(
                self.OUTPUT,
                self.tr('Profil_Points')
            )
        )