我想将降水数据与 .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。
任何帮助表示赞赏。
我的猜测是,您在加载raster后加载了另一个包,该包也有一个extract从raster.
仅加载您需要的包,并尝试显式调用该extract方法raster:
raster::extract(precipitation_raster_layer, AID[, 4:3])
Run Code Online (Sandbox Code Playgroud)
请注意,它应该是 AID[, 4:3],而不是 AID[, 3:4],因为正确的顺序是经度、纬度。但这不是您遇到错误的原因。