使用RasterPackage中的"extract"函数处理RasterLayer时出现R错误

3

我希望将降水数据与一个.csv数据框合并。我发现使用raster包中的“extract”命令应该可以实现。 这是我的降水数据:

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

这是我的与气候有关的援助数据:
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 ...

使用以下命令:

test <- extract(precipitation_raster_layer, AID[,3:4])

使用方法"extract_"时出错:对于类别为"c('RasterLayer', 'Raster', 'BasicRaster')"的对象没有可应用的方法

如果我将.csv文件转换为SpatialPointsDataFrame并尝试运行"extract",会出现此错误:

test <- extract(precipitation_raster_layer, AID_spatial_df)

使用方法错误("extract_"): 对于类" c('RasterLayer','Raster','BasicRaster')"的对象没有适用的方法

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

任何帮助将不胜感激。


你的对象不是 RasterLayer 在哪里体现? - user3603486
2个回答

6
我的猜测是,在加载了raster之后,您又加载了另一个包,该包也有一个extract方法,从而隐藏了raster中的方法。
请仅加载您需要的软件包,并尝试显式地从raster调用extract方法。
raster::extract(precipitation_raster_layer, AID[, 4:3])

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

0
你可能已经加载了 tidyverse,请卸载它并重试。

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