Re: [QGIS-it-user] errore nel collegamento di due algoritmi di processing nello stesso script
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
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
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
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