我正在尝试向现有的 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
谢谢你
您使用的
las
文件是什么版本?我在使用 las 1.2
添加额外尺寸时遇到了很多问题。尝试将标题更改为 las 1.4
。
out_file.header.version = laspy.header.Version(1, 4)