You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

terra::extract报错:找不到SpatRaster与SpatialPolygons的继承方法

解决方法

报错原因是terra::extract不支持sp包的SpatialPolygons类型,它需要使用terra自身的SpatVector空间矢量对象。你可以通过以下两种方式解决:

方式一:将现有SpatialPolygons转换为SpatVector

直接使用terra::vect()函数把sp格式的多边形转换为terra支持的格式:

cds1 <- rbind(c(-180,-20), c(-160,5), c(-60, 0), c(-160,-60), c(-180,-20))
cds2 <- rbind(c(80,0), c(100,60), c(120,0), c(120,-55), c(80,0))

# 原sp格式多边形
polys <- SpatialPolygons(list(Polygons(list(Polygon(cds1)), 1)))
# 转换为terra的SpatVector
polys_terra <- terra::vect(polys)

exo <- rast(cds2) # 实际使用时替换为你的.tiff文件路径
val <- terra::extract(exo, polys_terra)

方式二:直接创建terra格式的多边形

跳过sp包的类,直接用terra函数创建SpatVector,更符合纯terra工作流:

cds1 <- rbind(c(-180,-20), c(-160,5), c(-60, 0), c(-160,-60), c(-180,-20))
cds2 <- rbind(c(80,0), c(100,60), c(120,0), c(120,-55), c(80,0))

# 直接创建SpatVector多边形
polys_terra <- terra::vect(cds1, type = "polygons")
# 如果需要指定多边形ID,可以这样写:
# polys_terra <- terra::vect(list(cds1), type = "polygons", ids = 1)

exo <- rast(cds2) # 实际使用时替换为你的.tiff文件路径
val <- terra::extract(exo, polys_terra)

两种方式都能让terra::extract正常工作,提取栅格中对应多边形区域的值。

内容的提问来源于stack exchange,提问作者Colsourie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 18:44:56