我正在寻找将新值分配给大型栅格的整行的最快方法。
我有一个名为ras
的大栅格
> ras
class : RasterLayer
dimensions : 71476, 49933, 3569011108 (nrow, ncol, ncell)
resolution : 30, 30 (x, y)
extent : 593235, 2091225, -3314375, -1170095 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=aea +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=132 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs
data source : C:/Users/smithj/AppData/Local/Temp/RtmpiynZ5N/raster/r_tmp_2019-05-04_232648_206436_44436.grd
names : layer
values : 0, 255 (min, max)
我有一个长度为n=ncol
的向量,称为newvals
。我通过不适合与newvals
函数一起使用的函数生成了calc
,但是在下面的示例中,出于这个问题的目的,它只是随机生成的向量。
#create example values
newvals<-sample(0:100,49933, replace=TRUE)
我的问题是,如果我想用ras
代替newvals
的第7023行,是否有比下面的方法更快的方法?
#insert newvals into row 7023 of ras
ras[7023,]<-newvals
我也看过setValues
,但它似乎只为整个栅格设置值,而不是栅格的一部分(?)。任何帮助将不胜感激
答案 0 :(得分:0)
您没有提供太多上下文。问题在于您有一个基于文件的大型数据集,因此任何更改都将创建一个新文件(除非您使用update
)。
如果需要多次执行此操作,例如逐行,则可以打开一个新文件进行写入,然后逐行写入(请参阅writeStart
)。如果只有一排需要更改,请尝试使用raster::update
运气。