Rstudio运行Kriging插值出现st_crs方法不适用报错求助
Kriging插值报错修复方案
报错原因
你触发报错的核心原因是传入krige()函数的两类空间对象格式不兼容:
- 点位数据
silver_utm2是sf类空间对象(由sf包定义) - 插值网格
grilla2是SpatialPixels类空间对象(由sp包定义)
新版gstat的krige方法对sf类输入做适配时,无法对sp类的newdata执行sf专属的st_crs赋值操作,因此触发错误。
修复方案
任选以下任意一种方案修改代码即可:
方案1:统一使用sf类空间对象
将插值网格转换为sf格式,替换原代码中生成插值网格到执行克里金的部分:
# 空栅格生成代码保留 z <- raster(as(silver_utm2, "Spatial"), ncols = 200, nrows = 80) # 将栅格转为sf格式网格点,无需转换为sp类 grilla2 <- st_as_stars(z) |> st_as_sf() # 执行插值,两个输入均为sf类,格式兼容 ok <- krige(silver~1, locations=silver_utm2, newdata=grilla2, model=va)
注:需要确保已安装stars包,未安装可先执行install.packages("stars")
方案2:统一使用sp类空间对象
将采样点位数据转换为sp格式,和插值网格的格式匹配:
# 将sf类的采样点位转为sp类 silver_utm2_sp <- as(silver_utm2, "Spatial") # 执行插值,两个输入均为sp类,格式兼容 ok <- krige(silver~1, locations=silver_utm2_sp, newdata=grilla2, model=va)
内容的提问来源于stack exchange,提问作者Edmundo
相关产品推荐
相关产品推荐

