You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中使用lapply从LiDAR数据批量生成栅格文件

批量处理LAS文件生成ASC格式冠层高度模型

步骤1:封装单文件处理逻辑为函数

将你的单文件处理代码封装成可复用函数,自动根据输入LAS文件名生成对应ASC输出:

library(lidR)
library(raster)

# 定义噪声过滤函数
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)
}

# 定义单文件处理函数
process_las_to_asc <- function(las_file_path, output_dir = NULL) {
  # 读取LAS文件并筛选植被/地面点类
  las <- readLAS(las_file_path, filter = "-keep_class 1 2")
  
  # 高程归一化处理
  dtm <- grid_terrain(las, algorithm = knnidw(k = 8, p = 2))
  las_normalized <- normalize_height(las, dtm)
  
  # 点云去噪
  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))
  
  # 中值滤波平滑CHM
  ker <- matrix(1, 3, 3)
  chms <- raster::focal(chm, w = ker, fun = median)
  
  # 构建输出文件路径
  if (is.null(output_dir)) {
    # 默认输出到原LAS文件同目录
    output_file <- gsub("\\.las$", ".asc", las_file_path, ignore.case = TRUE)
  } else {
    # 指定输出目录时保留原文件名
    file_name <- basename(las_file_path)
    output_file <- file.path(output_dir, gsub("\\.las$", ".asc", file_name, ignore.case = TRUE))
  }
  
  # 写入ASC格式文件
  writeRaster(chms, filename = output_file, format = "ascii", overwrite = TRUE)
  
  # 打印处理进度
  cat(sprintf("处理完成:%s -> %s\n", las_file_path, output_file))
}

步骤2:批量处理文件夹中所有LAS文件

使用list.files获取目标文件夹下的所有LAS文件,再通过lapply批量调用处理函数:

# 设置LAS文件所在文件夹路径
las_dir <- "你的LAS文件存放路径"

# 获取所有LAS文件的完整路径(兼容.LAS和.las后缀)
las_files <- list.files(las_dir, pattern = "\\.las$", full.names = TRUE, ignore.case = TRUE)

# 批量处理所有文件
lapply(las_files, process_las_to_asc)

# 若需指定输出目录,改用以下代码
# output_dir <- "你的ASC文件输出路径"
# lapply(las_files, process_las_to_asc, output_dir = output_dir)

关键细节说明

  • 文件名匹配:ignore.case = TRUE确保同时识别大写和小写的.las后缀
  • 路径灵活配置:可选output_dir参数支持将结果输出到独立文件夹,避免和原LAS文件混杂
  • 批量执行:lapply会返回处理结果列表,若无需保留结果,可使用purrr::walk(需先安装purrr包)提升效率

内容的提问来源于stack exchange,提问作者Tobias Rydlinge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:40:55