패턴 인식을 위해 DEM 래스터에서 필터를 확인하려고 시도했으며 항상 마지막 행과 열이 누락되었습니다 (예 : 20) . PIL 라이브러리, 이미지로드로 시도했습니다. 그런 다음 numpy로. 출력은 동일합니다.
배열에서 값을 확인할 때 (Arrcatalog에서 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 배열의 한계에 관한 것이라고 가정하고 배열은 자동으로 모양이 바뀌거나 그런 것입니다 ... 그래서 예 :
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
요점은 필터링이 필요하기 때문에 블록별로 블록을 읽고 싶지 않다는 것입니다. 여러 번 다른 필터로 다른 크기로 여러 번 해결해야합니다.