Salve, vi allego l'ultima parte di uno script python che dovrebbe
funzionare come algoritmo di processing.

In pratica dovrebbe compiere un'operazione matematica su ogni banda di un
multiband raster
e immediatamente creare un nuovo multiband raster in output con le bande
calcolate.
Lo script funziona, ma alla fine fornisce un errore, credo sia perchè qgis
sta cercando di caricare sulla canvas
ogni singola banda calcolata (e invece non dovrebbe, ma dovrebbe caricare
solo il multiband raster).

Credo di non aver capito molto bene ancora come si collegano due operazioni
di processing successive.

Riesco ad evitare il messaggio di errore solo se al momento dell'esecuzione
deflaggo l'opzione "Apri il risultato alla fine dell'algoritmo".

Sapete darmi qualche consiglio?

Grazie

bandList = []

# fa un loop tra le bande del raster
for band in range(1, nBand+1):

            # svolge l'operazione matematica per ogni banda
            outRas = processing.run(
                'qgis:rastercalculator',
                {"EXPRESSION": operation = "10 * ( log10 ( " + pathStackIn
+ "@" + str(band) + " ) )",
                "LAYERS": stackIn,
                "CELLSIZE": None,
                "EXTENT": None,
                "CRS": None,
                "OUTPUT": "TEMPORARY_OUTPUT"},
                is_child_algorithm = True,
                context = context,
                feedback = feedback)

            bandList.append(outRas["OUTPUT"])

# crea il nuovo multiband raster con i layer calcolati
outStack = processing.run(
'gdal:merge',
     {"INPUT": bandList,
     "PCT": False,
     "SEPARATE": True,
     "NODATA_INPUT": None,
     "NODATA_OUTPUT": None,
     "OPTIONS":"",
     "EXTRA":"",
     "DATA_TYPE": 5,
     "OUTPUT": parameters[self.OUTPUT]}
     is_child_algorithm = True,
     context = context,
     feedback = feedback)

return {self.OUTPUT: outStack["OUTPUT"]}
_______________________________________________
QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Rispondere a