我希望使用R语言从栅格图像中提取数值。我的栅格图像的值范围在0-6之间,我想要提取每个像素对应的值。最终得到一个包含这两个变量的数据表。
谢谢您的帮助,希望我的解释足够清晰。
谢谢您的帮助,希望我的解释足够清晰。
示例数据
library(raster)
r <- raster(ncol=5, nrow=5, vals=1:25)
values(r)
# [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#as.matrix(r)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 1 2 3 4 5
#[2,] 6 7 8 9 10
#[3,] 11 12 13 14 15
#[4,] 16 17 18 19 20
#[5,] 21 22 23 24 25
另外请参见?getValues
您还可以使用索引
r[2,2]
#7
r[7:8]
#[1] 7 8
若要进行更复杂的点、线或多边形提取,请参见?extract
x是您要从中提取值的raster
对象;y可能是SpatialPoints、SpatialPolygons、SpatialLines、Extent或表示单元格编号的向量(请参见?extract
)。您的代码values_raster <- extract(x = values, df=TRUE)
将不起作用,因为您正在使用任何y对象/向量来提供函数。
您可以尝试构建一个包含栅格所有单元格编号的向量。假设您的栅格有200个单元格。如果您执行values_raster <- extract(x = values,y=seq(1,200,1), df=TRUE)
,则会获得每个单元格的值的数据框。
那就简单地这么做吧。
as.data.frame(s, xy=TRUE) # s is your raster file
vignette('Raster')
。 - jbaums