多数の.asc-filesを読み込み、行を削除し、ラスタースタックに変換する必要があります。stack()
。 ZIPで圧縮されたデータのソースは、ここにあります:ftp://ftp.dwd.de/pub/CDC/grids_germany/monthly/radiation_global/ 私はすでにファイルを解凍しました。しかし、今、私は本当に遅いです。このコードを書いた、私のコンピュータはそれを達成することはできません。大量の.ascファイルを読み込み、行を削除してラスターとして保存します。
files <- list.files("mydirectory", pattern="\\.asc$",
full.names=TRUE, recursive=TRUE)
i <- lapply(files, readLines) #read data
i <- lapply(i, function(x){x[-(1:28)]}) #delete rows
i <- lapply(i, function(x){gsub('-999', ' NA ', x, fixed = TRUE)}) #convert '-999' to NA
i <- lapply(i, function(x){scan(textConnection(x), what = double(), n = 866*654)}) #convert to numeric
i <- lapply(i, function(x){matrix(x, nrow = 866, ncol = 654, byrow = TRUE)}) #convert to matrix
r <- lapply(i, function(x){raster(x)}) #rasterize data
st <- stack(r) #convert to stack-raster
ラスタファイルにこのデータを変換するためのより良い方法があるかどうか、私は疑問に思います。その他の.ascファイルは、ここではヘッダのように6行しか持っていません:ftp://ftp.dwd.de/pub/CDC/grids_germany/monthly/precipitation/01_Jan/。 - 遅さの原因は多分あったとするので
loadRaster <- function(directory, output, clipping){
files <- list.files(path=directory, pattern="\\.asc$",
full.names=TRUE, recursive=TRUE)
stc <- stack(files)
crs(stc) <- gk3
stcC <- crop(stc, extent(clipping))
writeRaster(stcC, filename=output)
}
#You can ignore the code below "stc <-stack(files)"
ボトルネックはどこが遅いですか?すべての 'lapply'呼び出しに' system.time() 'を加えて、問題のあるものを見てください。それは、私たちの助けを差し伸べるのに役立ちます。また、lapplyは 'library(parallel)'と 'parLapply'関数との並列化を高速化することができます。それは助けるかもしれません。 – Bastien