[QGIS-it-user] QgsProcessingAlgorithm.initAlgorithm() is abstract and must be overridden

sto cercando di scrivere uno script per processing.

Potrei includervi anche tutto il listato ma sarebbe inutile, perchè anche tentando di fare girare la parte di script che trovate qui sotto ricevo un errore

WARNING NotImplementedError: QgsProcessingAlgorithm.initAlgorithm() is abstract and must be overridden

from qgis.PyQt.QtCore import QCoreApplication
from qgis.core import (
QgsProcessing,
QgsProcessingAlgorithm,
QgsProcessingParameterVectorLayer,
QgsProcessingParameterRasterLayer,
QgsProcessingParameterString,
QgsProcessingParameterEnum,
QgsProcessingOutputVectorLayer)
from qgis import processing

class mioScript(QgsProcessingAlgorithm):

2A

INPUT_RASTER = ‘INPUT_RASTER’
INPUT_VECTOR = ‘INPUT_VECTOR’
COLUMN_PREFIX = ‘COLUMN_PREFIX’
STATISTICS = ‘STATISTICS’

2B

def tr(self, string):
return QCoreApplication.translate(‘Processing’, string)

2C

def createInstance(self):
return mioScript()

2D

def name(self):
return ‘Zonal stat for stacks’

2E

def displayName(self):
return self.tr(‘Zonal stat for stacks’)

2F

def group(self):
return self.tr(‘RS’)

2G

def groupId(self):
return ‘rasteranalysis’

2H

def shortHelpString(self):
return self.tr(“This script perform statistics on multilayer stacks”)

Giacomo Fontanelli-2 wrote

WARNING NotImplementedError: QgsProcessingAlgorithm.initAlgorithm() is
abstract and must be overridden

Ciao Giacomo,
l'errore indica, come effettivamente si vede dal codice, che manca la
sottoclasse
def initAlgorithm(self, config=None)
in cui si definiscono i parametri di input e di output.

https://qgis.org/pyqgis/3.16/core/QgsProcessingAlgorithm.html#qgis.core.QgsProcessingAlgorithm.initAlgorithm
https://docs.qgis.org/3.16/en/docs/user_manual/processing/console.html#creating-scripts-and-running-them-from-the-toolbox

A presto.

Andrea

--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

Ciao Andrea

alla fine ho risolto riscrivendo completamente questa parte, che era quella che mi causava il problema ed è definita dentro la sottoclasse def initAlgorithm(self, config=None)

self.addParameter(QgsProcessingParameterEnum(
name = self.STAT,
description = self.tr(‘Statistics to calculate’),
options = [self.tr(“Number = 0”),
self.tr(“Sum = 1”),
self.tr(“Mean = 2”),
self.tr(“Median = 3”),
self.tr(“Dev std = 5”),
self.tr(“Minimum = 6”),
self.tr(“Maximum = 7”),
self.tr(“Range = 8”),
self.tr(“Minority = 9”),
self.tr(“Majourity = 10”),
self.tr(“Variety = 11”),
self.tr(“Variance = 12”)],
allowMultiple=True,
defaultValue=[2],
optional = False))

faccio ancora molta confusione ad interpretare le classi dal sito ufficiale API di qgis e mi trovo meglio a copia/incollare pezzi di codice dalla rete.

grazie

Il giorno lun 21 dic 2020 alle ore 22:03 Andrea Giudiceandrea <andreaerdna@libero.it> ha scritto:

Giacomo Fontanelli-2 wrote

WARNING NotImplementedError: QgsProcessingAlgorithm.initAlgorithm() is
abstract and must be overridden

Ciao Giacomo,
l’errore indica, come effettivamente si vede dal codice, che manca la
sottoclasse
def initAlgorithm(self, config=None)
in cui si definiscono i parametri di input e di output.

https://qgis.org/pyqgis/3.16/core/QgsProcessingAlgorithm.html#qgis.core.QgsProcessingAlgorithm.initAlgorithm
https://docs.qgis.org/3.16/en/docs/user_manual/processing/console.html#creating-scripts-and-running-them-from-the-toolbox

A presto.

Andrea


Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user