【问题标题】:How to get unique "point source ID's" for LIDAR block?如何获取 LIDAR 块的唯一“点源 ID”?
【发布时间】:2019-09-06 13:47:21
【问题描述】:

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

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

这是我迄今为止尝试过的:

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)

不幸的是,整个过程相当缓慢,而且对于较大的数据集,我会遇到堆栈溢出错误,最终永远无法进入“写入文件”部分。

【问题讨论】:

    标签: python-3.x lidar laspy las


    【解决方案1】:

    这个过程比它可能的要慢,因为你在 Python 中做一个循环。 有一个 numpy 函数可用于加快处理速度:numpy.unique

    你的脚本会变成:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2019-11-27
      相关资源
      最近更新 更多