Каков правильный способ понижения разрешения с помощью laspy?Python

Программы на Python
Anonymous
Каков правильный способ понижения разрешения с помощью laspy?

Сообщение Anonymous »

Я взял этот пример из документации laspy, где новый LasData создается и записывается в файл:

Код: Выделить всё

import laspy
import numpy as np

# 0. Creating some dummy data
my_data_xx, my_data_yy = np.meshgrid(np.linspace(-20, 20, 15), np.linspace(-20, 20, 15))
my_data_zz = my_data_xx ** 2 + 0.25 * my_data_yy ** 2
my_data = np.hstack((my_data_xx.reshape((-1, 1)), my_data_yy.reshape((-1, 1)), my_data_zz.reshape((-1, 1))))

# 1. Create a new header
header = laspy.LasHeader(point_format=3, version="1.2")
header.add_extra_dim(laspy.ExtraBytesParams(name="random", type=np.int32))
header.offsets = np.min(my_data, axis=0)
header.scales = np.array([0.1, 0.1, 0.1])

# 2. Create a Las
las = laspy.LasData(header)

las.x = my_data[:, 0]
las.y = my_data[:, 1]
las.z = my_data[:, 2]
las.random = np.random.randint(-1503, 6546, len(las.points), np.int32)

las.write("new_file.las")
Мой вариант использования немного отличается: my_data извлекается из файла laz (скажем, каждая 10-я точка), который имеет свой собственный LasHeader.< /p>
Я видел возможность создать новый LasData на основе существующего заголовка следующим образом:

Код: Выделить всё

header = copy(las.header)
d_las = laspy.LasData(header)
Однако затем я получаю ошибку несовпадения размеров массива из-за того (я полагаю), что point_count в старом заголовке не соответствует новым данным.Тогда вопрос: если я создаю лаз, взяв 10-ю точку уже существующего лаз, должен ли я вручную пересчитывать смещения и масштабы, как в пример ниже и вручную настроить point_count в заголовке? Или есть какой-то более элегантный способ, который автоматически обновляет их на основе новых данных x/y/z, которые я предоставляю?

Подробнее здесь: https://stackoverflow.com/questions/789 ... with-laspy

Вернуться в «Python»