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

LidR中大型LiDAR数据集重分块后断点续处理的技术咨询

大型LiDAR数据集重分块断点续处理优化方案

问题背景

处理大型LiDAR数据集生成CHM和DSM时,因内存不足采用catalog_retile重分块,但脚本频繁中断导致输出文件不完整。当前手动批量处理效率低,想搞懂opt_restart的输入分块与输出文件匹配逻辑,找更高效的实现方式。

核心优化思路

直接用opt_restart替代手动批量划分,让lidR自动识别已完成的输出文件,跳过已处理分块;规范输出命名规则,明确输入分块和输出文件的对应关系;优化并行配置减少中断概率。

关键逻辑说明

opt_restart的核心是通过输出文件名与输入分块边界的绑定实现断点续跑:

  • 用分块的左下角坐标({XLEFT}、{YBOTTOM})作为输出文件名的一部分,每个输入分块对应唯一的输出文件
  • 开启opt_restart(ctg) <- TRUE后,lidR会自动检查输出目录下的文件,若对应分块的输出文件已存在且完整,就跳过该分块的处理

优化后的完整代码

library(lidR)
library(future)
library(sf)
library(dplyr)

# 并行配置:留足够核心给系统,避免内存过载
plan(multisession, workers = max(1, availableCores() - 8))  

# 目录定义
source_dir <- "F:/LiDAR/point_cloud/2023"
retiled_dir <- "F:/LiDAR_processing/2023/Retiled_test"

# 创建统一输出目录,不用按批次拆分
if (!dir.exists(retiled_dir)) {
  dir.create(retiled_dir, recursive = TRUE)
}

# 加载LAS目录,只保留必要字段减少内存占用
ctg <- readLAScatalog(source_dir, select = "xyzrnc")
summary(ctg)
las_check(ctg)

# 配置处理参数
opt_filter(ctg) <- "-drop_class 7 18"  # 过滤噪声点
opt_progress(ctg) <- TRUE  # 显示处理进度
opt_laz_compression(ctg) <- TRUE  # 启用LAZ压缩
opt_chunk_buffer(ctg) <- 20  # 设置缓冲区避免边缘效应
opt_chunk_size(ctg) <- 250  # 分块大小(单位:米)

# 输出文件命名:用分块边界做文件名,确保输入输出一一对应
opt_output_files(ctg) <- file.path(retiled_dir, "{XLEFT}_{YBOTTOM}")

# 开启断点续处理:自动跳过已生成的完整文件
opt_restart(ctg) <- TRUE

# 生成lasindex,加速后续CHM/DSM处理
ctg@output_options$drivers$LAS$param <- list(index = TRUE)

# 执行重分块
ctg_ret <- catalog_retile(ctg)

后续CHM/DSM生成的断点续处理示例

重分块完成后,同样可以用opt_restart处理CHM/DSM生成,避免重复劳动:

# CHM生成示例
chm_dir <- "F:/LiDAR_processing/2023/CHM"
if (!dir.exists(chm_dir)) {
  dir.create(chm_dir, recursive = TRUE)
}

# 加载重分后的LAS目录
ctg_retiled <- readLAScatalog(retiled_dir)

# 配置CHM参数
opt_output_files(ctg_retiled) <- file.path(chm_dir, "{XLEFT}_{YBOTTOM}_CHM")
opt_restart(ctg_retiled) <- TRUE
opt_chunk_buffer(ctg_retiled) <- 0  # 重分块已带缓冲区,无需额外设置

# 生成CHM(可替换为自己需要的算法,比如pitfree)
chm <- grid_canopy(ctg_retiled, res = 1, pitfree(c(0,2,5,10,15)))

额外优化建议

  • 并行worker数量别拉满:保留4-8个核心给系统,防止内存耗尽导致中断
  • 严格控制select字段:只保留处理必需的字段(如xyzrnc),减少单分块内存占用
  • 定期检查输出文件:若出现损坏的输出文件,手动删除后重新运行脚本,opt_restart会自动重新处理该分块

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:41:08