[QGIS-it-user] sviluppo di uno script processing, importa layer in numpy

Salve

sto scrivendo un mio script processing

nella prima parte del processing vero e proprio (scusate il gioco di parole"
faccio una rasterizzazione di un layer vettoriale poligonale

processPar = {
“INPUT”:parameters[self.INPUT],
“FIELD”:“id”,
“BURN”:1,
“UNITS”:0,
“WIDTH”:nCol,
“HEIGHT”:nRow,
“EXTENT”: parameters[self.INPUT],
“NODATA”:“NA”,
“OPTIONS”:“”,
“DATA_TYPE”:0,
“INIT”:0,
“INVERT”:False,
“EXTRA”:“”,
“OUTPUT”:parameters[self.OUTPUT]}

rasterizedResult = processing.run(
“gdal:rasterize”,
processPar,
is_child_algorithm=True,
context=context,
feedback=feedback)

nella seconda parte vorrei poter importare il file raster prodotto prima (in teoria)
da gdal:rasterize in numpy.

Per fare questo credo di dover passare prima da gdal, quindi faccio

rasterGDAL = gdal.Open(rasterizedResult[OUTPUT])

e poi

band = rasterGDAL.GetRasterBand(1)
tempArray = band.ReadAsArray()

Purtroppo però alla linea

rasterGDAL = gdal.Open(rasterizedResult[OUTPUT])

ottengo un errore

File “”, line 218, in processAlgorithm
NameError: name ‘OUTPUT’ is not defined

Un piccolo aiuto?

Grazie

Ciao Giacomo,

     rasterGDAL = gdal\.Open\(rasterizedResult\[OUTPUT\]\)

rasterGDAL = gdal.Open(rasterizedResult['OUTPUT']) ?

sicuro di aver messo gli apici per estrarre il valore del dizionario?

Matteo

Ciao Federico e Matteo ho provato entrambe i vostri consigli.

Mettendo gli apici attorno a OUTPUT lo script va avanti, quindi le linee

raster_out = rasterizedResult[“OUTPUT”]
rasterGDAL = gdal.Open(raster_out)

non danno errori, ma si ferma alla linea

band = rasterGDAL.GetRasterBand(1)

perchè ottengo l’errore

AttributeError: ‘NoneType’ object has no attribute ‘GetRasterBand’.

In ogni modo non sono sicuro che i passi precedenti abbiano sortito un risultato corretto.

Grazie

Il giorno mer 18 nov 2020 alle ore 07:33 matteo <matteo.ghetta@gmail.com> ha scritto:

Ciao Giacomo,

rasterGDAL = gdal.Open(rasterizedResult[OUTPUT])

rasterGDAL = gdal.Open(rasterizedResult[‘OUTPUT’]) ?

sicuro di aver messo gli apici per estrarre il valore del dizionario?

Matteo


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

Ciao Giacomo,

raster_out = rasterizedResult["OUTPUT"]
rasterGDAL = gdal.Open(raster_out)

non danno errori, ma si ferma alla linea

band = rasterGDAL.GetRasterBand(1)

perchè ottengo l'errore

AttributeError: 'NoneType' object has no attribute 'GetRasterBand'.

allora direi che l'algoritmo precedente non ti sta generando niente. Prova a fare un po' di debugging

A presto

Matteo

immaginavo.

Grazie lo stesso

Giacomo

Il giorno mer 18 nov 2020 alle ore 15:14 matteo <matteo.ghetta@gmail.com> ha scritto:

Ciao Giacomo,

raster_out = rasterizedResult[“OUTPUT”]
rasterGDAL = gdal.Open(raster_out)

non danno errori, ma si ferma alla linea

band = rasterGDAL.GetRasterBand(1)

perchè ottengo l’errore

AttributeError: ‘NoneType’ object has no attribute ‘GetRasterBand’.

allora direi che l’algoritmo precedente non ti sta generando niente.
Prova a fare un po’ di debugging

A presto

Matteo

Il 18/11/2020 12:58, Giacomo Fontanelli ha scritto:

Ciao Federico e Matteo ho provato entrambe i vostri consigli.

Mettendo gli apici attorno a OUTPUT lo script va avanti, quindi le linee

raster_out = rasterizedResult["OUTPUT"]
rasterGDAL = gdal.Open(raster_out)

non danno errori, ma si ferma alla linea

forse è una banalità: prova l'apice singolo e non le doppie virgolette, come era indicato nella prima risposta.
mg

--
Marco Guiducci - 055 4383194
SITA - Sistema informativo territoriale e ambientale
Regione Toscana - Via di Novoli 26 - 50127 Firenze