1303 個のラスター (各ラスターには 1 か月分のデータがあります) からデータを取得し、ラスター内の各グリッド セルの時系列を作成する必要があります。最後に、すべての時系列を 1 つの大規模な (動物園) ファイルに結合します。
私はそれを実行できるコードを持っています(データセットのごく一部を試してみましたが、うまくいきました)が、ラスターをスタックするだけで永遠にかかるようです(現在2時間以上、まだカウント中です)。より遅い部分で、時系列を実行します。だからここに私のコードがあります.誰かがラスターを積み重ねたり、時系列を作成したりするためのより速い方法を知っているなら(おそらく二重ループなしで?)助けてください...
私は他のプログラミング言語を知りませんが、これはRに尋ねるには多すぎますか?
files <- list.files(pattern=".asc")
pat <- "^.*pet_([0-9]{1,})_([0-9]{1,}).asc$"
ord_files <- as.Date(gsub(pat, sprintf("%s-%s-01", "\\1", "\\2"), files))
files<-files[order(ord_files)]
#using "raster" package to import data
s<- raster(files[1])
pet<-vector()
for (i in 2:length(files))
{
r<- raster(files[i])
s <- stack(s, r)
}
#creating a data vector
beginning = as.Date("1901-01-01")
full <- seq(beginning, by='1 month', length=length(files))
dat<-as.yearmon(full)
#building the time series
for (lat in 1:360)
for (long in 1:720)
{
pet<-as.vector(s[lat,long])
x <- xts(pet, dat)
write.zoo(x,file=paste("P:/WRSRL/Users1/ncgk/IBERIA/cru_pet/zoo/","lat",lat,"long",long,".csv", sep="") , sep=",")
}