Re: [QGIS-it-user] errore nel collegamento di due algoritmi di processing nello stesso script

2021-12-17 Per discussione Giacomo Fontanelli
Andrea grazie mille
speriamo risolvano questo bug

l'ultima domanda: mi hai segnalato che l'errore è in
# 4C Output stack
stackOut = self.parameterAsOutputLayer(
parameters,
self.OUTPUT,
context)

Come sarebbe la versione corretta della sintassi?

Grazie di nuovo

Giacomo

Il giorno ven 17 dic 2021 alle ore 08:56 Andrea Giudiceandrea <
andreaer...@libero.it> ha scritto:

> Il 16/12/2021 17:45, Andrea Giudiceandrea ha scritto:
>
> Invece, dei "Warning" non so ancora spiegare il motivo...
>
>
> Gli avvisi "Impossibile aprire ..." (che comunque non sono "errori"),
> presenti nel tab OGR del pannello del log dei messaggi, sono generati
> dall'algoritmo "Merge" di GDAL (gdal:merge).
>
> Tale algoritmo genera gli stessi warning anche quando utilizzato
> direttamente in maniera interattiva dal pannello degli strumenti di
> processing.
>
> Il bug era già stato segnalato https://issues.qgis.org/issues/19597
> qualche anno fa ed era stata implementata anche una patch
> https://github.com/qgis/QGIS/pull/7608 che avrebbe dovuto risolverlo...
> ma evidentemente non è stata risolutiva.
>
> A presto.
>
> Andrea
> ___
> QGIS-it-user mailing list
> QGIS-it-user@lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/qgis-it-user
>
___
QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user


Re: [QGIS-it-user] errore nel collegamento di due algoritmi di processing nello stesso script

2021-12-16 Per discussione Giacomo Fontanelli
Ciao Andrea e intanto grazie.

Faccio prima ad allegare tutto lo script.
Probabilmente adesso hai una visione d'insieme più chiara

In pratica lo script dovrebbe prendere un multilayer raster, convertire
tutte le bande in decibel e rifare lo stack

Non capisco perchè QGIS tenti di aggiungere vettoriali, dato che nello
script non sono contemplati layer vettoriali.

Di nuovo grazie

giacomo


Il giorno gio 16 dic 2021 alle ore 16:11 Andrea Giudiceandrea <
andreaer...@libero.it> ha scritto:

> Il 16/12/2021 14:42, Andrea Giudiceandrea ha scritto:
> > Comunque ho corretto gli errori e ho messo il tuo pezzo di script
> > all'interno di un algoritmo generico adattandolo per l'occorrenza e
> > aggiungendo quello che mancava, e non riscontro il problema da te
> > riscontrato e le operazioni vanno a buon fine senza che si tenti di
> > aggiungere layer inutili alla mappa.
>
> Ops.. mi correggo.
> Non riscontro l'errore:
> "I seguenti layer non sono stati generati correttamente
> • /tmp/processing_xWeKZC/c39d842bacba4a1a824e685ea21c8b5c/OUTPUT.tif
> Puoi verificare il "Pannello dei messaggi" nella finestra principale di
> QGIS per trovare maggiori informazioni circa l'esecuzione dell'algoritmo".
>
> Invece effettivamente riscontro gli avvisi "Warning" nel pannello OGR.
> Questi avvisi non sono però legati all'errore relativo al layer non
> generato correttamente.
> ___
> QGIS-it-user mailing list
> QGIS-it-user@lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/qgis-it-user
>
def initAlgorithm(self, config=None):

# 3A Input stack
self.addParameter(QgsProcessingParameterRasterLayer(
self.INPUT,
self.tr('Input linear stack'),
None,
False))

# 3B Output raster
self.addParameter(QgsProcessingParameterRasterDestination(
self.OUTPUT,
self.tr('Output dB stack')))

# 
# 4 - Import layers 
# 

# 4A
def processAlgorithm(
self, 
parameters, 
context, 
feedback):

   # 4B Input string 
pathStackIn = self.parameterAsString(
parameters,
self.INPUT,
context)

   # 4C Output stack 
stackOut = self.parameterAsOutputLayer(
parameters, 
self.OUTPUT, 
context)
 
# -
# 5 - Check ---
# -

# 5A If source was not found, throw an exception
if pathStackIn is None:
raise QgsProcessingException(self.invalidSourceError(parameters, INPUT))
   
# 5B Check for cancelation
if feedback.isCanceled():
return {}

# -
# 6 -- Processing 
# -

#6A deriving input stack
stackIn = QgsRasterLayer(pathStackIn, "stack")

# 6B loop over the bands
nBand = stackIn.bandCount()

bandList = []

for band in range(1, nBand+1):

# 6C db calculation 
operation = "10 * ( log10 ( " + pathStackIn + "@" + str(band) + " ) )"

parametersCalc = {
"EXPRESSION": operation,
"LAYERS": stackIn,
"CELLSIZE": None,
"EXTENT": None,
"CRS": None,
"OUTPUT": "TEMPORARY_OUTPUT"}

# 6D
outRas = processing.run(
'qgis:rastercalculator',
parametersCalc,
is_child_algorithm = True,
context = context,
feedback = feedback)

# 6E 
bandList.append(outRas["OUTPUT"])
 
# 6F Check for cancelation
if feedback.isCanceled():
return {}

# 6G stacking
parametersStack = {
"INPUT": bandList,
"PCT": False,
"SEPARATE": True,
"NODATA_INPUT": None,
"NODATA_OUTPUT": None,
"OPTIONS":"",
  

Re: [QGIS-it-user] errore nel collegamento di due algoritmi di processing nello stesso script

2021-12-16 Per discussione Giacomo Fontanelli
Ciao Andrea

questo è quello che viene mostrato alla fine dell'esecuzione dello script
(che fornisce comunque un risultato perfetto)

-

Versione di QGIS: 3.22.1-Białowieża
Revisione codice QGIS: 663dcf8fb9
Versione di Qt: 5.12.8
Versione Python: 3.8.10
Versione di GDAL: 3.0.4
Versione di GEOS: 3.8.0-CAPI-1.13.1
Versione di PROJ: Rel. 6.3.1, February 10th, 2020
versione di PDAL: 2.0.1 (git-version: Release)
Algoritmo iniziato alle: 2021-12-16T09:58:16
In avvio l'algoritmo 'Linear to dB' …
Parametri in ingresso:
{ 'INPUT' :
'/home/giacomo/Desktop/PP_esperimenti/4_PP_2020_I_r_stacks/I_HH_2020_stack.tif',
'OUTPUT' : 'TEMPORARY_OUTPUT' }

Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/fc597f3178ca47e0b543c5a0936576a0/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/de653b67e79c43bf8589946c5ee972f0/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/8908d2eb383a4dba81bae9d61fba4887/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/f5dbf29e85ed4d61b73c417e84787653/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/59d7c1a8c19e405280b2384191248824/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/7a75cb2ae2ed46128826678140a94543/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/06ed438e78094c7c94a6e289715af4de/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/feebae37ea0d44389da6599c9d317759/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/519d926faa68436ab444e9b0faf302d8/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/471d544d7e4d401480c5baa5a30774ef/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/47657e7e6aee481692f119ba7d3fd995/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/81e912a8859742f998f8f54ea14a0ee1/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/730cd07bea554ab8ad3370f725afc92b/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/acf1afaf4f76438696c86eac2843aa15/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/c7c4e07db59f4d38bc9d2d06a4f64fda/OUTPUT.tif'}
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/2e1d47d229c64db793c9d5e40cedba6b/OUTPUT.tif'}
Comando GDAL:
gdal_merge.py -separate -ot Float32 -of GTiff -o
/tmp/processing_xWeKZC/3983ace422504502b50b4df7d55b2d28/OUTPUT.tif
--optfile
/tmp/processing_xWeKZC/cd92fe92f4ab411eae2322cb9ed5bbc7/mergeInputFiles.txt
Risultato comando GDAL:
0...10...20...30...40...50...60...70...80...90...100 - done.
Processo completato con successo.
Risultati: {'OUTPUT':
'/tmp/processing_xWeKZC/3983ace422504502b50b4df7d55b2d28/OUTPUT.tif'}
Execution completed in 2.78 secondi
Risultati:
{'OUTPUT':
'/tmp/processing_xWeKZC/3983ace422504502b50b4df7d55b2d28/OUTPUT.tif'}

Caricamento layer
I seguenti layer non sono stati generati correttamente
• /tmp/processing_xWeKZC/c39d842bacba4a1a824e685ea21c8b5c/OUTPUT.tif
Puoi verificare il "Pannello dei messaggi" nella finestra principale di
QGIS per trovare maggiori informazioni circa l'esecuzione dell'algoritmo

-

Nel "Pannello dei Messaggi" non viene scritto niente, ma guardando nel
pannello dei Log, più precisamente nel pannello OGR, appare questo messaggio

2021-12-16T09:58:19 WARNINGImpossibile aprire
/tmp/processing_xWeKZC/fc597f3178ca47e0b543c5a0936576a0/OUTPUT.tif ().()

2021-12-16T09:58:19 WARNINGImpossibile aprire
/tmp/processing_xWeKZC/de653b67e79c43bf8589946c5ee972f0/OUTPUT.tif ().()

2021-12-16T09:58:19 WARNINGImpossibile aprire
/tmp/processing_xWeKZC/8908d2eb383a4dba81bae9d61fba4887/OUTPUT.tif ().()

2021-12-16T09:58:19 WARNINGImpossibile aprire
/tmp/processing_xWeKZC/f5dbf29e85ed4d61b73c417e84787653/OUTPUT.tif ().()

2021-12-16T09:58:19 WARNINGImpossibile aprire
/tmp/processing_xWeKZC/59d7c1a8c19e405280b2384191248824/OUTPUT.tif ().()

2021-12-16T09:58:19 WARNINGImpossibile aprire
/tmp/processing_xWeKZC/7a75cb2ae2ed46128826678140a94543/OUTPUT.tif ().()

2021-12-16T09:58:19 WARNINGImpossibile aprire
/tmp/processing_xWeKZC/06ed438e78094c7c94a6e289715af4de/OUTPUT.tif ().()

2021-12-16T09:58:19 WARNINGImpossibile aprire
/tmp/processing_xWeKZC/feebae37ea0d44389da6599c9d317759/OUTPUT.tif ().()

2021-12-16T09:58:19 WARNINGImpossibile aprire
/tmp/processing_xWeKZC/519d926faa68436ab444e9b0faf302d8/OUTPUT.tif ().()

2021-12-16T09:58:19 WARNINGImpossibile aprire
/tmp/processing_xWeKZC/471d544d7e4d401480c5baa5a30774ef/OUTPUT.tif ().()

2021-12-16T09:58:19 WARNINGImpossibile aprire
/tmp/processing_xWeKZC/47657e7e6aee481692f119ba7d3fd995/OUTPUT.tif ().()

2021-12-16T09:58:19 WARNINGImpossibile aprire

[QGIS-it-user] errore nel collegamento di due algoritmi di processing nello stesso script

2021-12-15 Per discussione Giacomo Fontanelli
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