使用分类值分割点云(las 文件)

问题描述 投票:0回答:1

我有一个分类点云(.las 文件)

我想根据分类值将其分成几个较小的点云。

我可以用非迭代的方式做到这一点:

ground=xyz[np.where(xyz[:,6] == 2)]

header = laspy.header.Header()
x=ground[:,0]
y=ground[:,1]
z=ground[:,2]
intensity=ground[:,3]
return_num=ground[:,4].astype(int)
num_returns=ground[:,5].astype(int)
classification=ground[:,6].astype(int)

xmin = np.floor(np.min(x))
ymin = np.floor(np.min(y))
zmin = np.floor(np.min(z))

outfile = laspy.file.File(outFolder+"\classificationNumber2.las", mode="w", header=header)
outfile.header.offset = [xmin,ymin,zmin]
outfile.header.scale = [0.001,0.001,0.001]
outfile.x = x
outfile.y = y
outfile.z = z
outfile.intensity = intensity
outfile.return_num = return_num
outfile.num_returns = num_returns
outfile.classification = classification
outfile.close()

如何修改代码来迭代编写不同分类值的点云?

python point-clouds laspy
1个回答
0
投票

我相信 LAS 规范告诉您点的类别存储在 5 位上。这意味着您最多可以有 32 个课程。

你也许可以做类似的事情:

import laspy

las = laspy.read(path)
for i in range(32):
  new_file = laspy.create(point_format=las.header.point_format, 
                          file_version=las.header.version)
  new_file.points = las.points[las.classification == i]
  new_file.write(f'extracted_class_{i}.las')

此代码是此处提供的文档的稍微修改版本关于过滤的laspy文档

“点”包含与其关联的所有数据。您无需过滤 LAS 文件中的每个字段。

© www.soinside.com 2019 - 2024. All rights reserved.