python - 在 Python 中将点云拆分为特定大小的单元格
问题描述
我需要将点云拆分为特定的单元格大小,以便在该单元格中找到 Z min 和 Z max。我将点云转换为数组并创建网格网格,但我不知道如何将点云/数组拆分为由网格网格定义的扩展。建议?还是有更合适的方法?
import laspy
import numpy as np
inf = laspy.file.File('SAVA_000012.las', mode='r')
points = inf.points
points_xyz = np.array((points['point']['X'],
points['point']['Y'],
points['point']['Z'])).transpose()
x = np.arange(min(inf.X), max(inf.X), 200)
y = np.arange(min(inf.Y), max(inf.Y), 200)
print(x)
xx, yy = np.meshgrid(x, y, sparse=True, indexing= 'xy')
提前致谢
解决方案
使用https://github.com/daavoo/pyntcloud:
from pyntcloud import PyntCloud
cloud = PyntCloud.from_file("SAVA_000012.las")
# Using 0.15 just for example. Omit `z` for 2D grid
voxelgrid_id = cloud.add_structure("voxelgrid", size_x=0.15, size_y=0.15)
voxelgrid = cloud.structures[voxelgrid_id]
z_max = voxelgrid.get_feature_vector(mode="z_max")
您可以在此处了解有关 VoxelGrid 的更多信息:
https://github.com/daavoo/pyntcloud/blob/master/examples/%5Bstructures%5D%20VoxelGrid.ipynb
z_min
目前不支持,但它应该很容易实现(贡献很好^^)以下作为参考:
https://github.com/daavoo/pyntcloud/blob/master/pyntcloud/utils/numba.py#L19
用于:
https://github.com/daavoo/pyntcloud/blob/master/pyntcloud/structures/voxelgrid.py#L161
推荐阅读
- json - 火花流写入流问题
- linux - bash函数内的税收计算给出错误:表达式中的语法错误
- standards - OSI CCR 原子动作标识符的内容应该是什么?
- javascript - 无法解析从 Google App 脚本中的 UrlFetchApp.fetch 返回的对象数组
- javascript - mui-datatables 示例不呈现示例代码
- javascript - 将节点的变量访问到html文件中
- reactjs - 如何在 react native 中安装导航包?
- git - 别名扩展失败;不是 git 命令
- swift - 必须将属性声明为公共,因为它符合公共协议中的要求?
- curl - 每 1 秒运行一次 cURL 命令,直到满足条件