我們有一個柵格代表與生長季節開始相對應的序號日期。也就是說,柵格中的每個像素值都在1:365之間,代表了序號日期。從光柵堆棧層提取不同光柵像素值的值
我也計算了相應年份所有365天的累積生長度日數。這些數據以365層的柵格堆棧形式加載到R中。
我的目標是在生長季節層的開始隨機抽樣地理位置。然後,我希望從這些相同的座標中提取累積生長度天數的值,但只能從對應於季節像素值開始的增長度天數堆棧層中提取。例如,如果給定像素的季節開始時間是一年中的第100天,我想在該年的第100天從該位置提取增長度數天(nlayers = 100)。
我一直在試圖寫一個函數來完成這個,但我似乎無法讓它正常工作。我想結束一個數據框或矩陣,顯示當天的x位置,y位置,季節開始日和GDD。一列中代替了許多GDD值,我得到了許多列的一個GDD值。
看來問題在於我使用的提取物。我已經嘗試了參數nl,圖層,並用[[]]對x參數編制索引。他們似乎產生了相同的結果。這裏有一個簡化的代碼,只有5天的時間來考慮,我正在試圖構建的功能。
任何幫助/建議表示讚賞!
#============================================================
library(raster)
SOST <- raster()
SOST[] <- 1:5
r1 <- r2 <- r3 <- r4 <- r5 <- raster()
r1[] <- 10
r2[] <- 20
r3[] <- 30
r4[] <- 40
r5[] <- 50
GDD <- stack(r1,r2,r3,r4,r5)
getGDD <- function(sost, gdd, n){set.seed(232)
samp <- sampleRandom(sost, n, xy = TRUE,
na.rm = TRUE)
df <- data.frame('x'=as.numeric(), 'y'=
as.numeric(), 'SOST'=as.numeric(),
'GDD'=as.numeric())
df.temp <- data.frame('x' = samp[1:n,1], 'y' =
samp[1:n,2], 'SOST' = samp[,3],'GDD' =
extract(gdd, samp[1:n,1:2], nl = samp[1:n,3]))
df <- rbind(df, df.temp)
return(df)
}
getGDD(sost = SOST, gdd = GDD, n = 5)