我使用以下代码处理LIDAR目录(使用来自伟大的LAScatalog包的lidR处理引擎):
library(lidR)
lasdir <- "D:\\LAS\\"
output <- "D:\\LAS\\PRODUCTS\\"
epsg = "+init=epsg:25829"
res = 1
no_cores <- detectCores()
cat <- lascatalog(lasdir = lasdir,
outputdir = output,
pattern = '*COL.laz$|*COL.LAZ$',
catname = "Catalog",
clipcat = FALSE, clipcatbuf = FALSE, clipbuf = 1000, clipcatshape = clipcatshape,
cat_chunk_buffer = 20,
cores = no_cores, progress = TRUE,
laz_compression = TRUE, epsg = epsg,
retilecatalog = FALSE, tile_chunk_buffer = 10,
tile_chunk_size = 1000,
filterask = FALSE,
filter = "-keep_first -drop_z_below 2")
DEM_output <- paste0(output,"DEM_", str_pad(res, 3, "left", pad = "0"), "/")
opt_output_files(cat) <- paste0(DEM_output,"{ORIGINALFILENAME}") #set filepaths
DEM <- grid_terrain(cat, res = res, algorithm = "knnidw"(k = 5, p = 2)) 库有了一些实现,现在,参数cores似乎不起作用,虽然过程可以工作,但现在它不能并行工作。一条消息声明:Option no longer supported. See ?lidR-parallelism。

现在如何并行处理目录?
发布于 2019-12-02 14:13:43
自lidR 2.1.0 (2019年7月)以来,opt_core()函数已被废弃。见变化量g。
用户现在必须显式地声明用于并行处理tiles的策略。这是无论如何,它应该如何设计从一开始!对于用户来说,还原前一种行为只意味着一种改变。 在< 2.1.0版本中,以下内容是正确的: 库(LidR) ctg <-目录(“文件夹/”) opt_cores(ctg) <- 4L hmean <- grid_metrics(ctg,平均值(Z)) 在版本>= 2.1.0中,必须使用未来的包显式声明这一点: 库(LidR)库(未来)计划(多会话) ctg <- catalog(“文件夹/”) hmean <- grid_metrics(ctg,均(Z))
此外,这在名为lidR-parallelism的手册页面中有完整的记录。
?lidR::`lidR-parallelism`基于块的并行 在处理LAScatalog时,内部引擎将数据集分割成块,并在一个循环中依次读取和处理每个块。但实际上,这个循环可以与未来的包并行化。这些块按顺序处理,但可以通过注册评估策略并行处理。例如,对以下代码进行顺序评估: <- readLAScatalog(“文件夹/”)出<- grid_metrics( ctg,平均值(Z)) 但是这个评估是与两个核心并行进行的: 库(未来)计划(多会话,workers = 2L) ctg <- readLAScatalog(“文件夹/”) out <- grid_metrics(ctg,平均值(Z)) 使用基于块的并行性,任何算法都可以通过处理数据集的几个子集来并行化.
要充分利用这种新语法,您需要了解future是如何工作的。见未来。
https://stackoverflow.com/questions/59138769
复制相似问题