R 如何在光栅计算功能中显示进度条?
如何像在calc raster函数中使用的函数中一样使用进度条 我有一个巨大的数据集要处理,我希望使用进度条来控制处理的持续时间。我试着这样使用,过程的功能运行得很好,但是,没有显示进度条R 如何在光栅计算功能中显示进度条?,r,progress-bar,r-raster,calc,R,Progress Bar,R Raster,Calc,如何像在calc raster函数中使用的函数中一样使用进度条 我有一个巨大的数据集要处理,我希望使用进度条来控制处理的持续时间。我试着这样使用,过程的功能运行得很好,但是,没有显示进度条 # PROGRESS BAR IN CALC RASTER EXAMPLE # create data r <- raster(nrow=10, ncol=10) dataset <- list() for (i in 1:20) { dataset[i] <- setValu
# PROGRESS BAR IN CALC RASTER EXAMPLE
# create data
r <- raster(nrow=10, ncol=10)
dataset <- list()
for (i in 1:20) {
dataset[i] <- setValues(r, rnorm(ncell(r), i, 3) )
}
dataset <- stack(dataset)
## function to apply
pixel <-getValuesBlock(s1, row=1, nrows=1, col=1, ncols=1, lyrs=1:nlayers(s1))
CropAnalysis <- function (pixel, ...){
gc()
pb <- txtProgressBar(...)
# test : if is No data the return is
if (identical(x = is.na(pixel), y = rep(TRUE,length(pixel)))) {NA}else{
averageOfhigher <- mean(pixel[pixel > 10], na.rm=T)
averageOflower <- mean(pixel[pixel < 10], na.rm=T)
return(c(averageOfhigher, averageOflower))
}
setTxtProgressBar(pb)}
# applying calc finction
data_process<-calc(x=dataset, fun=CropAnalysis, forcefun=TRUE, forceapply=TRUE)
可以使用光栅包中大多数函数内置的进度参数。因为数据集很大,所以仅在以块形式写入时显示
# example data
library(raster)
r <- raster(nrow=10, ncol=10)
d <- stack(lapply(1:20, function(i) setValues(r, rnorm(ncell(r), i, 3) )) )
f <- function(pixel, ...){
if (all(is.na(pixel))) {
c(NA, NA) # note the two NAs to match the other case
} else {
averageOfhigher <- mean(pixel[pixel > 10], na.rm=TRUE)
averageOflower <- mean(pixel[pixel < 10], na.rm=TRUE)
c(averageOfhigher, averageOflower)
}
}
但是一定要使用progress参数text或window
r <- calc(d, fun=f, progress='text')
可以使用光栅包中大多数函数内置的进度参数。因为数据集很大,所以仅在以块形式写入时显示
# example data
library(raster)
r <- raster(nrow=10, ncol=10)
d <- stack(lapply(1:20, function(i) setValues(r, rnorm(ncell(r), i, 3) )) )
f <- function(pixel, ...){
if (all(is.na(pixel))) {
c(NA, NA) # note the two NAs to match the other case
} else {
averageOfhigher <- mean(pixel[pixel > 10], na.rm=TRUE)
averageOflower <- mean(pixel[pixel < 10], na.rm=TRUE)
c(averageOfhigher, averageOflower)
}
}
但是一定要使用progress参数text或window
r <- calc(d, fun=f, progress='text')
一个简单的解决方案
您可以使用光栅软件包中内置的rasterOptions功能。
例如
RasterOptionProgress='text',timer=TRUE将显示进度(如示例所示),以及光栅包中每个已用函数的时间。
查看此链接以了解更多高级选项:
一个简单的解决方案
您可以使用光栅软件包中内置的rasterOptions功能。
例如
RasterOptionProgress='text',timer=TRUE将显示进度(如示例所示),以及光栅包中每个已用函数的时间。
查看此链接以了解更多高级选项:
HI@RobertH,我应用你的建议,没有进度条,只有进度的开始和结束。如何解决这个问题?这表明数据不多。您可以在rasterOptions中设置较小的chunksize以获得更多的步骤,但这可能会降低速度。当我使用progress=text时,控制台始终只显示| | | 0%,但是,当我应用progress=window时,将tcltk包中的windown显示为进度。嗨@RobertH,我应用了您的建议,并且没有进度条,只有进步的开始和结束。如何解决这个问题?这表明数据不多。您可以在rasterOptions中设置较小的chunksize以获得更多的步骤,但这可能会降低速度。当我使用progress=text时,控制台始终仅显示| | 0%,但当我应用progress=window时,会将tcltk包中的windown显示为进度。