我如何读取一个文件夹中的所有文件,执行一个脚本,并从包含原始名称的所有文件创建单独的输出?我有一个文件夹与.las文件,我需要从他们创建相应的.asc文件。我的脚本如下:
library(lidR)
# Path to data
LASfile <- ("path/1234.las")
# Sorting out points in point cloud data, keeping vegetation and ground point classes.
las <- readLAS(LASfile, filter="-keep_class 1 2") # Keep high vegetation and ground point classes
# Normalizing ground points to 0 elevation (idwinterpolation), instead of meters above sea level.
dtm <- grid_terrain(las, algorithm = knnidw(k = 8, p = 2))
las_normalized <- normalize_height(las, dtm)
# Create a filter to remove points above 95th percentile of height
lasfilternoise = function(las, sensitivity)
{
p95 <- grid_metrics(las, ~quantile(Z, probs = 0.95), 10)
las <- merge_spatial(las, p95, "p95")
las <- filter_poi(las, Z < p95*sensitivity)
las$p95 <- NULL
return(las)
}
# Generating a pitfree canopy height modela model without null values (Khosravipour et al., 2014)
las_denoised <- lasfilternoise(las_normalized, sensitivity = 1.2)
chm <- grid_canopy(las_denoised, 0.32, pitfree(c(0,2,5,10,15), c(3,1.5), subcircle = 0.2))
# Applying a median filter, 5x5 moving window to smooth the image and remove noise
ker <- matrix(1,3,3)
chms <- raster::focal(chm, w = ker, fun = median)
plot(chms)
library(raster)
# Writing output file
writeRaster(chms, filename="path/1234.asc", format="ascii", overwrite=TRUE) # Ändra till relevant för varje körning
citation("lidR")
我尝试使用lapply
,但我不知道如何使用它在正确的方式。必须是这样的东西来读取文件夹中的所有文件:list.files("path", pattern = "*.las", full.names = TRUE)
写输出文件的代码如下:lapply(r, writeRaster, filename = paste0(f, ".asc"), format = "ascii")
但我做不好
2条答案
按热度按时间ia2d9nvy1#
LAZ到LAS+索引转换的示例:
你可以将它扩展到光栅化、标准化等,并保存为
.asc
。但我建议你看看https://r-lidar.github.io/lidRbook/engine.html。简而言之:将LAZ/LAS文件处理为LAScatalog,然后平铺结果栅格并保存为.asc
。以及一个如何使用并行处理的示例(在下面的示例3+1进程中-请注意,它可能会占用大量内存,因此要注意工作线程数/处理参数,如
opt_chunk_buffer
。rdlzhqv92#
LasCatalog似乎是一个很好的控制工作流的唤醒!我一定会看看LasCatalog。我会使用瓦片来机器预测这个特定的情况,所以我会解决与lapply来解决这个更紧迫的任务。我几乎得到了它的解决,但仍然不是100%。
我得到“乐趣中的错误(Xi,...):未使用的参数(文件名= c(“C:/Lasdata/125000_6410000.las.asc”,...”
我的代码如下: