#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