如果您对数据感兴趣而不是光栅对象(或VRT/TIFF),那么这可能是一种方法:
如果您从文件“加载”光栅,并不一定意味着它将作为文档加载到内存中。
raster
解释:
在许多情况下,例如,当从文件创建RasterLayer时,它(最初)在(RAM)内存中不包含任何单元(像素)值,它只有描述RasterLayer的参数。可以使用getValues、extract和相关函数访问单元格值。可以使用setvalues和replacement指定新值。
因此,您可以先“索引”光栅,然后使用
getValuesBlock
阅读你感兴趣的领域的价值观。
library(raster)
f <- system.file('external/test.grd',package = 'raster')
# index
r <- raster(f)
# check if in memory
inMemory(r)
#[1] FALSE # output
# this would be an extent from your overlapping shapefile
e <- extent(r,58,68,40,50)
# get cells from extent; either use cells as index directly or convert to rowcol
rowcol <- rowColFromCell(r,cellsFromExtent(r,e))
v <- getValuesBlock(r,row=rowcol[1,1],nrows=(rowcol[nrow(rowcol),1] - rowcol[1,1]),
col=rowcol[1,2],ncols=(rowcol[nrow(rowcol),2] - rowcol[1,2]))
v
# [1] 295.392 225.710 258.595 310.336 324.666 322.702 307.217 283.611 263.987 156.609 322.978 297.565 301.797 315.971
# [15] 323.605 326.920 317.894 297.138 270.027 225.769 337.503 323.388 314.900 308.877 314.556 343.555 344.035 315.400
# [29] 291.188 270.876 337.866 324.632 307.220 278.294 264.379 348.519 356.456 322.450 301.790 285.815 331.383 318.950
# [43] 299.246 262.026 230.869 294.012 320.274 312.777 300.513 285.317 321.075 311.447 296.952 278.519 270.279 283.797
# [57] 296.415 298.861 293.150 277.573 306.692 300.772 289.376 273.141 258.457 258.638 272.966 283.977 284.621 271.690
# [71] 286.749 286.617 275.618 247.307 198.884 193.865 240.465 268.687 277.303 271.431 260.336 271.458 263.977 231.071
# [85] 161.407 154.181 222.417 258.672 271.711 272.642 235.458 258.810 257.763 239.553 209.409 205.905 234.162 255.668
# [99] 266.260 270.532
编辑:
# check if raster was loaded after getValuesBlock
inMemory(r)
#[1] FALSE