He estado tratando de verificar mis filtros en el ráster DEM para el reconocimiento de patrones y siempre resulta en la falta de las últimas filas y columnas (como ... 20) . He intentado con la biblioteca PIL, carga de imágenes. Luego con numpy. La salida es la misma.
Pensé, algo estaba mal con mis bucles, al verificar los valores en la matriz (simplemente seleccionando píxeles con identificación en ArcCatalog) me di cuenta de que los valores de píxeles no se cargaban en una matriz.
Entonces, simplemente abriendo, colocando en la matriz y guardando la imagen de la matriz:
a=numpy.array(Image.open(inraster)) #raster is .tif Float32, size 561x253
newIm=Image.new(Im.mode, Im.size)
Image.fromarray(a).save(outraster)
Resulta en cortar las últimas filas y columnas. Lo sentimos, no puedo publicar la imagen
¿Alguien podría ayudar a entender por qué? ¿Y aconsejar alguna solución?
EDITAR:
Entonces, logré cargar pequeños rásteres en una matriz numpy con la ayuda de muchachos, pero cuando tengo una imagen más grande empiezo a obtener errores. Supongo que se trata de los límites de la matriz numpy, por lo que la matriz se reforma automáticamente o algo así ... Entonces, por ejemplo:
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
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 rading por bloques: O