对 RasterLayer 使用 RasterPackage 的“提取”会导致 R 中的错​​误

2 csv r extract raster

我想将降水数据与 .csv df 合并。我想通了,它应该与光栅包中的“提取”命令一起使用。这是我的降水数据:

str(precipitation_raster_layer)
Formal class 'RasterLayer' [package "raster"] with 12 slots
  ..@ file    :Formal class '.RasterFile' [package "raster"] with 13 slots
Run Code Online (Sandbox Code Playgroud)

这是我与气候相关的援助数据:

str(AID)
'data.frame':   1050 obs. of  21 variables:
 $ project_location_id     : Factor w/ 1050 levels "P000501_2427123",..: 189 190 191 192 193 194 188 195 196 187 ...
 $ precision_code          : int  3 3 3 3 3 3 3 3 3 2 ...
 $ latitude                : num  6.45 6.74 6.47 5.66 6.6 ...
 $ longitude               : num  -1.583 -3.044 -2.333 -0.39 0.467 ...
Run Code Online (Sandbox Code Playgroud)

使用这个命令:

test <- extract(precipitation_raster_layer, AID[,3:4])
Run Code Online (Sandbox Code Playgroud)

UseMethod("extract_") 中的错误:没有适用于 'extract_' 的方法应用于类 "c('RasterLayer', 'Raster', 'BasicRaster')"

如果我将 .csv 转换为 SpatialPointsDataFrame 并尝试运行“extract”,我会收到此错误:

test <- extract(precipitation_raster_layer, AID_spatial_df)
Run Code Online (Sandbox Code Playgroud)

UseMethod("extract_") 中的错误:没有适用于 'extract_' 的方法应用于类 "c('RasterLayer', 'Raster', 'BasicRaster')"

我真的不明白为什么它说我的对象不是 RasterLayer。

任何帮助表示赞赏。

Rob*_*ans 5

我的猜测是,您在加载raster后加载了另一个包,该包也有一个extractraster.

仅加载您需要的包,并尝试显式调用该extract方法raster

raster::extract(precipitation_raster_layer, AID[, 4:3])
Run Code Online (Sandbox Code Playgroud)

请注意,它应该是 AID[, 4:3]而不是 AID[, 3:4],因为正确的顺序是经度、纬度。但这不是您遇到错误的原因。