He estado intentando verificar mis filtros en raster DEM para el reconocimiento de patrones y siempre resulta en la falta de las últimas filas y columnas (alrededor de 20). He probado con la biblioteca PIL, carga de imagen. Luego con numpy. La salida es la misma.
Pensé que algo estaba mal con mis bucles, al verificar los valores en un array (simplemente seleccionando píxeles con Identificación en ArcCatalog) me di cuenta de que los valores de píxeles no se cargaron en un array.
Entonces, simplemente abriendo, poniéndolo en un array y guardando la imagen desde el array:
a=numpy.array(Image.open(inraster)) #el raster es .tif Float32, tamaño 561x253
newIm=Image.new(Im.mode, Im.size)
Image.fromarray(a).save(outraster)
Produce como resultado cortar las últimas filas y columnas. Lo siento, no puedo publicar la imagen
¿Alguien podría ayudar a entender por qué? ¿Y aconsejar alguna solución?
EDITAR:
Así que logré cargar pequeños rasters en un array numpy con la ayuda de algunos amigos, pero cuando tengo una imagen más grande comienzo a recibir errores. Supongo que se trata de los límites del array numpy, y el array se redimensiona automáticamente o algo así... Así que por ejemplo:
Traceback (most recent call last):
File "", line 1, in
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: el tamaño total del nuevo array debe permanecer inalterado
El punto es que no quiero leer bloque por bloque ya que necesito filtrar, varias veces con diferentes filtros, diferentes tamaños... ¿Hay alguna solución o debo aprender a leer por bloques :O