Ho provato a controllare i miei filtri su DEM raster per il riconoscimento di schemi e mi risulta sempre che mancino le ultime righe e colonne (come..20) . Ho provato con la libreria PIL, caricamento dell'immagine. Quindi con intorpidimento. L'output è lo stesso.
Ho pensato, qualcosa non va nei miei loop, quando ho verificato i valori nell'array (solo selezionando i pixel con Identification in ArcCatalog) mi sono reso conto che i valori dei pixel non erano caricati in un array.
Quindi, basta semplicemente aprire, mettere in array e salvare l'immagine dall'array:
a=numpy.array(Image.open(inraster)) #raster is .tif Float32, size 561x253
newIm=Image.new(Im.mode, Im.size)
Image.fromarray(a).save(outraster)
Risultati nel tagliare via le ultime righe e colonne. Siamo spiacenti, non posso pubblicare l'immagine
Qualcuno potrebbe aiutare a capire perché? E consigliare qualche soluzione?
MODIFICARE:
Quindi, sono riuscito a caricare piccoli raster nell'array intorpidito con l'aiuto di ragazzi, ma quando ho un'immagine più grande inizio a ricevere errori. Suppongo si tratti dei limiti dell'array intorpidito, e quindi l'array viene automaticamente rimodellato o smth in quel modo ... Quindi es:
Traceback (most recent call last):
File "<pyshell#36>", line 1, in <module>
ima=numpy.array(inDs.GetRasterBand(1).ReadAsArray())
File "C:\Python25\lib\site-packages\osgeo\gdal.py", line 835, in ReadAsArray
buf_xsize, buf_ysize, buf_obj )
File "C:\Python25\lib\site-packages\osgeo\gdal_array.py", line 140, in BandReadAsArray
ar = numpy.reshape(ar, [buf_ysize,buf_xsize])
File "C:\Python25\lib\site-packages\numpy\core\fromnumeric.py", line 108, in reshape
return reshape(newshape, order=order)
ValueError: total size of new array must be unchanged
Il punto è che non voglio leggere blocco per blocco poiché ho bisogno di filtraggio, più volte con filtri diversi, dimensioni diverse. C'è qualche soluzione o devo imparare a radicare per blocchi: O