【发布时间】:2017-10-13 19:34:00
【问题描述】:
我正在尝试并行处理栅格列表并使用 parLapply 执行焦点函数。我想我误解了一些重要的事情。代码运行,但看起来它没有在我的驱动器上正确写出焦点函数。看起来它在列表中的第一个栅格上执行了两次 Density_Function ......并行处理世界的新手,想知道是否有关于如何处理这个问题的任何建议?顺便说一句,当我运行我的 Density_Function 并使用 lapply 列出时,它可以工作。我如何并行处理这个?
`# Density function
Density_Function <- function (raster_layer){
weight <- focalWeight(raster_layer,90,type = "circle")
raster_name <- names(raster_layer)
short_name <- substr(raster_name,1,4)
half_output <- "X:/Path"
full_output <- paste0(half_output,short_name,"_90m.tif")
focal(raster_layer, weight, fun=sum, full_output, na.rm=TRUE, pad=TRUE, NAonly=FALSE, overwrite=TRUE)
}
#Bring in raster data and create list
roads_raster <-raster('X:/roads.tif')
pipe_raster <-raster('X:/pipes.tif')
raster_list <- list(roads_raster,pipe_raster) `
#Activate cluster
no_cores <- detectCores() - 1
cl <- makeCluster(no_cores)
#Apply function
parLapply(cl = cl, x = raster_list, fun = Density_Function)
#Close cluster
stopCluster(cl)
【问题讨论】:
-
你能提供一些小数据来重现这个吗?
标签: r parallel-processing gis raster