Я пытаюсь найти точки в файле LAS (формат Lidar):
Сейчас я делаю это очень медленно:
from laspy.file import File
import numpy as np
inFile = File('inputfile.las', mode='r')
coord = np.vstack((inFile.x, inFile.y, inFile.z)).transpose()
def find_pt(coord, x, y, z):
found = []
for i in coord:
if(i[0] >= x and i[0] < x+1):
if(i[1] >= y and i[1] < y+1):
if(i[2] >= z and i[2] < z+1):
found.append(i)
return found
Затем я вызываю это с помощью:
find_pt(coord, 358397, 5280527, 550)
Что конечно занимает некоторое время, особенно когда точек в файле много.
Есть ли способ лучше/быстрее? coords
относится к типу numpy.ndarray
where
. Это может быть проще сделать с отдельными индексами x, y и z и объединить результаты. Или прямое сравнение массивов с вашими входными данными x, y и z и логическими результатами. - person 9769953   schedule 06.03.2019