首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在写入laspy文件时定义新维度

在写入laspy文件时定义新维度
EN

Stack Overflow用户
提问于 2019-10-04 18:51:16
回答 1查看 209关注 0票数 0

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

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

代码语言:javascript
复制
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, ...}]的字典列表。现在,我仍然可以根据参数定义新的尺寸,但不能添加数据。下面是代码片段:

代码语言:javascript
复制
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"]也不起作用),我只得到

代码语言:javascript
复制
TypeError: 'File' object does not support item assignment

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

EN

回答 1

Stack Overflow用户

发布于 2020-07-26 20:58:56

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

代码语言:javascript
复制
    ...
    # Assign X,Y,Z,I
    setattr(f, dim["name"], your_data)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58234959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档