无法使用laspy添加额外尺寸

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

我正在尝试向现有的 LAS/LAZ 文件添加额外的维度/属性,然后使用

laspy
(版本 2.5.3)创建/写入新的 LAS/LAZ 文件。稍后,我想将 extra_dim 用于进一步的工作或可视化。我使用下面的代码,特别是
add_extra_dim()
将新维度添加到 out_file 中。我看到两个数据点格式相同,但仍然出现与
IncompatibleDataFormat: Cannot set points with a different point format, convert first
相关的错误。

任何人都可以帮忙解决这个问题或创建文件的方法吗?

我在下面使用的代码:

in_las = laspy.read('o6580_145.laz')
rgb_values = np.vstack((in_las.red, in_las.green, in_las.blue)).T
normalized_rgb = rgb_values
G = normalized_rgb[:, 1]
R = normalized_rgb[:, 0]
B = normalized_rgb[:, 2]
veg_index = (2 * G - R - B) / (2 * G + R + B)
veg_index_float32 = veg_index.astype(np.float32)
out_las = laspy.create(file_version=in_las.header.version, point_format=3)
out_las.header = in_las.header
out_las.user_data = veg_index_float32

for dimension in in_las.point_format:
    setattr(out_las, dimension.name, getattr(in_las, dimension.name))
    
out_las.add_extra_dim(laspy.ExtraBytesParams(name="veg_index", type="float32", description="Vegetation Index"))
out_las.write('out_las.las')

错误

IncompatibleDataFormat:
在倒数第二行代码
add_extra_dim()
中弹出。

任何人都可以帮忙提出任何解决方案吗? 或者有人想尝试一下,LAZ 文件可以在这里下载:https://fileport.io/Bx1EREpvntLP

谢谢你

laspy
1个回答
0
投票

您使用的

las
文件是什么版本?我在使用
las 1.2
添加额外尺寸时遇到了很多问题。尝试将标题更改为
las 1.4

out_file.header.version = laspy.header.Version(1, 4)
© www.soinside.com 2019 - 2024. All rights reserved.