[QGIS-it-user] errore nella sintassi di rastercalculator

Salve a tutti

potreste dirmi in cosa sbaglio durante la scrittura di questa sezione del mio script che serve ad automatizzare alcune operazioni svolte con raster calculator?

parameters = {
“EXPRESSION”: “10 * ( log10 ( rasterLayer@1 ) )”,
“LAYERS”: rasterLayer,
“CELLSIZE”: None,
“EXTENT”: None,
“CRS”: None,
“OUTPUT”: outPathFile}

processing.run(‘qgis:rastercalculator’, parameters)

Ottengo questo messaggio di errore

Traceback (most recent call last):
File “/usr/lib/python3.8/code.py”, line 90, in runcode
exec(code, self.locals)
File “”, line 1, in
File “”, line 84, in
File “/usr/share/qgis/python/plugins/processing/tools/general.py”, line 108, in run
return Processing.runAlgorithm(algOrName, parameters, onFinish, feedback, context)
File “/usr/share/qgis/python/plugins/processing/core/Processing.py”, line 174, in runAlgorithm
ret, results = execute(alg, parameters, context, feedback, catch_exceptions=False)
File “/usr/share/qgis/python/plugins/processing/gui/AlgorithmExecutor.py”, line 71, in execute
results, ok = alg.run(parameters, context, feedback, {}, False)
_core.QgsProcessingException: An error occurred while performing the calculation

Grazie

Giacomo Fontanelli-2 wrote

potreste dirmi in cosa sbaglio durante la scrittura di questa sezione del
mio script che serve ad automatizzare alcune operazioni svolte con raster
calculator?

parameters = {
            "EXPRESSION": "10 * ( log10 ( rasterLayer@1 ) )",
            "LAYERS": rasterLayer,
            "CELLSIZE": None,
            "EXTENT": None,
            "CRS": None,
            "OUTPUT": outPathFile}

processing.run('qgis:rastercalculator', parameters)

Ciao Giacomo,
hai provato con un'altra espressione? Cosa contengono esattamente le
variabili rasterLayer e outPathFile?

Io ho testato il tuo pezzo di codice sia nella console di Python sia
eseguendolo in uno script in QGIS 3.16.5 e non ho avuto problemi a creare un
nuovo raster con l'espressione indicata.

A presto.

Andrea

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

Ciao Andrea

il file in ingresso rasterLayer equivale a

rasterLayer = QgsRasterLayer(“home/test/prova.tif”, “raster”)

e il file outPathFile è “home/test/out.tif”

ho provato anche a cambiare formula ma il risultato non cambia

grazie

Il giorno lun 17 mag 2021 alle ore 20:56 Andrea Giudiceandrea <andreaerdna@libero.it> ha scritto:

Giacomo Fontanelli-2 wrote

potreste dirmi in cosa sbaglio durante la scrittura di questa sezione del
mio script che serve ad automatizzare alcune operazioni svolte con raster
calculator?

parameters = {
“EXPRESSION”: “10 * ( log10 ( rasterLayer@1 ) )”,
“LAYERS”: rasterLayer,
“CELLSIZE”: None,
“EXTENT”: None,
“CRS”: None,
“OUTPUT”: outPathFile}

processing.run(‘qgis:rastercalculator’, parameters)

Ciao Giacomo,
hai provato con un’altra espressione? Cosa contengono esattamente le
variabili rasterLayer e outPathFile?

Io ho testato il tuo pezzo di codice sia nella console di Python sia
eseguendolo in uno script in QGIS 3.16.5 e non ho avuto problemi a creare un
nuovo raster con l’espressione indicata.

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

Giacomo Fontanelli-2 wrote

rasterLayer = QgsRasterLayer("home/test/prova.tif", "raster")

> "EXPRESSION": "10 * ( log10 ( rasterLayer@1 ) )",

Ciao Giacomo,
il nome del raster nell'espressione è errato. Nell'espressione non devi
usare il nome della variabile a cui è stato assegnato l'oggetto
QgsRasterLayer.

Il riferimento al raster da usare nell'espressione è il nome base del file
(nel tuo caso "prova", quindi prova@1 per la banda 1) se il layer raster non
è presente nella mappa del progetto, oppure anche il nome assegnato al layer
(nel tuo caso "raster", quindi raster@1 per la banda 1) se il layer è
presente nella mappa del progetto.

Per maggiori informazioni:
https://docs.qgis.org/3.16/en/docs/user_manual/processing_algs/qgis/rasteranalysis.html#raster-calculator

Fammi sapere se è questo il problema.

A presto.

Andrea

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

Ciao Andrea

ho risolto seguendo il tuo consiglio, ovvero la sintassi giusta per il parametro expression è

“EXPRESSION”: “10 * ( log10 ( home/test/prova.tif@1 ) )”,

grazie mille

Giacomo

Il giorno mar 18 mag 2021 alle ore 11:24 Andrea Giudiceandrea <andreaerdna@libero.it> ha scritto:

Giacomo Fontanelli-2 wrote

rasterLayer = QgsRasterLayer(“home/test/prova.tif”, “raster”)

“EXPRESSION”: “10 * ( log10 ( rasterLayer@1 ) )”,

Ciao Giacomo,
il nome del raster nell’espressione è errato. Nell’espressione non devi
usare il nome della variabile a cui è stato assegnato l’oggetto
QgsRasterLayer.

Il riferimento al raster da usare nell’espressione è il nome base del file
(nel tuo caso “prova”, quindi prova@1 per la banda 1) se il layer raster non
è presente nella mappa del progetto, oppure anche il nome assegnato al layer
(nel tuo caso “raster”, quindi raster@1 per la banda 1) se il layer è
presente nella mappa del progetto.

Per maggiori informazioni:
https://docs.qgis.org/3.16/en/docs/user_manual/processing_algs/qgis/rasteranalysis.html#raster-calculator

Fammi sapere se è questo il problema.

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