R raster :: extract无法创建data.frame

问题描述 投票:0回答:1

我正在使用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个回答
0
投票

这是一个错误。现在,它已在开发版本raster(版本3.1-2)中修复。

© www.soinside.com 2019 - 2024. All rights reserved.