0

在 python 中保存 laspy 文件 (.las) 时,如何将数据添加到自定义维度?

好的,更多细节:我阅读了一个标准的 .las 文件,其属性为 X、Y、Z、I。然后我做了一些计算,并希望将结果保存为具有属性 X、Y、Z、I 和附加新维度“my_dim”的 .las 文件。只要我知道新维度的名称,定义和添加数据就没有问题:

header = laspy.header.Header(point_format=2)
with laspy.file.File(FILEPATH, mode="w", header=header) as f:
    f.define_new_dimension(name="my_dim", data_type=5, description="My new dimension")
    f.my_dim = ...
    ...

但是,我想将保存过程封装在一个自己的函数中,并提供额外的维度作为参数extra_dims(作为字典列表,比如[{"name": "my_dim", data_type: 5, ...}]。现在,我仍然可以根据参数定义新维度,但无法添加数据。这是片段:

def save(extra_dims):
    header = ...
    with laspy...:
        for dim in extra_dims:
            f.define_new_dimension(name = dim["name"], data_type = ...
        # Assign X,Y,Z,I
        ...

对于添加数据f[dim["name"]] = ...不起作用(f.dim["name"]显然也不行),我只得到

TypeError: 'File' object does not support item assignment

有谁知道如何解决这个问题,即将数据添加到名称“隐藏”在参数中的属性?

4

1 回答 1

0

使用 pyhton 的内置 setattr() 和 getattr() 属性:

    ...
    # Assign X,Y,Z,I
    setattr(f, dim["name"], your_data)
于 2020-07-26T12:58:56.233 回答