首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取LIDAR块的唯一“点源ID”?

如何获取LIDAR块的唯一“点源ID”?
EN

Stack Overflow用户
提问于 2019-04-16 20:44:20
回答 1查看 120关注 0票数 1

我正在尝试使用laspy获取有关出现在LIDAR数据块中的独特飞行线条的信息。

我已经尝试为整个块运行lasInfo模块,但得到的只是最小和最大point_source_ID值,而不是我需要的单个flightline列表。

这就是我到目前为止所尝试的:

代码语言:javascript
复制
import laspy
import glob

las_files_list = glob.glob(r'PATH\*.las')
print(las_files_list)

las_source_id_set = set()

for f in las_files_list:
    las_file = laspy.file.File(f, mode='r')
    las_source_id_list = las_file.pt_src_id


    for i in las_source_id_list:
        las_source_id_set.add(i)

    las_file.close()
    print(las_source_id_set,' ', f)

print(las_source_id_set)

with open('point_source_id.txt', 'w') as f:
    f.write(las_source_id_set)

不幸的是,整个过程相当慢,对于更大的数据集,我得到了堆栈溢出错误,最终永远不会到达“写文件”部分。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-26 18:53:38

这个过程比预期的要慢,因为您是在Python中执行循环。有一个numpy函数可以让这个过程更快:numpy.unique

您的脚本将变成:

代码语言:javascript
复制
import laspy
import glob
import numpy as np

las_files_list = glob.glob(r'PATH\*.las')
print(las_files_list)

las_source_id_set = set()

for f in las_files_list:
    with laspy.file.File(p) as las:
        las_source_id_set.update(np.unique(las.pt_src_id))


    print(las_source_id_set,' ', f)

print(las_source_id_set)

with open('point_source_id.txt', 'w') as f:
    f.write(las_source_id_set)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55708477

复制
相关文章

相似问题

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