[QGIS-it-user] errore con l'algoritmo di processing qgis:zonalstatistics

Salve, sono oramai alla fine del mio script di processing

vi allego la parte finale sperando che riusciate a desumere la causa dell’errore che recita così

{ ‘POLYGONS’ : ‘/home/giacomo/Dropbox/Script/Python/PyGIS/zonalstats/prova/vec.shp’, ‘PREFIX’ : ‘b_’, ‘STACK’ : ‘/home/giacomo/Dropbox/Script/Python/PyGIS/zonalstats/prova/stack.tif’, ‘STAT’ : [2] }

TypeError: invalid result from ZonalStatisticsStack.prepareAlgorithm(), a ‘bool’ is expected not ‘NoneType’

la parte finale dello script è

for iBand in listBands:
processPar = {
“INPUT_RASTER”: parameters[self.STACK],
“RASTER_BAND”: iBand,
“INPUT_VECTOR”: parameters[self.POLYGONS],
“COLUMN_PREFIX”: ‘b_’,
“STATISTICS”: parameters[self.STAT]}

processOut = processing.run(
‘qgis:zonalstatistics’,
processPar,
is_child_algorithm = False,
context = context,
feedback = feedback)

return {self.INPUT: processOut[“INPUT”]}

GRAZIE

Ciao Giacomo,
non ci hai fatto sapere se hai risolto il tuo problema precedente...

A questo punto penso di sì, ma come?

Andrea

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

Giacomo Fontanelli-2 wrote

TypeError: invalid result from ZonalStatisticsStack.prepareAlgorithm(), a
'bool' is expected not 'NoneType'

prepareAlgorithm() deve sempre restituire un valore booleano, che sarà True
se la "preparazione" è andata bene, o False se non è possibile proseguire
con l'esecuzione dell'algorithmo.

https://qgis.org/pyqgis/3.10/core/QgsProcessingAlgorithm.html#qgis.core.QgsProcessingAlgorithm.prepareAlgorithm

https://github.com/qgis/QGIS/blob/release-3_10/python/plugins/processing/algs/qgis/ZonalStatistics.py#L116-L132

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

Grazie Andrea

quindi tu mi consigli di aggiungere una classe prepareAlgorithm al mio script?

Giacomo

Il giorno mer 13 gen 2021 alle ore 16:31 Andrea Giudiceandrea <andreaerdna@libero.it> ha scritto:

Giacomo Fontanelli-2 wrote

TypeError: invalid result from ZonalStatisticsStack.prepareAlgorithm(), a
‘bool’ is expected not ‘NoneType’

prepareAlgorithm() deve sempre restituire un valore booleano, che sarà True
se la “preparazione” è andata bene, o False se non è possibile proseguire
con l’esecuzione dell’algorithmo.

https://qgis.org/pyqgis/3.10/core/QgsProcessingAlgorithm.html#qgis.core.QgsProcessingAlgorithm.prepareAlgorithm

https://github.com/qgis/QGIS/blob/release-3_10/python/plugins/processing/algs/qgis/ZonalStatistics.py#L116-L132


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

Giacomo Fontanelli-2 wrote

quindi tu mi consigli di aggiungere una classe prepareAlgorithm al mio
script?

Purtroppo, non potendo leggere l'intero script, ho difficoltà ad immaginare
per quale di tanti motivi ottieni quell'errore. Comunque non sono esperto di
algoritmi di processing...

Secondo quanto c'è scritto nell'errore, prepareAlgorithm() in
ZonalStatisticsStack non sta restituendo alcun valore e questo genera
l'errore.

Inoltre nel pezzo di script che hai riportato, non so se l'indentazione che
io vedo nel messaggio è fedele all'originale... per esempio l'ultima
istruzione mi sembra indentata male.

A presto.

Andrea

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

Ciao Andrea

in principio io ero partito cercando di modificare lo script che mi hai segnalato in https://github.com/qgis/QGIS/blob/release-3_10/python/plugins/processing/algs/qgis/ZonalStatistics.py#L116-L132.

LA cosa curiosa è che copio pari pari quello script e provo a farlo girare nell’ambiente processing di QGIS mi da un errore alla linea

pluginPath = os.path.split(os.path.split(os.path.dirname(file))[0])[0]

Se tolgo quella linea e rilancio lo script semplicemente non mi viene visualizzata la GUI quindi l’esecuzione si fermali senza errori.

Se tolgo anche la sottoclasse prepareAlgorithm (linea 116) e lancio lo script riesco a vedere la GUI con lo spazio per selezionare il raster, il vettoriale, il prefisso per la banda etc, però ottengo l’errore di cui ti ho parlato ieri.

Credo che la soluzione sia nel saper utilizzare prepareAlgorithm nel modo giusto.

Grazie

Il giorno gio 14 gen 2021 alle ore 10:37 Andrea Giudiceandrea <andreaerdna@libero.it> ha scritto:

Giacomo Fontanelli-2 wrote

quindi tu mi consigli di aggiungere una classe prepareAlgorithm al mio
script?

Purtroppo, non potendo leggere l’intero script, ho difficoltà ad immaginare
per quale di tanti motivi ottieni quell’errore. Comunque non sono esperto di
algoritmi di processing…

Secondo quanto c’è scritto nell’errore, prepareAlgorithm() in
ZonalStatisticsStack non sta restituendo alcun valore e questo genera
l’errore.

Inoltre nel pezzo di script che hai riportato, non so se l’indentazione che
io vedo nel messaggio è fedele all’originale… per esempio l’ultima
istruzione mi sembra indentata male.

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

Ciao Andrea

ho trovato l’errore

bastava sostituire

def prepareAlgorithm

con

def processAlgorithm

Grazie mille

Il giorno gio 14 gen 2021 alle ore 12:36 Giacomo Fontanelli <giacomofontanelli76@gmail.com> ha scritto:

Ciao Andrea

in principio io ero partito cercando di modificare lo script che mi hai segnalato in https://github.com/qgis/QGIS/blob/release-3_10/python/plugins/processing/algs/qgis/ZonalStatistics.py#L116-L132.

LA cosa curiosa è che copio pari pari quello script e provo a farlo girare nell’ambiente processing di QGIS mi da un errore alla linea

pluginPath = os.path.split(os.path.split(os.path.dirname(file))[0])[0]

Se tolgo quella linea e rilancio lo script semplicemente non mi viene visualizzata la GUI quindi l’esecuzione si fermali senza errori.

Se tolgo anche la sottoclasse prepareAlgorithm (linea 116) e lancio lo script riesco a vedere la GUI con lo spazio per selezionare il raster, il vettoriale, il prefisso per la banda etc, però ottengo l’errore di cui ti ho parlato ieri.

Credo che la soluzione sia nel saper utilizzare prepareAlgorithm nel modo giusto.

Grazie

Il giorno gio 14 gen 2021 alle ore 10:37 Andrea Giudiceandrea <andreaerdna@libero.it> ha scritto:

Giacomo Fontanelli-2 wrote

quindi tu mi consigli di aggiungere una classe prepareAlgorithm al mio
script?

Purtroppo, non potendo leggere l’intero script, ho difficoltà ad immaginare
per quale di tanti motivi ottieni quell’errore. Comunque non sono esperto di
algoritmi di processing…

Secondo quanto c’è scritto nell’errore, prepareAlgorithm() in
ZonalStatisticsStack non sta restituendo alcun valore e questo genera
l’errore.

Inoltre nel pezzo di script che hai riportato, non so se l’indentazione che
io vedo nel messaggio è fedele all’originale… per esempio l’ultima
istruzione mi sembra indentata male.

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

Ciao Giacomo,

dai un'occhiata al manuale oltre che alla API. C'è un riassunto dei metodi e di quando usarli:

https://docs.qgis.org/testing/en/docs/user_manual/processing/scripts.html

Matteo

Hai ragione, grazie Matteo

Il lun 18 gen 2021, 08:16 matteo <matteo.ghetta@gmail.com> ha scritto:

Ciao Giacomo,

dai un’occhiata al manuale oltre che alla API. C’è un riassunto dei
metodi e di quando usarli:

https://docs.qgis.org/testing/en/docs/user_manual/processing/scripts.html

Matteo


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