Разделить облако точек на ячейки определенного размера в Python - PullRequest
0 голосов
/ 24 декабря 2018

Мне нужно разбить облако точек на ячейки определенного размера, чтобы найти 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')

Заранее спасибо

1 Ответ

0 голосов
/ 13 января 2019

Использование 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

...