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

如何将lidR新分类地面点合并回LAS文件并保留Class 6点?

机载激光雷达LAS文件地面分类与建筑类保留处理方案

需求说明

处理一份机载激光雷达LAS文件,目标是:

  • 排除Class 6(建筑类)点后对剩余点执行地面分类
  • 用新分类的地面点替换原文件中的旧地面点
  • 最终输出文件包含新分类地面点和原文件的Class 6(建筑类)点

错误尝试

最初尝试直接赋值时出现对象被覆盖的问题:

las_tst <- las_buildings
las_tst <- las_ground

初期未成功的处理代码

# 分别读取建筑类点和排除建筑类的其他所有点
in_las = "C:/temp/in_tst.las" 
las_buildings <- readLAS(in_las, filter = "-keep_class 6")
las_no_buildig <- readLAS(in_las, filter = "-drop_class 6")

# 执行CSF地面分类
mycsf <- csf(sloop_smooth = FALSE, class_threshold = 0.25, cloth_resolution = 1, time_step = 0.65, rigidness = 1) 
las <- classify_ground(las_no_buildig, mycsf)

# 输出LAS文件
out_las = "C:/temp/out_tst.las" 
writeLAS(las_tst , out_las, index = FALSE)

最终解决方案

通过保留原文件中Class 2(地面)和Class 6(建筑)的分类结果,修正新分类后的文件,实现需求:

# 读取全部点和仅建筑类点
in_las = "C:/temp/in_tst.las" 
las_all <- readLAS(in_las)
las_buildings <- readLAS(in_las, filter = "-keep_class 6")

# 执行CSF地面分类
mycsf <- csf(sloop_smooth = TRUE, class_threshold = 0.25, cloth_resolution = 1, time_step = 0.65, rigidness = 1) 
las_classified <- classify_ground(las_all, mycsf)

# 获取原文件中地面点和建筑点的索引
ind_grd_orig = las_all@data$Classification==2
ind_buildings_orig = las_all@data$Classification==6

# 保留原地面点分类
las_classified@data[ind_grd_orig]$Classification = 2

# 修正被错误分类的建筑点,保留原建筑类分类
las_classified@data[ind_buildings_orig]$Classification = 6

# 输出LAS文件
out_las = "C:/temp/out_tst.las" 
writeLAS(las_classified, out_las, index = FALSE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:30:00