2014-05-12 35 views
0

我使用python和gdal爲Landsat衛星圖像做一些圖像處理 本質上,我試圖將iamges轉換爲Tasseled Cap,但通常我正在讀取7個數組int 16的7281 x 8051大小更名爲band 1-5和band 7,以及fmask。 fmask是0和1的蒙版樂隊。作爲數組使用float時讀取數組失敗32

brightBand=(.2043*band1 + .4158*band2 + .5524*band3+.5741*band4+.3124*band5+ .2303*band7)*fmask 
greenBand=(-0.1603*band1+ -.2819*band2 + -.4934*band3 + .7940*band4 + -.0002*band5 + -.1446*band7)*fmask 
wetBand=(.0315*band1 + .2021*band2 + .3102*band3 + .1594*band4 + -.6806*band5 + -.6109*band7)*fmask 

我可以導入頻帶爲INT 16,而不是作爲浮子32,但只要我嘗試做上述操作我接收「內存錯誤」消息。我使用Spyder/Python 2.7和正確的Python綁定。我有64 GB的ram,但con似乎只能使用2或8.我也使用32位python和gdal。有任何想法嗎?

+0

爲什麼使用Python和相關實用程序的32位版本?不應該有任何東西阻止你使用64位版本。 –

+1

沒有理由一次完成您的操作,因爲它是'像素'。因此,如果你受限於內存,請逐塊執行並將結果寫入磁盤。 –

回答

3

32位進程如何處理4GB以上的內存?事實上,通常你只能使用2Gb。它可能配置爲unix machines更多,但在窗口上,32位進程是always limited with 2Gb

改用64位python代替。

+0

謝謝大家的確認我的懷疑。任何好的想法爲64位python類似於python xy和spyder? – fargreenhills

+0

確認。 64位技巧! #hooray – fargreenhills