raster:: extract создает пустой список

#r #raster #lidar

#r #растровый #лидар

Вопрос:

Я пытаюсь извлечь значения пикселей в DSM (CHM) в оцифрованных кронах деревьев.

сначала я настраиваю свой рабочий каталог для чтения в шейп-файле и растре.

 TreeCrowns <-shapefile("plot1sag_shape/plot1sag.shp")
CHM <- raster('272280split4.tif')
  

Затем я пытаюсь извлечь значения пикселей

 pixel <- raster::extract(CHM, TreeCrowns, method= 'simple', weights=FALSE, fun=NULL)
  

Но я получаю пустой список со всеми нулевыми значениями для каждого полигона. Я подтвердил, что CHM и полигоны находятся в одном и том же месте. Что я могу сделать, чтобы исправить это?

Ответ №1:

Поскольку ваш шейп-файл состоит из полигона, extract() функции необходимо знать, как суммировать значения пикселей по полигону с помощью fun= аргумента. Поскольку вы предоставляете fun=NULL , функция интерпретирует как возвращающие NULL значения для суммирования значений пикселей.

Попробуйте fun=mean или fun=sum (и они означают разные вещи, поэтому посмотрите, какой из них вам подходит).

Комментарии:

1. У меня такая же проблема, и у меня есть «fun = mean», и он по-прежнему пуст… Я также проверил, совпадают ли проекции, и они совпадают. Любая другая идея о том, что здесь может быть не так?

Ответ №2:

Вероятно, это происходит потому, что полигоны и растр не перекрываются. Можете ли вы show(CHM) и TreeCrowns ? Вы смотрели на

 plot(CHM)
lines(TreeCrowns)
  

Или ваши полигоны очень малы по сравнению с ячейками растра? В этом случае попробуйте аргумент small=TRUE