2013-04-26 160 views
0

我想重新分類RasterLayer將所有0都變爲NA。我已經試過:光柵包,替代

  1. 重新分類:

    con1RC<-reclassify(con2, matrix(c(0, 0, NA)) 
    

    錯誤:在評價 錯誤:無法分配尺寸160.1 MB

  2. 替補的載體:

    con1Sub<-subs(con2, df, by=1, which=2) 
    

    ERROR參數'x'爲函數'as.matrix'選擇一個方法'

  3. 替換NA:

    con1Sub<-con2[is.na(con2)]<-0' 
    

    ERROR:無法分配大小160.1 MB

con2 
class  : RasterLayer 
dimensions : 5533, 3792, 20981136 (nrow, ncol, ncell) 
resolution : 30, 30 (x, y) 
extent  : 242505, 356265, 4234635, 4400625 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=utm +zone=18 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs 
data source : G:\Projects\DC\Imagery\Landsat\Classification\Working\confused2_rc_8class.img 
names  : confused2_rc_8class 
values  : 0, 8 (min, max) 

我使用R3.0.0的矢量。 Windows 7企業,32位。我知道記憶可能是一個問題,但沒有看到如何改變在Windows中的任何方向。我也用這個代碼:

memory.size(max=FALSE) 
memory.limit(size=NA) 

我會在64位計算機上試試這些。

任何人都知道這臺機器正在發生什麼,或者可以推薦一種方法來使這些功能之一工作?
我沒有調用方法2的任何矩陣(只是一個data.frame),所以不知道這是什麼意思。

回答

1

這是不正確的:

matrix(c(0, 0, NA)) 

相反,嘗試

con1RC<-reclassify(con2, cbind(0, NA)) 

如果仍然出現內存不足的問題,先設置一些選項:

rasterOptions(chunksize=1e+06, maxmemory=1e+07) 
+0

謝謝roberth。我學到了更多關於內存分配的知識,現在使用每個函數的rasterTmpFile()命令寫入我們的工作驅動器。 – RichT 2013-06-14 17:30:06