如何在R中从栅格数据中提取数值

3
我希望使用R语言从栅格图像中提取数值。我的栅格图像的值范围在0-6之间,我想要提取每个像素对应的值。最终得到一个包含这两个变量的数据表。
谢谢您的帮助,希望我的解释足够清晰。

你有尝试吗?例如尝试 vignette('Raster') - jbaums
@sera,我已经找到了这个教程,但是我对于实际提取过程中需要使用什么还是有些困惑。 - JCra
@JCra,x 应该是光栅对象,y 应该是向量(表示单元格编号)在你的情况下。 - seralouk
只是为了确保,x 是整个栅格还是我想要提取的对象,也就是我的值?对于 y,是否可以使用点形状文件,因为我想将提取的值与那些点进行比较? - JCra
显示剩余3条评论
3个回答

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


1

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),则会获得每个单元格的值的数据框。


0

那就简单地这么做吧。

as.data.frame(s, xy=TRUE) # s is your raster file 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接