我一直在尝试检查我在DEM栅格上的过滤器以进行模式识别,并且它总是导致缺少最后一行和最后一列(如..20)。我已经尝试了PIL库,图像加载。然后用numpy。输出是相同的。
我以为我的循环出了点问题,当检查数组中的值时(只是用ArcCatalog中的Identification选择像素),我意识到像素值未加载到数组中。
因此,只需打开,放入数组并保存数组中的图像即可:
a=numpy.array(Image.open(inraster)) #raster is .tif Float32, size 561x253
newIm=Image.new(Im.mode, Im.size)
Image.fromarray(a).save(outraster)
导致删除最后的行和列。抱歉,无法发布图片
任何人都可以帮助理解为什么?并建议一些解决方案?
编辑:
因此,在伙计们的帮助下,我成功地将小型栅格加载到numpy数组中,但是当图像较大时,我开始出现错误。我想这是关于numpy数组的限制,因此数组会像这样自动重塑或变形……所以ex:
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
关键是我不想逐块读取数据,因为我需要过滤,需要使用不同的过滤器,不同的大小来多次读取。