Esempio n. 1
0
    def processAlgorithm(self, progress):

        # Get parameters
        input_filename = self.getParameterValue(self.INPUT_LAYER)
        radius = self.getParameterValue(self.RADIUS_FIELD)
        export_radius = self.getParameterValue(self.RADIUS_EXPORT)
        export_centroid = self.getParameterValue(self.CENTROID_EXPORT)
        envelope_layer_field = self.getParameterValue(self.ENVELOPE_LAYER)
        output = self.getOutputValue(self.OUTPUT_LAYER)

        #vector_layer = dataobjects.getObjectFromUri(input_filename)
        vector_layer = QgsProcessingUtils.mapLayerFromStrong(input_filename)

        # If we use a mask, envelope
        vector_layer_envelope_index = None
        if envelope_layer_field is not None:
            #vector_layer_envelope = dataobjects.getObjectFromUri(envelope_layer_field)
            vector_layer_envelope = QgsProcessingUtils.mapLayerFromStrong(
                envelope_layer_field)
            vector_layer_envelope_index = LayerIndex(vector_layer_envelope)

        settings = QSettings()
        system_encoding = settings.value('/UI/encoding', 'System')
        provider = vector_layer.dataProvider()
        fields = provider.fields()

        if export_radius:
            fields.append(QgsField(u"Radius", QVariant.Int))

        if export_centroid:
            fields.append(QgsField(u"X centroid", QVariant.Int))
            fields.append(QgsField(u"Y centroid", QVariant.Int))

        writer = QgsVectorFileWriter(output, system_encoding, fields,
                                     QgsWkbTypes.Polygon, provider.crs())

        # Creating a algorithm with all these parameters.
        algorithm = Blur(radius, vector_layer_envelope_index, export_radius,
                         export_centroid)
        selection = vector_layer.selectedFeatures()
        #for feature in features(vector_layer):
        for feature in selection:
            feature = algorithm.blur(feature)
            writer.addFeature(feature)