运行while循环以获取r中激光雷达数据的点数

thtygnil  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(113)

我在r中使用lidR包分割了树。分割后的树有一个id与它们相关联。我想知道每棵树有多少个点。我使用while循环来获取每棵树的点,但我只从第一个treeId中获取点。

las <-
  segment_trees(las, watershed(
    chm,
    th_tree = 1,
    tol = 0.5,
    ext = 2
  ))

pointlist <- list()
i = 1
while (i < 1000) {
  las <- filter_poi(las, treeID == i)
  x <- header(las)
  y <- x@PHB
  points <- y$`Number of point records`
  pointlist <- append(pointlist, points)
  i <- i + 1
}
pointlist
q3aa0525

q3aa05251#

你在while循环中用las <- filter_poi(las, treeID == i)覆盖了你原来的las。如果你把它赋给其他的东西,它能工作吗?

pointlist <- list()
i = 1
while (i < 1000) {
  # las_i instead of las
  las_i <- filter_poi(las, treeID == i)
  x <- header(las_i)
  y <- x@PHB
  points <- y$`Number of point records`
  pointlist <- append(pointlist, points)
  i <- i + 1
}
pointlist

相关问题