如何在栅格计算功能中显示进度条?

时间:2016-06-25 17:50:19

标签: r progress-bar r-raster calc

如何在编写用于calc栅格函数的函数中使用this example之类的进度条?

我有一个庞大的数据集要处理,我希望使用进度条来控制进程的持续时间。我试图像这样使用,功能(进程)完美地工作,但是,不显示进度条。

    File mediaStorageDir = context.getFilesDir();

    if (!mediaStorageDir.exists()) {
        if (!mediaStorageDir.mkdirs()) {
            Log.d("Fade", "failed to create directory");
            return null;
        }
    }
    // Create a media file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
            .format(new Date());

    File mediaFile=new File(mediaStorageDir.getPath()+File.separator
                + "IMG_" + timeStamp + ".JPG");

    return mediaFile;
}

2 个答案:

答案 0 :(得分:3)

您可以使用progress包中大多数函数内置的raster参数。仅在以块的形式写入时才显示(因为数据集很大)。

# 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)
     }
  }

请勿在脚本中使用以下行。它只需要这个 玩具示例以触发块状写入,以便显示进度条

rasterOptions(todisk=TRUE)  

但是请使用progress参数(“text”或“window”)

r <- calc(d, fun=f, progress='text')

答案 1 :(得分:0)

一个简单的解决方案
您可以使用光栅包中内置的rasterOptions函数。
作为例子 rasterOptions(progress = 'text',timer=TRUE)将如示例所示向您显示进度,以及光栅包中每个已使用功能的时间。
检查此链接以获取更多高级选项: https://rdrr.io/cran/raster/man/rasterOptions.html