使用lidR的segment_trees与ForestTools::mcws时触发函数算法无效错误
问题:lidR结合ForestTools的mcws()分割LiDAR点云触发"Invalid function provided as algorithm"错误
尝试使用ForestTools包的mcws()函数配合lidR的segment_trees()分割LiDAR点云时,触发错误:
Error: Invalid function provided as algorithm.
原代码:
library(lidR) library(ForestTools) library(raster) library(sf) LASfile <- system.file("extdata", "Megaplot.laz", package="lidR") las = readLAS(LASfile) chm <- rasterize_canopy(las, 1, p2r(0.15), pkg = "raster") vwf_fun <- function(x){x * 0.06 + 0.5} WindowFilter <- vwf(CHM = chm, winFun = vwf_fun) las <- segment_trees(las, ForestTools::mcws(WindowFilter, chm, minHeight = 2, format = "raster"))
错误原因
segment_trees()的algorithm参数要求传入可执行的函数对象(该函数需接收LAS对象并返回带分割结果的LAS对象),但你直接调用了ForestTools::mcws(),这会立即执行并返回一个栅格图层,而非符合要求的函数,因此触发参数类型错误。
修复方案
方案1:使用ForestTools官方适配的mcws_segmentation()函数
ForestTools提供了mcws_segmentation(),专门适配lidR的segment_trees()接口,无需手动处理栅格与点云的关联:
library(lidR) library(ForestTools) library(raster) library(sf) LASfile <- system.file("extdata", "Megaplot.laz", package="lidR") las = readLAS(LASfile) chm <- rasterize_canopy(las, 1, p2r(0.15), pkg = "raster") vwf_fun <- function(x){x * 0.06 + 0.5} WindowFilter <- vwf(CHM = chm, winFun = vwf_fun) # 使用适配接口 las <- segment_trees(las, mcws_segmentation(CHM = chm, winFilter = WindowFilter, minHeight = 2))
方案2:手动封装mcws逻辑为函数
如果需要自定义流程,可以将mcws()的调用逻辑封装成接收LAS对象的函数,传递给segment_trees():
library(lidR) library(ForestTools) library(raster) library(sf) LASfile <- system.file("extdata", "Megaplot.laz", package="lidR") las = readLAS(LASfile) # 封装分割逻辑 mcws_segment_func <- function(las_obj) { # 生成CHM chm <- rasterize_canopy(las_obj, 1, p2r(0.15), pkg = "raster") # 生成窗口过滤器 vwf_fun <- function(x){x * 0.06 + 0.5} WindowFilter <- vwf(CHM = chm, winFun = vwf_fun) # 执行mcws分割 seg_raster <- ForestTools::mcws(WindowFilter, chm, minHeight = 2, format = "raster") # 将分割结果关联到点云 las_obj <- merge_spatial(las_obj, seg_raster, attribute = "treeID") return(las_obj) } # 调用segment_trees las <- segment_trees(las, mcws_segment_func)
内容的提问来源于stack exchange,提问作者Purple_Ad
相关产品推荐
相关产品推荐

