R raster :: extract не может создать data.frame - PullRequest
0 голосов
/ 12 апреля 2020

Я ищу, чтобы извлечь значения из растра, используя raster :: extract и объект sf. Однако у меня есть некоторые трудности. Я sh создаю фрейм данных, который содержит номера ячеек (для получения значений XY), извлеченное значение ячейки и поле идентификатора (если я извлекаю из нескольких строк). Я делаю это следующим образом:

  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 (), который работает нормально, но неэффективно. Посмотрев на inte rnet, я нашел еще одну ссылку на эту проблему, которая представляет собой отчет об ошибке 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

Я здесь ошибаюсь или это ошибка в растровом пакете?

Спасибо за вашу помощь в advance.

Я использую: R - 3.6.1 на Windows 7, растр 3.0-7, sf 0.9-0.

1 Ответ

1 голос
/ 13 апреля 2020

Это ошибка. Теперь это исправлено в версии для разработчиков raster (версия 3.1-2)

...