【问题标题】:R raster::extract fails to create data.frameR raster::extract 无法创建 data.frame
【发布时间】:2020-07-25 05:00:36
【问题描述】:

我希望使用 raster::extract 和 sf 对象从栅格中提取值。但是我遇到了一些困难。我希望创建一个数据框,其中包含单元格编号(以导出 XY 值)、提取的单元格值和一个 ID 字段(如果我从多行中提取)。我通过以下方式做到这一点:

  dtm_values <- raster::extract(raster, transect_sf, cellnumbers = TRUE, df = TRUE)

但是由于出现以下错误,我无法提取到数据框:

Error in do.call(rbind, sapply(1:length(res), function(x) if (!is.null(res[[x]])) cbind(x,  : 
  second argument must be a list

作为一种解决方法,我将其提取为列表(即 df = FALSE)并使用 as.data.frame() 将其转换为数据帧,这工作正常但效率低下。环顾互联网后,我发现了另一个关于此问题的参考,这是 2018 年的错误报告: https://r-forge.r-project.org/tracker/index.php?func=detail&aid=6570&group_id=294&atid=1189

这似乎是我面临的问题。此链接还包括以下可复制的示例,我可以复制:

r = raster(nrow=45, ncol=90) 
r[] = 1:ncell(r) 

transect_sf = st_sfc(st_linestring(rbind(c(-175, -85), c(175, 85)))) %>%
    st_sf() 
raster::extract(r, transect_sf, along = TRUE, df = TRUE) 
 #> Error in do.call(rbind, sapply(1:length(res), function(x) if (!is.null(res[[x]])) cbind(x, : second argument must be a list

我在这里犯了错误还是光栅包的错误?

提前感谢您的帮助。

我正在使用:Windows 7 上的 R - 3.6.1,光栅 3.0-7,sf 0.9-0。

【问题讨论】:

    标签: r geospatial r-raster sf


    【解决方案1】:

    这是一个错误。现在已经在raster(3.1-2版)的开发版中修复了

    【讨论】:

    • 很高兴知道,谢谢。你能把我链接到它吗,因为我在搜索时没有找到它? r-raster GitHub 账号有 bug 吗?我会尝试对我的数据进行修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多