我正在尝试在LAS文件(激光雷达格式)中查找点:
现在,我正在以一种非常缓慢的方式进行操作:
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
答案 0 :(得分:0)
我不熟悉laspy或laspy,但是如果inFile.x
和朋友是单独的numpy数组(从vstack
调用来看),则可以简单地分别使用和比较它们,然后合并结果:
xgood = (inFile.x >= x) & (inFile.x < x+1)
ygood = (inFile.y >= y) & (inFile.y < y+1)
zgood = (inFile.z >= z) & (inFile.z < z+1)
good = xgood & ygood & zgood
found = (inFile.x[good], inFile.y[good], inFile.z[good])
结果found
略有不同,因为它是有效点的x,y和z坐标数组的元组。