パターン認識のためにDEMラスターでフィルターをチェックしようとしており、常に最後の行と列が欠落しています(like..20)。PILライブラリ、イメージのロードで試しました。次に、numpyを使用します。出力は同じです。
配列の値をチェックするとき(ArcCatalogでIDを使用してピクセルを選択する)、ループに何か問題があると思ったので、ピクセル値が配列に読み込まれていないことに気付きました。
したがって、単に開いて配列に入れ、配列から画像を保存するだけです:
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配列の制限についてだと思うので、配列は自動的に再形成されるか、そのようにsmthされます...だから例:
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
重要なのは、フィルタリングが必要なため、ブロックごとに読み取りたくない、異なるフィルタ、異なるサイズで何度も読みたくないということです。