从栅格中提取值

Extract values from raster

我正在尝试从随机点图层的栅格中提取数据。

输入数据是我必须在其中提取值的栅格和多边形的 shapefile。使用此 shapefile,我可以随机抽取多边形内的点。这是通过 SF 包完成的,我得到了一层 sfc_POINTS。 然后,我尝试使用 raster 包用这些点提取我的栅格值。

我收到这个错误: (函数 (类, fdef, mtable) 中的错误: 无法为签名“RasterLayer”、“sfc_POINT”'

的函数“extract”找到继承方法

代码如下:

# Clean environment 
rm(list = ls())

#Import packages
library(sf)
library(raster)


#Import data 
shp = st_read("PATH_TO_MY_SHP")
rst = raster("PATH_TO_MY_RASTER")

#Random sampling
Rdmsamp = st_sample(shp,  1000, "random")
Rdmsamp_values = raster::extract(rst, shp)

如果有人可以帮助我,请。 PS: 是否可以在样本点设置中整合距离条件(例如到多边形边缘的距离或点之间的最小距离?)

谢谢

首先使用 terra(栅格的替代品):

library(terra)
fv <- system.file("ex/lux.shp", package="terra")
v <- vect(fv)
fr <- system.file("ex/elev.tif", package="terra")
r <- rast(fr)

pts <- spatSample(v, 100, "random")
e <- extract(r, pts)

现在在 sf

中抽样
library(sf)
shp <- st_as_sf(v)
rsamp = st_sample(shp, 100, "random")
rsp <- vect(rsamp)
vals <- extract(r, rsp)

或者将该示例与 raster

一起使用
library(raster)
rr <- raster(fr)
sfsamp <- st_as_sf(rsamp)
vv <- extract(rr, sfsamp)

我来这里是为了用我在上一个答案中给出的要素来回答我自己的问题。 上一个答案中使用的代码运行良好。提取值时仍然存在问题,我只获得了 NaN 值。这个问题只是来自用于每一层的 CRS,所以你必须考虑将不同的层重新投影到同一个 CRS。 希望这个澄清对以后的一些人有所帮助。