コード例 #1
0
    def initAlgorithm(self, config=None):
        """
        Here we define the inputs and output of the algorithm, along
        with some other properties.
        """

        self.addParameter(
            QgsProcessingParameterVectorLayer(
                self.FLOOD_POLYGON_INPUT,
                self.tr('Flood Extent')
                # [QgsProcessing.TypeVectorPolygon]
            ))

        self.addParameter(
            QgsProcessingParameterRasterLayer(
                self.DEM_INPUT, self.tr('Digital Elevation Model')))

        # 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(
            QgsProcessingParameterFolderDestination(
                self.FLOOD_DEPTH_OUTPUT, self.tr('Output Directory')))
コード例 #2
0
    def initAlgorithm(self, config=None):
        self.methods = [
            self.tr('Number of selected features'),
            self.tr('Percentage of selected features')
        ]

        self.addParameter(
            QgsProcessingParameterVectorLayer(self.INPUT,
                                              self.tr('Input layer')))
        self.addParameter(
            QgsProcessingParameterField(self.FIELD, self.tr('ID field'), None,
                                        self.INPUT))
        self.addParameter(
            QgsProcessingParameterEnum(self.METHOD, self.tr('Method'),
                                       self.methods, False, 0))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.NUMBER, self.tr('Number/percentage of selected features'),
                QgsProcessingParameterNumber.Integer, 10, False, 0.0,
                999999999999.0))
        self.addOutput(
            QgsProcessingOutputVectorLayer(
                self.OUTPUT, self.tr('Selected (stratified random)')))
コード例 #3
0
 def initAlgorithm(self, config=None):
     self.addParameter(
         QgsProcessingParameterVectorLayer(
             name=self.INPUT,
             description=self.tr('Input Vector Layer'),
             types=[QgsProcessing.TypeVectorPolygon],
             defaultValue=None,
             optional=False)
     )
     self.addParameter(
         QgsProcessingParameterBoolean(
             name=self.M2,
             description=self.tr('Square Meters'),
             optional=False,
             defaultValue=self.m2)
     )
     self.addParameter(
         QgsProcessingParameterBoolean(
             name=self.KM2,
             description=self.tr('Square Kilometers'),
             optional=False,
             defaultValue=self.km2)
     )
コード例 #4
0
    def initAlgorithm(self, config):
        """
        Parameter setting.
        """
        self.addParameter(
            QgsProcessingParameterMultipleLayers(
                self.INPUTLAYERS, self.tr('Coverage Polygon Layers'),
                QgsProcessing.TypeVectorPolygon))

        self.addParameter(
            QgsProcessingParameterBoolean(
                self.SELECTED, self.tr('Process only selected features')))

        self.addParameter(
            QgsProcessingParameterVectorLayer(
                self.FRAMELAYER,
                self.tr('Frame Layer'), [QgsProcessing.TypeVectorPolygon],
                optional=True))

        self.addParameter(
            QgsProcessingParameterFeatureSink(
                self.FLAGS,
                self.tr('{0} Flags').format(self.displayName())))
コード例 #5
0
 def initAlgorithm(self, config=None):
     self.addParameter(
         QgsProcessingParameterVectorLayer(
             self.INPUT_LAYER, 'Input layer',
             [QgsProcessing.TypeVectorPolygon]))
     self.addParameter(
         QgsProcessingParameterField(self.FIELDS,
                                     'Attributes to keep',
                                     None,
                                     self.INPUT_LAYER,
                                     allowMultiple=True))
     self.addParameter(
         QgsProcessingParameterString(self.SCHEMA, 'Output schema',
                                      'public'))
     self.addParameter(
         QgsProcessingParameterString(self.TABLE, 'Output table name',
                                      'validlayer'))
     self.addParameter(
         QgsProcessingParameterString(
             self.OPTIONS,
             'Additional creation options (see ogr2ogr manual)',
             '',
             optional=True))
コード例 #6
0
    def initAlgorithm(self, config=None):
        self.i18n_operators = ['=',
                               '!=',
                               '>',
                               '>=',
                               '<',
                               '<=',
                               self.tr('begins with'),
                               self.tr('contains'),
                               self.tr('is null'),
                               self.tr('is not null'),
                               self.tr('does not contain')
                               ]

        self.addParameter(QgsProcessingParameterVectorLayer(self.INPUT, self.tr('Input layer'), types=[QgsProcessing.TypeVector]))

        self.addParameter(QgsProcessingParameterField(self.FIELD,
                                                      self.tr('Selection attribute'), parentLayerParameterName=self.INPUT))
        self.addParameter(QgsProcessingParameterEnum(self.OPERATOR,
                                                     self.tr('Operator'), self.i18n_operators))
        self.addParameter(QgsProcessingParameterString(self.VALUE, self.tr('Value')))

        self.addOutput(QgsProcessingOutputVectorLayer(self.OUTPUT, self.tr('Selected (attribute)')))
コード例 #7
0
 def initAlgorithm(self, config=None):
     self.addParameter(
         QgsProcessingParameterVectorLayer(
             'vectorwithclassificationandreference',
             'Vector with reference data',
             types=[QgsProcessing.TypeVector],
             defaultValue=None))
     #self.addParameter(QgsProcessingParameterVectorLayer('vectorwithclassificationandreference', 'Vector with classification', types=[QgsProcessing.TypeVector], defaultValue='C:/Users/Gorica/Documents/Teaching_2020_2021/Lab/Sampling points/stratified_random_sampling1_classified.gpkg'))
     self.addParameter(
         QgsProcessingParameterField(
             'reference',
             'Reference data column',
             type=QgsProcessingParameterField.Numeric,
             parentLayerParameterName='vectorwithclassificationandreference',
             allowMultiple=False,
             defaultValue=None))
     self.addParameter(
         QgsProcessingParameterString('Newfieldname',
                                      'Name of new field for raster values',
                                      multiLine=False,
                                      defaultValue='Thematic_class'))
     self.addParameter(
         QgsProcessingParameterRasterLayer('raster',
                                           'Raster to be sampled',
                                           defaultValue=None))
     self.addParameter(
         QgsProcessingParameterFileDestination(
             'Outputfolder',
             'Error matrix output path',
             fileFilter='CSV Files (*.csv)',
             defaultValue=None))
     self.addParameter(
         QgsProcessingParameterFeatureSink(
             'Sampled',
             'Sampled',
             type=QgsProcessing.TypeVectorAnyGeometry,
             createByDefault=True))  #, defaultValue=None))
コード例 #8
0
    def initAlgorithm(self, config=None):
        self.addParameter(
            QgsProcessingParameterRasterLayer(
                self.DINF_FLOWDIR, self.tr("D-infinity flow directions")))
        self.addParameter(
            QgsProcessingParameterRasterLayer(self.TRANSPORT_SUPPLY,
                                              self.tr("Transport supply")))
        self.addParameter(
            QgsProcessingParameterRasterLayer(self.TRANSPORT_CAPACITY,
                                              self.tr("Transport capacity")))
        self.addParameter(
            QgsProcessingParameterRasterLayer(self.INPUT_CONCENTRATION,
                                              self.tr("Input concentration"),
                                              optional=True))
        self.addParameter(
            QgsProcessingParameterVectorLayer(
                self.OUTLETS,
                self.tr("Outlets"),
                types=[QgsProcessing.TypeVectorPoint],
                optional=True))
        self.addParameter(
            QgsProcessingParameterBoolean(
                self.EDGE_CONTAMINATION,
                self.tr("Check for edge contamination"),
                defaultValue=False))

        self.addParameter(
            QgsProcessingParameterRasterDestination(
                self.TRANLIM_ACCUM, self.tr("Transport limited accumulation")))
        self.addParameter(
            QgsProcessingParameterRasterDestination(self.DEPOSITION,
                                                    self.tr("Deposition")))
        self.addParameter(
            QgsProcessingParameterRasterDestination(
                self.OUTPUT_CONCENTRATION,
                self.tr("Output concentration"),
                optional=True))
    def initAlgorithm(self, config=None):
        """
        Here we define the inputs and output of the algorithm, along
        with some other properties.
        """

        self.addParameter(
            QgsProcessingParameterDistance(self.INPUT_DISTANCE,
                                           self.tr('Distance of the buffer')))
        self.addParameter(
            QgsProcessingParameterRasterLayer(self.INPUT_DEM,
                                              self.tr('Input DEM'),
                                              defaultValue=None))
        self.addParameter(
            QgsProcessingParameterVectorLayer(self.INPUT_POINTS,
                                              self.tr('Input points'),
                                              [QgsProcessing.TypeVectorPoint]))
        self.addParameter(
            QgsProcessingParameterVectorDestination(
                self.OUTPUT_SUMMIT,
                self.tr('Local summits near the points of interest'),
                type=QgsProcessing.TypeVectorAnyGeometry,
                createByDefault=True,
                defaultValue=None))
        self.addParameter(
            QgsProcessingParameterField(
                self.INPUT_FIELD,
                self.tr("Unique ID field"),
                optional=True,
                type=QgsProcessingParameterField.Any,
                parentLayerParameterName=self.INPUT_POINTS,
                allowMultiple=False,
                defaultValue=None))
        self.addParameter(
            QgsProcessingParameterFolderDestination(
                self.OUTPUT_FOLDER,
                self.tr("Folder for intermediate results")))
コード例 #10
0
    def initAlgorithm(self, config=None):

        self.addParameter(
            QgsProcessingParameterFile(self.DBPATH,
                                       'Morpheo database',
                                       extension='sqlite'))

        self.addParameter(
            QgsProcessingParameterVectorLayer(self.WAY_LAYER, 'Ways layer',
                                              [QgsProcessing.TypeVectorLine]))

        # Options controlling ways
        self.addParameter(
            QgsProcessingParameterField(
                self.WAY_ATTRIBUTE,
                'Attribute for mesh structure',
                parentLayerParameterName=self.WAY_LAYER,
                type=QgsProcessingParameterField.String))

        self.addParameter(
            QgsProcessingParameterNumber(
                self.PERCENTILE,
                'The percentile for computing the mesh structure',
                minValue=1.,
                maxValue=99,
                defaultValue=5))

        self.addParameter(
            QgsProcessingParameterBoolean(
                self.USE_WAY, 'Use ways for computing mesh components', False))

        self.addParameter(
            QgsProcessingParameterMorpheoDestination(
                self.OUTPUT_MESH,
                "Mesh output",
                type=QgsProcessing.TypeVectorLine))
コード例 #11
0
    def initAlgorithm(self, config=None):
        self.addParameter(
            QgsProcessingParameterVectorLayer(self.INPUT,
                                              self.tr('Input Point Layer'),
                                              [QgsProcessing.TypeVectorPoint]))

        self.addParameter(
            QgsProcessingParameterNumber(
                self.BUFFER_REGION,
                self.tr('Buffer Region'),
                defaultValue=0.0,
                minValue=-0.0,
                type=QgsProcessingParameterNumber.Double,
                optional=True))

        self.addParameter(
            QgsProcessingParameterExtent(self.EXTENT,
                                         description=self.tr('Extent'),
                                         optional=True))

        self.addParameter(
            QgsProcessingParameterFeatureSink(self.OUTPUT,
                                              self.tr('ThiessenPolygons'),
                                              QgsProcessing.TypeVectorPolygon))
コード例 #12
0
 def initAlgorithm(self, config=None):
     self.addParameter(
         QgsProcessingParameterVectorLayer(
             name=self.INPUT,
             description=self.tr('Input Vector Layer'),
             types=[QgsProcessing.TypeVectorLine],
             defaultValue=None,
             optional=False))
     self.addParameter(
         QgsProcessingParameterBoolean(name=self.M,
                                       description=self.tr('Meters'),
                                       optional=False,
                                       defaultValue=self.m))
     self.addParameter(
         QgsProcessingParameterBoolean(name=self.KM,
                                       description=self.tr('Kilometers'),
                                       optional=False,
                                       defaultValue=self.km))
     self.addParameter(
         QgsProcessingParameterBoolean(
             name=self.NM,
             description=self.tr('Nautical Miles'),
             optional=False,
             defaultValue=self.nm))
コード例 #13
0
 def initAlgorithm(self, config=None):
     self.addParameter(
         QgsProcessingParameterFeatureSource(
             self.INPUT_POLYGONS, self.tr("Input polygon layer"),
             [QgsProcessing.TypeVectorPolygon]))
     self.addParameter(
         QgsProcessingParameterVectorLayer(
             self.INPUT_ADDITIONAL, self.tr("Additional input layer"),
             [QgsProcessing.TypeVectorAnyGeometry]))
     self.addParameter(
         QgsProcessingParameterField(
             self.VALUE_FIELD,
             self.tr("Attribute field"),
             parentLayerParameterName=self.INPUT_ADDITIONAL,
             type=0,
             optional=False))
     self.vals = [self.tr("Maximum"), self.tr("Minimum")]
     self.addParameter(
         QgsProcessingParameterEnum(self.M_VAL,
                                    self.tr("Select Value"),
                                    options=self.vals,
                                    defaultValue=0))
     self.methods = [
         self.tr('creating new selection'),
         self.tr('adding to current selection'),
         self.tr('removing from current selection'),
         self.tr('selecting within current selection')
     ]
     self.addParameter(
         QgsProcessingParameterEnum(self.METHOD,
                                    self.tr('Modify current selection by'),
                                    options=self.methods,
                                    defaultValue=0))
     self.addOutput(
         QgsProcessingOutputVectorLayer(self.OUTPUT,
                                        self.tr('Selected (attribute)')))
コード例 #14
0
    def initAlgorithm(self, config=None):
        self.addParameter(
            QgsProcessingParameterVectorLayer(
                'addresslayer',
                '住所レイヤ',
                types=[QgsProcessing.TypeVectorPolygon],
                defaultValue=None))
        self.addParameter(
            QgsProcessingParameterField(
                'addressfield',
                '住所フィールド',
                type=QgsProcessingParameterField.String,
                parentLayerParameterName='addresslayer',
                allowMultiple=False,
                defaultValue=None))

        #self.addParameter(QgsProcessingParameterFile('CSVfile', 'CSV file', behavior=QgsProcessingParameterFile.File, fileFilter='All Files(*.*)', defaultValue=None))
        self.addParameter(
            QgsProcessingParameterFile('CSVfile',
                                       '入力csvファイル指定',
                                       extension='csv'))

        self.addParameter(
            QgsProcessingParameterEnum('encode',
                                       'ENCODE',
                                       options=['SJIS', 'UTF-8'],
                                       allowMultiple=False,
                                       defaultValue=None))

        self.addParameter(
            QgsProcessingParameterVectorDestination(
                'GeojsonOutput',
                '出力geojsonファイル名',
                type=QgsProcessing.TypeVectorAnyGeometry,
                createByDefault=True,
                defaultValue=None))
コード例 #15
0
ファイル: SelectByAttribute.py プロジェクト: kahakra/QGIS
    def initAlgorithm(self, config=None):
        self.operators = ['=',
                          '≠',
                          '>',
                          '>=',
                          '<',
                          '<=',
                          self.tr('begins with'),
                          self.tr('contains'),
                          self.tr('is null'),
                          self.tr('is not null'),
                          self.tr('does not contain')
                          ]

        self.methods = [self.tr('creating new selection'),
                        self.tr('adding to current selection'),
                        self.tr('removing from current selection'),
                        self.tr('selecting within current selection')]

        self.addParameter(QgsProcessingParameterVectorLayer(self.INPUT,
                                                            self.tr('Input layer'),
                                                            types=[QgsProcessing.TypeVector]))
        self.addParameter(QgsProcessingParameterField(self.FIELD,
                                                      self.tr('Selection attribute'),
                                                      parentLayerParameterName=self.INPUT))
        self.addParameter(QgsProcessingParameterEnum(self.OPERATOR,
                                                     self.tr('Operator'), self.operators))
        self.addParameter(QgsProcessingParameterString(self.VALUE,
                                                       self.tr('Value'),
                                                       optional=True))
        self.addParameter(QgsProcessingParameterEnum(self.METHOD,
                                                     self.tr('Modify current selection by'),
                                                     self.methods,
                                                     0))

        self.addOutput(QgsProcessingOutputVectorLayer(self.OUTPUT, self.tr('Selected (attribute)')))
コード例 #16
0
    def initAlgorithm(self, config):
        """
        Parameter setting.
        """

        self.addParameter(
            QgsProcessingParameterVectorLayer(
                self.INPUT, self.tr('Input Polygon Layer'),
                [QgsProcessing.TypeVectorPolygon]))

        self.scales = [
            '1000k', '500k', '250k', '100k', '50k', '25k', '10k', '5k', '2k',
            '1k'
        ]

        self.addParameter(
            QgsProcessingParameterEnum(self.STOP_SCALE,
                                       self.tr('Desired scale'),
                                       options=self.scales,
                                       defaultValue=0))

        self.addParameter(
            QgsProcessingParameterFeatureSink(self.OUTPUT,
                                              self.tr('Created Frames')))
コード例 #17
0
 def initAlgorithm(self, config=None):
     self.addParameter(
         QgsProcessingParameterVectorLayer(
             self.INPUT,
             self.tr("Input"),
             types=[QgsProcessing.TypeVectorLine],
             defaultValue=None,
         ))
     self.addParameter(
         QgsProcessingParameterString(self.LAYER_NAME,
                                      self.tr("Layer name"),
                                      defaultValue=None))
     self.addParameter(
         QgsProcessingParameterRasterLayer(
             self.DEM,
             self.tr("Digital Elevation Model"),
             defaultValue=None))
     self.addParameter(
         QgsProcessingParameterBand(
             self.BAND,
             self.tr("Band number"),
             1,
             "RASTER",
         ))
コード例 #18
0
 def initAlgorithm(self, config=None):
     self.addParameter(
         QgsProcessingParameterMultipleLayers(
             'INPUT',
             'Input rasters',
             layerType=QgsProcessing.TypeRaster,
             defaultValue=None))
     self.addParameter(
         QgsProcessingParameterVectorLayer(
             'Masklayer',
             'Mask layer',
             types=[QgsProcessing.TypeVectorPolygon],
             defaultValue=None))
     param = QgsProcessingParameterFile(
         'OUTFOLDER',
         'Folder to store clipped rasters',
         behavior=QgsProcessingParameterFile.Folder,
         defaultValue=None,
         optional=True)
     param.setFlags(param.flags()
                    | QgsProcessingParameterDefinition.FlagAdvanced)
     self.addParameter(param, createOutput=True)
     self.addOutput(
         QgsProcessingOutputMultipleLayers('OUTPUT', 'Clipped rasters'))
コード例 #19
0
    def initAlgorithm(self, config):
        """
        Parameter setting.
        """
        self.addParameter(
            QgsProcessingParameterVectorLayer(
                self.INPUT,
                self.tr('Input layer'),
                [QgsProcessing.TypeVectorAnyGeometry]
            )
        )

        self.addParameter(
            QgsProcessingParameterBoolean(
                self.SELECTED,
                self.tr('Process only selected features')
            )
        )

        self.addOutput(QgsProcessingOutputVectorLayer(
            self.INPUT,
            self.tr('Original layer updated')
            )
        )
コード例 #20
0
    def initAlgorithm(self, config=None):
        self.addParameter(
            QgsProcessingParameterVectorLayer(self.INPUT,
                                              self.tr('Input Vector Layer'),
                                              [QgsProcessing.TypeVector]))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.MAX_DISTANCE,
                self.tr('Maximum Distance'),
                defaultValue=-1.0,
                minValue=-1.0,
                type=QgsProcessingParameterNumber.Double,
                optional=True))

        self.addParameter(
            QgsProcessingParameterExtent(self.EXTENT,
                                         description=self.tr('Extent'),
                                         optional=True))
        self.addParameter(
            QgsProcessingParameterNumber(
                self.CELL_SIZE,
                self.tr('Cell Size'),
                defaultValue=0.0,
                minValue=0.0,
                type=QgsProcessingParameterNumber.Double,
                optional=True))
        self.addParameter(
            QgsProcessingParameterEnum(self.RASTER_TYPE,
                                       self.tr('Raster Type'),
                                       self.RASTER_TYPES,
                                       0,
                                       optional=True))

        self.addParameter(
            QgsProcessingParameterRasterDestination(
                self.OUTPUT, self.tr('Distance raster')))
コード例 #21
0
    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(
            QgsProcessingParameterNumber(
                self.TOLERANCE,
                self.tr('Angular tolerance in decimal degrees'),
                minValue=0,
                defaultValue=0.1,
                type=QgsProcessingParameterNumber.Double))

        self.addParameter(
            QgsProcessingParameterFeatureSink(
                self.FLAGS,
                self.tr('{0} Flags').format(self.displayName())))
コード例 #22
0
    def initAlgorithm(self, config):
        """
        Parameter setting.
        """
        self.addParameter(
            QgsProcessingParameterVectorLayer(
                self.INPUT, self.tr('Input layer'), [
                    QgsProcessing.TypeVectorLine,
                    QgsProcessing.TypeVectorPolygon
                ]))

        self.addParameter(
            QgsProcessingParameterBoolean(
                self.SELECTED, self.tr('Process only selected features')))

        self.addParameter(
            QgsProcessingParameterDistance(self.SEARCH_RADIUS,
                                           self.tr('Search Radius'),
                                           defaultValue=1.0))

        self.addParameter(
            QgsProcessingParameterFeatureSink(
                self.FLAGS,
                self.tr('{0} Flags').format(self.displayName())))
コード例 #23
0
 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(
         QgsProcessingParameterNumber(self.MIN_AREA,
                                      self.tr('Max dissolve area'),
                                      minValue=0,
                                      optional=True))
     self.addParameter(
         QgsProcessingParameterField(self.ATTRIBUTE_BLACK_LIST,
                                     self.tr('Fields to ignore'),
                                     None,
                                     'INPUT',
                                     QgsProcessingParameterField.Any,
                                     allowMultiple=True,
                                     optional=True))
     self.addParameter(
         QgsProcessingParameterBoolean(self.IGNORE_VIRTUAL_FIELDS,
                                       self.tr('Ignore virtual fields'),
                                       defaultValue=True))
     self.addParameter(
         QgsProcessingParameterBoolean(self.IGNORE_PK_FIELDS,
                                       self.tr('Ignore primary key fields'),
                                       defaultValue=True))
     self.addOutput(
         QgsProcessingOutputVectorLayer(
             self.OUTPUT,
             self.tr('Original layer with dissolved polygons')))
コード例 #24
0
 def initAlgorithm(self, config=None):
     """
     Here we define the inputs and output of the algorithm, along
     with some other properties.
     """
     self.addParameter(
         QgsProcessingParameterVectorLayer(
             self.INPUT, self.tr('Fichier vectoriel'),
             [QgsProcessing.TypeVectorAnyGeometry]))
     self.addParameter(
         QgsProcessingParameterField(self.INSEE_CODE, 'Code INSEE', '',
                                     self.INPUT))
     self.addParameter(
         QgsProcessingParameterField(self.COMMUNE_NAME, 'Nom', '',
                                     self.INPUT))
     self.addParameter(
         QgsProcessingParameterNumber(
             name=self.EPSG_CODE,
             description=self.tr('Code EPSG'),
             type=QgsProcessingParameterNumber.Integer,
             defaultValue=2154))
     self.addOutput(
         QgsProcessingOutputMultipleLayers(self.OUTPUT_LAYERS,
                                           self.tr('Output layers')))
コード例 #25
0
 def initAlgorithm(self, config):
     """
     Parameter setting.
     """
     self.addParameter(
         QgsProcessingParameterVectorLayer(
             self.INPUT,
             self.tr('Input layer'),
             [QgsProcessing.TypeVectorAnyGeometry]
         )
     )
     self.addParameter(
         QgsProcessingParameterBoolean(
             self.SELECTED,
             self.tr('Process only selected features')
         )
     )
     self.addParameter(
         QgsProcessingParameterBoolean(
             self.TYPE,
             self.tr('Fix input geometries'),
             defaultValue=False
         )
     )
     self.addParameter(
         QgsProcessingParameterFeatureSink(
             self.FLAGS,
             self.tr('{0} Flags').format(self.displayName())
         )
     )
     self.addOutput(
         QgsProcessingOutputVectorLayer(
             self.OUTPUT,
             self.tr('Original layer (has fixed geometries if fix mode is chosen)')
         )
     )
コード例 #26
0
    def initAlgorithm(self, config=None):
        self.addParameter(QgsProcessingParameterRasterLayer(self.DINF_FLOWDIR,
                                                            self.tr("D-infinity flow directions")))
        self.addParameter(QgsProcessingParameterRasterLayer(self.DECAY_MULTIPLIER,
                                                            self.tr("Decay multiplier")))
        self.addParameter(QgsProcessingParameterRasterLayer(self.DISTURBANCE_INDICATOR,
                                                            self.tr("Disturbance indicator")))
        self.addParameter(QgsProcessingParameterRasterLayer(self.RUNOFF_WEIGHT,
                                                            self.tr("Effective runoff weight")))
        self.addParameter(QgsProcessingParameterVectorLayer(self.OUTLETS,
                                                            self.tr("Outlets"),
                                                            types=[QgsProcessing.TypeVectorPoint],
                                                            optional=True))
        self.addParameter(QgsProcessingParameterNumber(self.CONCENTRATION_THRESHOLD,
                                                       self.tr("Concentration threshold"),
                                                       QgsProcessingParameterNumber.Double,
                                                       1,
                                                       True))
        self.addParameter(QgsProcessingParameterBoolean(self.EDGE_CONTAMINATION,
                                                        self.tr("Check for edge contamination"),
                                                        defaultValue=False))

        self.addParameter(QgsProcessingParameterRasterDestination(self.CONCENTRATION,
                                                                  self.tr("Concentration")))
コード例 #27
0
 def initAlgorithm(self, config=None):
     self.addParameter(QgsProcessingParameterVectorLayer(self.INPUT,
                                                         self.tr('Input Layer'),
                                                         [QgsProcessing.TypeVectorPolygon, QgsProcessing.TypeVectorPoint, QgsProcessing.TypeVectorLine]))
     self.addOutput(QgsProcessingOutputVectorLayer(self.OUTPUT, self.tr('Indexed layer')))
コード例 #28
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_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)
コード例 #29
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)
コード例 #30
0
	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. 
		self.addParameter(
			QgsProcessingParameterVectorLayer(
				self.INPUT,
				self.tr('Input layer'),
				[QgsProcessing.TypeVectorPolygon]
			)
		)

		# 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 layer')
			)
		)
		
		# Add barrier source. It can have any kind of
		# geometry.
		self.addParameter(
			QgsProcessingParameterVectorLayer(
				self.BARRIER,
				self.tr('Barrier layer'),
				[QgsProcessing.TypeVectorAnyGeometry],
				optional = True
			)
		)
		
		# Add SEARCH_DIST
		self.addParameter(
			QgsProcessingParameterDistance(
				self.SEARCH_DIST,
				self.tr('Distance for aggregation'),
				500,
				'INPUT'
			)
		)

		# Add SIMPLIFY_DIST
		self.addParameter(
			QgsProcessingParameterDistance(
				self.SIMPLIFY_DIST,
				self.tr('Simplify input polygons (reduces processing time)'),
				1,
				'INPUT'
			)
		)

		# Add DISSOLVE_WITH_INPUT
		self.addParameter(
			QgsProcessingParameterBoolean(
				self.DISSOLVE_WITH_INPUT,
				self.tr('Dissolve result with input layer'),
				True
			)
		)